Расскажите о себе и сути проекта?
В одном из клубных чатиков я как-то поинтересовался, с помощью какого селф-хостед решения я смогу реализовать хостинг Docker-контейнеров с рядом условий:
- RBAC - пользователь видел только свои контейнеры, образы, базы
- Ограничение по ресурсам на каждого пользователя - чтобы сосед не смог использовать все ресурсы хоста
Мне сразу же предложили несколько вариантов:
- Coolify
- Dokploy
- Portainer BE (до 3 год бесплатная лицензия на 1 год, каждый год можно перезапрашивать(
В первых двух нет RBAC, которое требуется мне. Например, в Coolify 1 уникальный хост для каждой команды. То есть, если представить, что 1 команда - это 1 пользователь, то выходит очень дорого. Разграничения по ресурсам, выделяемые на контейнеры во всех трех случаях можно переназначить через композ.
Как появилась идея? Что вдохновило?
Видел, что в разных клубных чатах люди спрашивают про наилучшие vps, где они могут захостить свой пет-проект, например телеграм бота или простой веб-сервис.
Обычно люди рекомендуют Hetzner, но там ввели KYC и теперь зарегистрироваться там может не каждый, да и оплачивать нужно зарубежной (не российской) картой.
Потому я решил сделать клубный Docker-хостинг.
Среди перечисленных выше требований также были:
- Managed Postgres - для каждого пользователя создается учетная запись и возможность создавать свои базы данных.
- Возможность деплоить как через docker run, так и через compose - но всё через веб-формы или загрузку файла compose.yaml
- Container registry - хранение пользовательских образов
- Авторизация в DockerHub - позволять пользователям использовать свои приватные образы
Что вошло в прототип и сколько времени на него было потрачено?
На данный момент прототип и имеется. Ушло около 2 недель разработки в свободное от двух работ и других пет-проектов времени.
Что прототип уже умеет:
- Авторизация/регистрация, но по инвайт-кодам - ещё нужно добавить назначение групп новым пользователям, пока что всё вручную
- Запускать контейнеры через команду run - на деле это веб-форма, где нужно указать название образа, контейнера, порты, переменные окружения
- Запускать контейнеры через compose - тоже веб-форма, состоящая из text-field, куда можно скопипастить содержимое вашего docker-compose.yaml файла, а также есть возможность загрузить сразу yaml файл.
- Авторизация в Dockerhub
- Стеки (что запущено через compose, например несколько контейнеров вместе) и обычные контейнеры можно останавливать, запускать, удалять
- Образы можно просматривать, удалять, проверять, используются ли они в рамках текущего акаунта
- Просмотр логов контейнеров, аптайм
Что не сделано:
- Container registry - нужно заниматься, искать время или руки. Репа в GitHub открыта, готов ожидать ваши PR или любые предложения помощи в разработке.
Запуск контейнера через docker run
Запуск стека (docker compose)
Контейнеры и стеки
Доступ к базам
Какой технологический стек вы использовали? Почему?
FastAPI - веб сервис, авторизация; под капотом Python, который обращается к Docker API. PostgreSQL - для системной и пользовательских баз, PGAdmin - для доступа пользователей к базам.
Как вы запускались и искали первых пользователей?
Я создал приватный чатик в Telegram, но пока что получил недостаточно обратной связи, потому решил написать этот пост, может желающих будет больше: https://t.me/+DtQHp5sKh883ZmQy
Сколько потратили и заработали? Есть идеи как это можно монетизировать?
Заработал 0. Потратил: аренда сервера в Hetzner (но вижу, что спроса пока что нет): 6 евро/мес за VPS в Hetzner 4 ядра, 8 гб, 80 Гб SSD, 20 Тб трафика/мес.
Какие планы на будущее?
Найти время, силы и желающих помочь доделать клубный сервис.
Сменить доменное имя для сервиса, сейчас используется временный вариант.
Нужны ли какие-то советы или помощь Клуба?
Если среди вас, читающих есть желающие поработать над open-source проектом, где вы скорее всего не заработаете ни цента, а также, ваш стек: python, fastapi, docker, psql - пишите в ЛС.
Какой совет вы бы сами могли дать идущим по вашим стопам?
Из сотни неудачных пет-проектов может быть какой-то выстрелит.
На данный момент регистрация доступна только по инвайт-кодам:
WtrLm531
Страница регистрации: https://vcloud.devspond.pro/register
После регистрации напишите мне в ЛС в Telegram: https://t.me/pycarrot2 или в чатик https://t.me/+DtQHp5sKh883ZmQy с указанием вашего никнейма, который вы указали при регистрации, а также, ссылкой на ваш клубный профиль, я вручную назначу вам нужную группу и сервис станет доступным для вас.
Оставлю тут полезные ссылки:
Открытая Github репа: https://github.com/endlessnights/Dokyard
Сам сервис: https://vcloud.devspond.pro
PGAdmin: https://vdb.devspond.pro/login
Образ в DockerHub: https://hub.docker.com/r/pycarrot2/dokyard
Интересно, а как там с прайваси? Это ж не полноценные VM всё таки, а контейнеры.
Если я допустим задеплою Immich с моими нюдсами, есть шанс, что админ платформы сможет их увидеть? 🌚
Экономически: 6 евро в месяц - это самая маленькая VPS'ка, правильно? На ней не сказать чтоб много контейнеров можно было поднять, быстро упрешься в память.
Буду отключать vcloud.devspond.pro сервер в течении 2 недель, вижу, что там работает только louislam/uptime-kuma из полезного.
Если это ваш контейнер, пожалуйста, сделайте бэкапы.