[Hetzner.abcd.cloud] Обновление модели списаний для реселлеров

Вместе с последними багфиксами и фичами (мультиязычность, возможность делать рассылки из админки, возможность выставить свою, кастомную, валюту), в панели поменялась модель списания партнёрских отчислений.

Вкратце:
  • Теперь отчисления за использование копии панели привязаны только к реальным ценам Hetzner в евро и то, какой курс вы выставляете в своей копии, теперь не влияет на их размер.
  • Размер отчислений зафиксирован на уровне 10р. за 1 реальный евро (аналогичные отчисления были бы у вас ранее, если в вашей копии панели стоял бы курс в 100р./€)
  • Также, теперь плата за сервер с панелью добавляет баллы на ваш бонусный счёт, и вы платите отчислений меньше, на сумму аренды сервера (на малых оборотах, не платите отчислений вообще).

В общем, стало немного выгоднее.
hosting.kitchen/tag/hetzner.abcd.cloud/

Hetzner Cloud настройка API (как сделать свой домен и начать продавать)

Для начала работы с уже установленной панелью, вам понадобится:
  • Настроить домен и почту
  • Добавить токены Hetzner
  • Добавить пользователей
Опциональные шаги:
  • Настроить внешний вид и домен панели
  • Настроить параметры панели

Идем сюда
hetzner.highload.cloud/billmgr
Заказываем тариф за 300р
Потом заказываем панель

ЖДЕМ минут 10 пока панель установится сама, это вам не быстрый Дебиан от хетзнера который за 5 сек делается.

Потом идем сюда
accounts.hetzner.com/signUp
Регистриуемся.
По умолчанию дается 10 штук облака, как заполнится — просите через поддержку расширить и тд
Так же можно регистрироваться много раз. Лучше делать это раза 3 в неделю, уж точно не в один день кучу аккаунтов. Иначе подумают спам и могут отклонить.
Чтобы убрать НДС — попросите друга с украины зарегаться. На форумах полно украинйцев, вместе с ними можете свои хостинги открывать. Как раз партнера найдете.

Потом на почту после заказа у нас реселл панели, приходят доступы.
Переходим по ссылке и вводим логин/пароль из письма.

Настраиваем почту.
Например тут www.mailgun.com
Даже и 1 бакс не потратится.

Настраиваем логотип, бренд.

И в настройках — добавляем аккаунты Hetzner которые вы зарегали.

Все клиенты будут распределяться по аккаунтам.
А вам нужно будет следить и увеличивать кол-во. И лимиты. Ну и жалобы обрабатывать, не наглеть, а то забанят.

Чтобы создать токен, заходим в пустой проект на hetzner.cloud. После этого, выбираем «Access > API tokens»


После чего, жмём «Generate API token», вводим любое название и получаем наш первый токен

и копируем сгенерированный токен (его невозможно будет посмотреть снова, после нажатия «ОК»)

Добавлять в панель несколько токенов от одного и того же проекта не имеет смысла. Это негативно скажется на качестве распределения клиентов по аккаунтам.

Как регистрировать аккаунты в панели?

Интеграция Hetzner API реселлера с BillManager 5

1. Скачиваем файлы бота и распаковываем их
Бот может быть запущен под Linux/Windows (возможно Mac, я не проверял). Единственное требование для его запуска — наличие JRE (Java Runtime Environment) в системе.

Скачиваем файл: hetzner.abcd.cloud/files/billmgr5-integration.zip

Распаковываем его и видим что-то вроде:


  • systemd — шаблоны файлов, чтобы запустить бота как фоновый сервис, через systemd
  • billbot.jar — сам бот
  • config.yml — настройки, которые необходимо поменять под себя, перед запуском бота
  • start.bat/start.sh — файлы для простого запуска бота под Windows/Linux

Настраиваем BillManager
В минимальном варианте, нам надо только добавить хотя бы один тариф и обработчик/тип продукта для него:

2.1 Добавляем тип продукта:
Открываем в BillManager 5 меню «Продукты > Типы продуктов» и жмём «Создать».

В открывшемся окне заполняем отмеченные поля и жмём «ОК»:


В поле «1» может быть любое короткое значение. Это значение не отображается клиенту и является системным наименованием товара. Запомните его, т.к. оно понадобится при настройке бота.

2.2 Добавляем обработчик услуг
Открываем меню «Интеграция > Обработчики услуг» и жмём «Создать».

На шаге «Тип продукта» выбираем созданный в 2.1 тип.

«Модуль обработки» — «Ручная обработка»:

«Настройка интеграции» — «Не создавать задачу на продление»:


В параметрах обработчика указываем люббой ДЦ, любое имя обработчика и в поле «Ответственный» — отдел, в котором будет аккаунт (сторудник), под которым бот будет авторизовываться в биллинге.

2.3 Добавляем тарифный план
«Продукты > Тарифные планы», кнопка «Создать».

«Тип продукта» — добавленный в 2.1 тип:

Настраиваем параметры тарифа:


  • Обработчик услуг — добавленный в 2.2 обработчик.
  • Внутреннее наименование — любое.
  • В поле «Единоразово» — на сколько покупка данного тарифа будет пополнять баланс панели

Жмём «ОК».

Теперь можно создать ещё несколько тарифных планов под разные суммы пополнения:


3. Получаем токен авторизации в панели
Чтобы бот мог управлять пользователями панели, ему нужен токен авторизации администратора, с максимальным сроком действия (мы же не хотим, чтобы бот отвалился через месяц).

Для этого, заходим в свой инстанс панели:

Жмём на кнопку информации:

Открываем страницу с API:

На странице API жмём «Auth > Login > Try it out»:

В «Request body» подставляем логин/пароль админа панели и максимальное время действия токена — 315360000.

Жмём «Execute».


Из поля «Server response» сохраняем себе значение хедера «authorization». Это токен авторизации, который будет использован при настройке бота.


4. Настраиваем бота под себя
Открываем config.yml и видим что-то вроде:


Несмотря на обилие настроек, тут всё просто.

  • billing.url — адрес вашего биллинга, с постфиксом /billmgr
  • billing.login — логин аккаунта сотрудника, под которым будет авторизовываться в биллинге запущеный бот
  • billing.password — пароль аккаунта сотрудника
  • panel.url — адрес вашей панели Hetzner-реселлера
  • panel.token — токен авторизации, полученный в пункте 3
  • mail — настройки почты, чтобы бот мог оповещать вас об успешных/проваленных задачах
  • mail.receivers — на какие email-адреса слать отчёты об обработке задач
  • replenisment — обработка задач о пополнении баланса (заказа тарифов из пункта 2.3)
  • replenishment.productCodes — здесь код продукта, выбранный в пункте 2.1 («Внутреннее имя»)
  • registration — автоматическая регистрация в панели всех, кто зарегистрировался в биллинге

5. Тестируем результат
После выставления настроек, запускаем бота с помощью start.bat/start.sh:

Если настройки выставлены верно, видим что-то вроде:


Бот начал следить за биллингом. Теперь, необходимо приобрести добавленный ранее тариф в биллинге.

Заходим в биллинг под тестовым клиентом:


Выбираем созданную в пункте 2 услугу и ждём «Заказать»:



Приобретаем услугу:





Бот обрабатывает задачу, присылая вам письмо о результате обработки:





Если данный тест прошёл успешно, можете также проверить авторегистрацию, добавив пользователя в биллинг и убедившись что бот зарегистрировал его в панели (если в конфиге бота авторегистрация включена).

Hetzner.abcd.cloud | Автодеплой панелей реселлеров работает



Автодеплой панелей реселлеров


Проекты и аккаунты Hetzner в панели заменены на токены
Звучит странно, потому что токены у нас уже были. Но тут изменился сам механизм раздачи. Теперь под одним токеном Hetzner может сидеть потенциально бесконечное количество клиентов. То есть, если в панели всего один токен Hetzner с лимитом в 10 серваков, то на нём совершенно спокойно могут сидеть 10 клиентов, у каждого из которых по одному серваку. В самом Hetzner это будет выглядеть, будто в одном проекте 10 серваков, а разруливается вопрос «где чей сервак» с помощью новой фичи Hetzner — labels.
  • То есть, если раньше было: максимальное количество активных клиентов = количество проектов Hetzner, то теперь максимум активных клиентов упирается лишь в лимиты аккаунта Hetzner.
  • Панель сама рассаживает клиентов по максимально свободным токенам в всех аккаунтах.

Каждый новый реселлер усиливает сеть установщиков
Установщик — модуль, который:
  • Разворачивавет на серваках кастомные ОС, типа Windows 2012, VestaCP, и.т.д.
  • Обновляет панели реселлеров
  • Обновляет другие установщики (апдейты распространяются волной, кто уже обновился сам — обновляет остальных)
  • Обновляет панели реселлеров (как только новая версия панели появвляется в сети, установщики сами раскатывают апдейты на всех замеченных реселлерских панелях)
  • Собирает и заливает бэкапы панелей реселлеров
И вот, при разворачивании панели реселлера на новом серваке, на нём, также, разворачивается установщик. То есть, сервак с панелью реселлера тоже ставит кастомные ОС по запросу. В итоге, если у нас десяток-другой реселлеров, то у нас на столько же установщиков больше и скорость установки кастомных ОС и разворачивания апдейтов не снижается.



Чтобы заказать, нужно заказать любой тариф
hetzner.highload.cloud/billmgr?func=register&lang=ru
После на почту придут данные от облачной панели
hetzner.abcd.cloud
hetzner.abcd.cloud/landing

Hetzner.abcd.cloud | Добавлена авто-установка MineOS Minecraft



Добавились несколько типов автоустановок.
Например VPN и MineOS



Панели реселлеров и установщики уже научились автоматически коннектиться к кластеру и репортить, как у них дела.



Также, общие для всех юзеров штуки типа видов серваков, ОС и прочего теперь кэшируются в общем хранилище, поэтому даже вообще без токенов всё это будет отображаться (только купить без токена ничего нельзя, потому что некуда).

Несколько масштабных пунктов осталось до релиза:
Поддержка лейблов Хетцнера
С ними нам вообще не нужно будет заводить тучу проектов в hetzner.cloud, достаточно будет по одному на каждый аккаунт. И на этот один проект можно будет вписать неограниченное количество юзеров, пока их услуги в лимиты влезают. «Аккаунты» и «Проекты» Hetzner уйдут из панели, вместо них будут только «Токены».
Кроме того, инфа о кастомных ОС и том что сервак находится в режиме установки теперь тоже будет писаться в лейблы и это позволит сделать очень простой переезд любого клиента, который вырос в наших аккаунтах, в свою копию панели, если он того захочет. И реселлеры смогут перекидывать свои токены из одной панели в другую с сохранением инфы о кастомных ОС на серваках.

Апдейты
Чтобы панели реселлеров и инсталлеры автоматически обновлялись, как только в сети появился кто-то более новой версии. Чтобы можно было закинуть новый дистрибутив на одну ноду, а с неё бы уже автоматически обновились все остальные.

Бэкапы
Раз в день инсталлеры будут стягивать бэкапы данных реселлеров и складывать их на какой-нибудь FTP. Чтобы если или мы или реселлер что-то поломает, можно бы было откатываться.

Чтобы заказать, нужно заказать любой тариф
hetzner.highload.cloud/billmgr?func=register&lang=ru
После на почту придут данные от облачной панели
hetzner.abcd.cloud
А к 2021 у нас будет собственный биллинг для любого желающего продавать.

Hetzner.abcd.cloud | Автодеплой Windows 2012


04/2019 update

  • Переработана страница заказа сервака, часть кнопок, подсказки, т.д.
  • Автодеплой Windows 2012
Теперь её можно выбрать при создании сервера.


После заказа, сервер переходит в состояние установки:



Установка, при небольшом потоке заявок, длится примерно 5 минут. После чего клиент получает письмо с логином/паролем от RDP:


И может пользоваться своим сервером:





Также, Windows доступен и при переустановке ОС:


  • Используя эти решения мы можем еще каких-нибудь дистрибутивов в панель добавить.
  • Тех которых нет на оригинальном Hetzner Cloud
  • Но зато которые пользуются спросом у разработчиков. Авто установка OpenVPN, авто установка vestacp, fastpanel и другое.
  • В будущем так же будет адаптация панели под реселлеров. Чтобы любой мог накатить ее себе на домен, через наши серверы, заплатив нам по подписке и начал бы продавать своим клиентам через свои hetzner аккаунты.

hetzner.highload.cloud/billmgr?func=register&lang=ru
hetzner.abcd.cloud/

Hetzner.abcd.cloud | много всего и на бэке и на фронтенде

03/2019 update

Хранилища

Теперь панель поддерживает Hetzner Cloud Volumes.



Их можно подключать к серверам, динамически ресайзить и вообще делать с ними всё что позволяет Hetzner API.

Изменение ценообразования
Обнаружили что за IP-адреса, просуществовавшие меньше месяца, списывают ощутимо меньше чем за месяц.
То же самое для остальных услуг.
Поэтому, теперь за все IP-адреса, хранилища и снимки HDD оплата разбита по дням с ограничением максимальной суммы в месяц.
hetzner.abcd.cloud/landing/ — новые цены уже в лендинге

Статистика
Теперь для всех клиентов собираются данные по обороту и количеству каждой из услуг.

Также, появилась страница с общей статистикой по всем клиентам:

На ней суммарные показатели на текущий момент и графики изменений статистики за последнюю неделю с шагом в 6 часов.

Ручное удаление услуг
При частых обновлениях панели и других возможных рисках, держать автоудаление услуг включенным было опасно. Поэтому, теперь в админке есть выбор, что делать при минимальном балансе:


Варианты выбора: «Удалять услуги» (панель дропнет услуги автоматически), или «Оповещать администраторов».
При выборе оповещения администраторов, панель, раз в час, будет присылать админам следующие письма:

При получении такого письма админам необходимо зайти на страницу клиента по ссылке и, если клиент действительно истратил весь свой баланс, нажать на кнопку удаления услуг:

В окне подтверждения выбирается, какое письмо получит клиент по поводу удаления его услуг:

Тут две опции. «Низкий баланс» — то что и раньше клиенты получали при низком балансе и «Другая» — можно ввести текст причины, сообщение с которой получит клиент.

Аккаунты и проекты Hetzner теперь в панели
В админке, на страницах Hetzner: Проекты и Hetzner: Аккаунты теперь добавляются данные об аккаунтах и проектах Hetzner.


Новые аккаунты и проекты добавляются через загрузку таблиц в формате CSV:

Удалить можно только проекты без клиентов и аккаунты без проектов.


Базовый проект — проект под токеном которого запрашиваются цены, типы серверов, локации, и.т.д.
Для того чтобы вручную ссадить клиента с проекта, есть кнопка «Сменить проект» на странице клиента. Но нужна она только в случае перетаскивания услуг клиента на другой проект/аккаунт. Во всех остальных случаях трогать её не стоит.


Автоматическое распределение клиентов по аккаунтам

Пустым, клиентам не назначен проект

То есть, когда в панели 10 активных клиентов, только этим десяти клиентам будут назначены проекты:

Все остальные проекты Hetzner, добавленные в панель, доступны для резервирования.

При этом клиенты, у которых проект не назначен, спокойно могут пользоваться панелью, видеть цены и прочее. Для них панель выглядит нормально. Цены, типы серверов, локации и прочие общие данные берутся через системный токен и, чаще всего, достаются из кэша, а списки услуг панель и вовсе не запрашивает у Хетцнера, возвращая пустому клиенту пустые списки услуг. Это очень сильно снижает нагрузку на бэк панели и в разы понижает количество запросов к Hetzner API.

Как только пустой клиент, без проекта, приобретает первую услугу, ему выдаётся проект
Когда клиент нажимает на кнопку «купить» у любой из услуг, панель находит наименее заполненный аккаунт со свободными проектами:
То есть, панель выбирает, в каком из аккаунтов соотношение использовано/лимит ниже всего и выбирает свободный проект из него. Свободный проект выдаётся клиенту и с его стороны это выглядит будто он просто купил услугу. На стороне админки за клиентом начинает отображаться только что выданный проект.

Клиенты, у которых больше нет услуг, освобождаются от проектов
Когда клиент удаляет последнюю из своих услуг (сам, или админы из панели), панель убирает привязку клиента к проекту и этот проект теперь снова может автоматически выдаваться другим клиентам. То есть, как только клиент A удалил все свои услуги в панели, его проект в течение короткого времени может быть выдан клиенту B.
В итоге, заняты обычно только те проекты, на которых что-то есть, а остальные свободны для автоматического резервирования под новых, активных клиентов.
Бесплатные услуги (SSH-ключи) при отсутствии платных, сами дропаются через указанный в админке интервал, чтобы проекты, на которых долгое время висят только ключи, тоже освобождались:

SSH-ключи теперь могут добавить только клиенты с балансом выше 10р., чтобы нельзя было заабузить заполнение проектов просто закидывая ключи в пустые аккаунты в панели.
Итого, на 100 проектов Hetzner в панели может автоматически разместиться сотня активных клиентов, а остальные не будут потреблять никаких токенов до момента приобретения услуг.

Что ещё нам дает автоматическое распределение клиентов по проектам
Бот, при реге клиента в биллинге ISPsystem, сразу же регает его в hetzner панели и новые клиенты имеют к доступ к панели еще до первого пополнения счета. Все старые клиенты из биллинга также зареганы и получили доступ. Теперь это возможно благодаря механике автоматического управления проектами Hetzner, описанной выше.


hetzner.highload.cloud/billmgr?func=register&lang=ru
hetzner.abcd.cloud

Планируем к 2023 так же сделать полноценную замену Billmanager который сейчас убивает боковую колонку и херит стандарты. Будет биллинг для реселлеров, без ненужного мусора, только для реселлеров выделенных серверов и облаков, распространяющийся по подписке на наших серверах. Как и описывали в 2018 xaas модели в блогах.

Hetzner.abcd.cloud | немного апдейтов

Первый топик на хостинг кухню не попал почему-то. История сохранена тут. (06/2018)

02/2019 update
Индикатор активности клиентов:
Клиенты, у которых на данный момент есть платные услуги, выделены зелёным на странице клиентов. Есть возможность фильтровать, выбрав только активных.


При пополнении счёта (в т.ч. и ручном), клиенту теперь приходит уведомление от панели:


Если уведомление на почту не нужно — можно просто снять чекбокс, выделенный на скрине.

Настройка «Оповещать админов когда баланс ниже N» заменена на «Выключать серверы клиента, когда баланс ниже N»:




Всё равно, само по себе оповещение админов о низком балансе никаких позывов к действию не несло. Сейчас, при достижении указанного в админке минимума, серваки клиента выключаются и включить их из панели панель не даст, пока баланс ниже указанной суммы.

Windows Server 2012 довольно таки шустро заработала на самом дешёвом тарифе.


Заказать любой баланс который попадет в облако, можно тут hetzner.highload.cloud/billmgr?func=register&lang=ru
Все управление происходит тут hetzner.abcd.cloud