Усі роботи
Власний продукт

bebb Cloud — хостинг-платформа

Кабінет клієнта для сайтів, ботів і S3-сховища: як cPanel, тільки сучасний і на власному сервері.

Роль
Архітектура, backend, frontend, DevOps
Рік
2026
Стек
Laravel 12FilamentReactTypeScriptGoPythonDockernginxMariaDBRedisGarage S3

Задача

Потрібен був хостинг для власних клієнтів: сайти на PHP, WordPress і Node.js, Telegram-боти й сховище для бекапів — з одним зручним кабінетом, без самореєстрації і так, щоб клієнтський код не міг зашкодити серверу.

Що зроблено

  • Кабінет на базі Reviactyl (Laravel + React), який я переробив під три розділи: Сайти, Боти, S3 Хмара. Вхід без паролів — код на пошту або passkey.
  • Кожен сайт і бот — окремий контейнер: файлова система лише для читання, непривілейований користувач, без додаткових прав, ліміти пам’яті й диска.
  • Домени й сертифікати Let’s Encrypt підключаються самі: окремий сервіс без root генерує конфіги nginx, а крихітний root-помічник лише перевіряє їх і застосовує з відкатом.
  • S3-сховище на Garage з квотами, копії сайтів у S3 і відновлення в один клік; staging-копія WordPress з автоматичною заміною адрес.
  • SMTP-релей для пошти сайтів, написаний на Go, Redis і MariaDB для ботів, Adminer із входом за одноразовим посиланням.
  • Моніторинг щохвилини: сповіщення про падіння в Telegram-бот і на пошту, графіки пам’яті, процесора й відвідувань.

Як влаштовано

  1. Клієнт
  2. nginx + TLS
  3. Кабінет (Laravel + React)
  4. Agent → контейнери
  5. MariaDB · Redis · S3

Запит клієнта проходить через nginx до кабінету; кабінет керує контейнерами через агента, а дані живуть у службах, закритих від інтернету.

Знімки

Розділ «Сайти»: картка сайту зі статусом, доменом і активним SSL
Розділ «Сайти»: картка сайту зі статусом, доменом і активним SSL
Панель сайту: ресурси, адреса й плитки інструментів
Панель сайту: ресурси, адреса й плитки інструментів
Домени й SSL: статус DNS, сертифікат і що прописати в DNS
Домени й SSL: статус DNS, сертифікат і що прописати в DNS
Та сама панель у темній темі
Та сама панель у темній темі

Результат

  • Працює в продакшні на app.bebb.be.
  • Наскрізні тести Playwright для кожного розділу кабінету і звірка сервера з еталоном конфігурації після кожної зміни.
  • Внутрішні служби (бази, Redis, релей) не видно з інтернету — лише з мережі контейнерів.

Що далі

Рахунки й оплати в кабінеті, віддалені бекапи на окремий сервер і розділ VPS.

Хочете щось подібне?

Розкажіть про свій проєкт — підкажу, як зробити його надійно.