Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
PaaS и хостинг приложений

Openship

Self-hosted платформа-как-сервис: разворачиваете приложения из Git на своем сервере с автосборкой, своими доменами и TLS, как в Vercel или Heroku, но код и данные остаются у вас. Подняли стек 0.6.6 на VM в РФ, прошли онбординг, замерили ресурсы и проверили вход по валидному HTTPS.

Август 2026 ~8 минут чтения Fatmetal Team
PaaS Лицензия: открытый исходный код Статус: запущен у нас, v0.6.6

Вердикт

Подходит
  • команде, которой нужен свой Heroku/Vercel без вендор-локина
  • кто деплоит Docker- и Compose-приложения из Git с автосборкой
  • кому важно держать код и данные приложений на своем сервере
Не подходит
  • для одного статичного сайта - проще поставить Caddy напрямую
  • кто не готов администрировать Docker-хост
  • кому нужен managed-PaaS с готовым SLA
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: medium Время запуска: ~13 мин Главный риск: таймауты Docker Hub из РФ на старте стека Прод-готовность: с оговорками (auth-mode + TLS-надстройка)
Что это

Что это и какую задачу решает

Openship - открытая платформа-как-сервис (PaaS) для своего сервера. Ставится одним стеком, вы подключаете сервер для деплоя, а дальше публикуете приложения из Git: платформа сама собирает образ, поднимает контейнер, вешает ваш домен и выпускает Let's Encrypt. По модели это self-hosted аналог Vercel и Heroku - тот же сценарий «запушил - задеплоилось», но без ежемесячной оплаты за место и без передачи кода стороннему облаку.

Закрывает боль связки «облачный PaaS + ручной обратный прокси + ручной certbot»: вместо трех систем и оплаты за seat вы получаете один дашборд, где живут проекты, деплои, домены, бэкапы и логи. Подходит командам и разработчикам, которым нужен контроль над инфраструктурой и данными. Управление - через веб-дашборд с разделами Projects, Apps, Deployments, Servers, Domains, Backups.

Node.jsNext.jsPostgreSQLRedisOpenRestyDocker
Сравнение

Чем отличается от Vercel и Heroku

Сравнение по тому, что влияет на выбор между своим PaaS и облачным.

ПараметрOpenship (self-hosted)Vercel / Heroku
Модель ценыфикс за один сервер, приложений сколько влезетза место/seat и за использование, растет с масштабом
Где данные и кодна вашем серверев облаке вендора
Vendor lock-inнет, обычные Docker-приложенияпривязка к платформе и ее сборке
Лимитыресурсы вашей VMтарифные квоты на билды и трафик
Данные в РФда, сервер в нужной юрисдикцииинфраструктура вендора вне РФ
Под капотом

Тех-стек и архитектура

Openship ставится как стек Docker Compose из пяти контейнеров: api (ядро на Node.js), dashboard (веб-интерфейс на Next.js), postgres (postgres:16-alpine, состояние платформы), redis (redis:7-alpine, очереди и кеш) и edge (OpenResty - обратный прокси, который держит :80/:443 и выпускает Let's Encrypt для ваших приложений). Образы api/dashboard/edge берутся из ghcr.io/oblien, базовые postgres/redis - с Docker Hub.

Управление вынесено в CLI openship (самодостаточный, со своим Node) и в дашборд. Control-plane (api + dashboard) и ingress (edge) разделены: платформа рулит проектами и деплоями, а edge отдельно маршрутизирует трафик приложений по их доменам.

Конфигурация

Минимальная конфигурация

Реальные требования против официального минимума.

Реально в простое (весь стек)~0.9 GB RAM
Контейнеры платформы~294 MB (api 186, dashboard 70, postgres 34, redis 4.5)
Образы на диске~6.6 GB
Рекомендуем тарифCPU2-RAM4-DISK50
Тариф FatmetalCPU2-RAM4-DISK50
i

Важно: сам control-plane легкий (меньше гигабайта в простое), но сборка ваших приложений идет на этом же сервере и в пике ест CPU и RAM. Под реальные билды закладывайте запас - 2 vCPU / 4 GB это комфортный минимум под платформу плюс легкие приложения.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Openship есть в маркетплейсе Fatmetal - не нужно повторять установку из этого разбора вручную. Заказываете сервер, за ~13 минут получаете готовый PaaS-дашборд на своем домене с валидным TLS, вход системным паролем сервера. Дальше подключаете сервер деплоя и публикуете приложения.

Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес

В маркетплейс →
Развертывание

Развертывание на Fatmetal

Самый простой путь - готовая карта Openship в маркетплейсе: cloud-init сам ставит Docker, поднимает стек, заводит администратора и вешает TLS.

  1. Создать сервер из карты

    В маркетплейсе выбрать карту Openship, тариф CPU2-RAM4-DISK50, создать сервер. Cloud-init сделает все сам.

  2. Дождаться установки

    Около 13 минут: ставится Docker, тянется стек, поднимается платформа, выпускается сертификат. Домен вида 1-2-3-4.fatmetal.net заводится автоматически из IP.

  3. Войти в дашборд

    https://<ip>.fatmetal.net
    логин: admin@<ip>.fatmetal.net
    пароль: пароль вашего сервера (тот же, что для SSH)

    Логин и пароль продублированы в файле /root/openship-credentials.txt и в MOTD при входе по SSH. Дальше - подключить сервер деплоя и публиковать приложения.

https://ваш-домен.fatmetal.net
Дашборд Openship после установки: главный экран с проектами и мастером первого деплоя
Дашборд Openship сразу после установки картой (v0.6.6, CPU2-RAM4-DISK50). Вход системным паролем сервера.
https://ваш-домен.fatmetal.net
Openship: создание проекта из GitHub-репозитория, Git URL или шаблона
Новый проект: деплой из GitHub, Git URL, папки или шаблона - Openship сам собирает и публикует.
Замеры

Что измерили после запуска

Цифры со свежей установки, без нагрузки. Только реальные замеры.

Установка с нуля (cloud-init)~13 мин (с ретраями на образах)
RAM в простое (весь сервер)~0.9 GB
Контейнеры платформы~294 MB суммарно
Образы на диске~6.6 GB
TLS дашбордавалидный Let's Encrypt
Вход администратораработает системным паролем по HTTPS
i

Главное: платформа в простое легкая - меньше гигабайта памяти, львиную долю ест api. Основная нагрузка приходит на сборку ваших приложений, ее и надо закладывать в тариф.

Проверено на версии v0.6.6, август 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли, на которые наткнулись при запуске.

!

Камень 1. Удаленный вход в дашборд закрыт по умолчанию. Из коробки Openship работает в режиме zero-auth и пускает в дашборд только с самой машины (localhost). Облачный сервер при этом отдает «сессию создать негде». Лечится переменной OPENSHIP_AUTH_MODE=local в окружении стека и перезапуском - тогда включается вход по логину и паролю. В карте маркетплейса это уже прошито.

!

Камень 2. Первого администратора через форму не завести. Онбординг браузер-first, а публичная регистрация отключена (SIGNUP_DISABLED) - форма /register в дашборде обманчива. Первый админ заводится служебным вызовом (bootstrap) с внутренним токеном стека. В карте это делает cloud-init, логин - admin@<домен>, пароль - пароль сервера.

!

Камень 3. TLS для самого дашборда - не автомат. Встроенный edge выпускает Let's Encrypt для ваших приложений, но не для домена самого дашборда. В карте дашборд подается через отдельную надстройку Caddy с авто-TLS, а edge остается для клиентских приложений.

failed to copy: httpReadSeeker: failed open: failed to do request: net/http: timeout awaiting response headers ... Couldn't fetch the stack's images

Причина. Команда openship up тянет базовые образы postgres и redis с Docker Hub, а из РФ-сети Docker Hub периодически отваливается по таймауту. Один сорвавшийся слой роняет весь запуск стека - образы api/dashboard/edge с ghcr при этом качаются нормально.

Решение. Пред-качать базовые образы с ретраями и повторять запуск, каждый повтор докачивает с кеша: for i in 1 2 3 4 5; do docker pull postgres:16-alpine && break; sleep 8; done, затем openship up в цикле. В карте маркетплейса эта логика уже зашита в cloud-init.

Безопасность

Безопасность и обновления

Релизы и исходники - на GitHub (oblien/openship). Вход в дашборд закрыт логином и паролем (better-auth, email плюс пароль), первый администратор заводится при установке. Обновление платформы - штатной командой CLI:

openship update

Бэкап состояния платформы - дамп PostgreSQL из контейнера:

docker exec openship-postgres-1 pg_dump -U postgres openship > backup.sql
Рядом

Связь с другими стеками

  • Обратный прокси дашборда - Caddy с авто-TLS (в карте уже стоит перед дашбордом).
  • Бэкапы - pg_dump PostgreSQL плюс выгрузка в S3.
  • Мониторинг - Grafana плюс Prometheus поверх Docker-хоста.
Без прикрас

Когда это НЕ ваш выбор

Нужен один статичный сайт

Под лендинг или блог PaaS избыточен - поставьте Caddy или Nginx напрямую, это проще и легче.

Нужен managed-PaaS с SLA

Openship - это ваш сервер и ваша ответственность за обновления, бэкапы и аптайм. Если нужен готовый SLA без администрирования - берите облачный сервис.

FAQ

Частые вопросы

Можно поставить без Docker?

Нет, стек контейнерный (Docker Compose из пяти сервисов) и деплой приложений тоже идет через Docker - без него никак.

Хватит ли 2 GB RAM?

Сам control-plane в простое занимает меньше гигабайта и в 2 GB влезет, но сборка приложений идет на этом же сервере и в пике съест больше. Рабочий минимум под платформу и легкие приложения - 4 GB.

Можно в продакшен?

Да, но закройте три вещи: включите вход по паролю (auth-mode local), подайте дашборд по валидному TLS и настройте бэкапы PostgreSQL. В карте маркетплейса первые два пункта уже сделаны.

Как обновлять?

Командой CLI openship update - она обновляет и клиент, и серверную часть.

Как делать бэкап?

Дампом PostgreSQL из контейнера: pg_dump базы openship. Это состояние платформы - проекты, домены, пользователи.

Нужна ли авторизация?

Да, вход закрыт логином и паролем (better-auth). Первый администратор заводится при установке, логин admin на домене сервера, пароль - пароль самого сервера.

Как приложения получают HTTPS?

Встроенный edge (OpenResty) выпускает Let's Encrypt для доменов ваших приложений - наводите домен на сервер и добавляете его в дашборде.

Итог

Openship дает свой Heroku/Vercel на вашем сервере: деплой приложений из Git с автосборкой, свои домены и Let's Encrypt, все под одним дашбордом. Платформа в простое занимает меньше гигабайта, спокойно живет на CPU2-RAM4-DISK50, а данные и код остаются у вас. Из оговорок для облака - включить вход по паролю и подать дашборд по TLS; в готовой карте маркетплейса это уже сделано, вход по системному паролю сервера.

Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe

Не хотите устанавливать вручную?

Запустите Openship на этой конфигурации автоматически - от 450 ₽/мес.

Запустить Openship →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.