Openship — платформа деплоя с CI/CD, которую можно поднять у себя
📂 Исходный код на GitHubОткрытая платформа для деплоя с CI/CD, которую можно поднять на своём сервере. Собирает приложение из репозитория, папки или готовой сборки, запускает его, настраивает домены и TLS, а также управляет базами данных, почтой, CDN и резервными копиями. Есть десктопное приложение, веб-панель, CLI, SDK и MCP-эндпоинт. Лицензия Apache 2.0, основной язык — TypeScript.
Openship — это открытая платформа для деплоя, которую можно поднять на своём сервере. Она берёт исходники приложения, собирает его, запускает в контейнере, настраивает домен и выпускает сертификат Let's Encrypt. Встроенный CI/CD работает по вебхуку от GitHub: пушите код — получаете новую сборку.
Проект написан на TypeScript, распространяется под лицензией Apache 2.0. Управлять платформой можно из десктопного приложения, веб-панели или CLI.
Зачем это нужно
Обычно деплой — это склейка из нескольких разных программ. Где-то настраивается сборка. Где-то CI-конвейер. Где-то DNS. Где-то веб-сервер с сертификатами. Где-то база данных и бэкапы. Каждый кусок живёт отдельно, и в каждом своя панель и свой формат конфига.
Openship собирает это в одно место. Одна программа отвечает за весь путь: от коммита в репозитории до работающего приложения по HTTPS.
Как устроен деплой
У Openship есть источник кода. Это может быть репозиторий на GitHub, локальная папка или уже готовая сборка. Дальше платформа выполняет пять шагов.
- Определение стека. Платформа читает
package.json, конфиг фреймворка, файлы блокировки зависимостей, а такжеdocker-compose.ymlилиopenship.json. По ним она понимает, какой стек используется, каким пакетным менеджером собирать, какие команды запускать и на каком порту приложение будет слушать. Файлы конфига не обязательны: всё определяется автоматически.openship.jsonнужен только тогда, когда вы хотите переопределить догадки. - Сборка. Образ Docker или готовый релиз собираются на целевом сервере или локально. Найденная конфигурация сохраняется в снимок. Благодаря этому повторный деплой и откат запускают ровно то, что уже уезжало в продакшен.
- Запуск. Приложение стартует как контейнер или как обычный процесс под присмотром платформы. Порт контейнера публикуется только на локальном адресе, наружу он не выставляется.
- Маршрутизация и защита. Обратный прокси на OpenResty прописывает ваш домен и выпускает сертификат Let's Encrypt. Важная деталь: маршрутизация идёт после запуска приложения. Если DNS или сертификат не выдались, платформа просто помечает задачу как «требует внимания». Деплой при этом не падает, а приложение не лежит.
- Деплой по пушу. GitHub-вебхук запускает конвейер на каждый коммит в отслеживаемую ветку. В монорепозитории пересобираются только те сервисы, файлы которых реально изменились.
Базы данных, домены, SSL, CDN, почта и резервные копии тоже управляются из того же интерфейса.
Три способа запустить
Первое решение, которое нужно принять, — как запускать саму платформу. Дальше всё одинаково.
| Ситуация | Как запустить | Где работают приложения |
|---|---|---|
| Один человек, одна машина, без работы руками | Десктопное приложение | На сервере, к которому вы подключаетесь по SSH, или в Openship Cloud |
| Команда, нужен деплой по пушу или хостинг на своей машине | Свой сервер, команда openship up |
На этом же сервере или на другом, в облаке |
| Не хочется ничего администрировать | Openship Cloud | Управляемые песочницы |
Для одиночной работы авторы рекомендуют десктопное приложение. Оно работает только пока приложение открыто. Постоянно работающего сервера нет, наружу ничего не выставлено. Свой сервер нужен в трёх случаях: когда нужен деплой по пушу, когда нужен доступ для команды, и когда вы хотите хостить приложения на этой машине.
Установка
Десктопные сборки лежат в рекламах: есть версии для macOS (Apple Silicon и Intel), Windows и Linux. Скачайте нужный файл и запустите. Если CLI уже стоит, он сам скачает и запустит приложение командой openship install.
Для сервера установка делается одной командой:
curl -fsSL https://get.openship.io | sh # install
openship # guided setup, then control panel
Альтернатива — установка через npm. Тогда нужен Node.js версии 22 или новее. Скрипт установки сам приносит нужную версию Node, если в системе она старая. Установка через менеджер пакетов использует тот Node, который уже есть.
Дальше идёт мастер: он создаёт первого администратора, подключает домен и ставит платформу как службу, которая стартует вместе с системой. Запускать мастер можно в любой момент, чтобы управлять установленным экземпляром.
Для CI-машин и без терминала мастер не нужен:
openship up # install and start as a background service
openship up --public-url https://openship.example.com # plus dashboard on your own domain
Команда openship up сама выбирает режим работы.
- На Linux с Docker включается режим Compose. Поднимается весь стек: Postgres, Redis, API, панель и контейнер с OpenResty на портах 80 и 443. Образы берутся готовыми. В этом режиме приложения хостятся на той же машине. Включить его принудительно можно флагом
--compose. - В остальных случаях (macOS, Windows, Linux без Docker) включается bare-режим. Это один лёгкий процесс со встроенной базой данных. Он постоянно работает, но приложения из него выезжают наружу: на сервер по SSH или в облако. Включить принудительно можно флагом
--bare.
Установленный у себя экземпляр всегда требует вход по логину администратора, созданного при настройке. Остальные команды короткие: openship open открывает панель, openship stop останавливает платформу, openship update обновляет её, openship up --foreground запускает в текущем окне.
Сборка из исходников
Если нужна версия из ветки или тега, ставится отдельная команда openship-dev. У неё свой каталог ~/.openship-dev и своя служба, поэтому ваша рабочая копия и её данные не затрагиваются. Сборка из исходников не проверялась, и для продакшена этот путь не подходит.
Свой Docker Compose
Стек платформы лежит в docker/docker-compose.yml. Он забирает готовые образы из GitHub Container Registry, ничего не собирая:
git clone https://github.com/oblien/openship.git && cd openship
cp .env.example .env # then edit
docker compose --env-file .env -f docker/docker-compose.yml up -d
В стеке пять частей: postgres, redis, api, dashboard и edge. edge — это OpenResty на портах 80 и 443 в контейнере с host networking. Такой запуск работает только на Linux. Контейнер api подключает Docker-сокет хоста, а это даёт ему права уровня хоста. Запускайте его только на доверенной машине.
Свой проект
Дальше всё сводится к трём шагам:
cd your-project
openship init # link this directory to a project
openship deploy
Интерфейсы
- Десктопное приложение — полноценный графический интерфейс с логами в реальном времени.
- Веб-панель — тот же интерфейс в браузере, рассчитанный на команду.
- CLI — удобно для скриптов и CI. Им же ставят и администрируют свою копию платформы.
- Ship SDK — управление деплоем и ресурсами из JavaScript и TypeScript. Есть класс
OpenshipClientдля подключения к готовому экземпляру и функцияcreateShipдля встраивания движка. Ставится как npm-пакет, нужна версия 0.8.0 или новее и Node.js 22+.
Дополнительно есть REST API и MCP-эндпоинт для ИИ-агентов. В MCP попадают только те маршруты, которые сами это разрешили. Каждый вызов заново проверяет права, а маршруты с логинами и токенами инструментами стать не могут.
Что умеет
| Возможность | Что это значит |
|---|---|
| Встроенный CI/CD | Деплой по пушу, окружения для превью, разделение на staging и prod, откат |
| Любой стек | Node, Python, Go, Rust, PHP, Ruby, Java, .NET, Docker, монорепозитории |
| Своё окружение | Postgres, MySQL, MongoDB, Redis, воркеры, WebSockets, хранилище |
| Домены и SSL | Автоматический Let's Encrypt, wildcard-домены, автопродление |
| CDN | Кэш на краях, HTTP/3, сжатие Brotli, мгновенная очистка кэша |
| Почта | Свой SMTP с DKIM, SPF и DMARC |
| Бэкапы | По расписанию, базы и тома, восстановление в один клик |
| Мониторинг | Живые логи сборки, метрики контейнеров, география посетителей |
| Переносимость | Обычные Docker-контейнеры, переезд между провайдерами свободный |
| Docker Compose | Готовые compose-файлы деплоятся как есть |
Куда угодно: на любой VPS (Hetzner, DigitalOcean, Linode, OVH), на выделенные серверы, на домашнюю машину и на несколько серверов сразу. Интерфейс везде одинаковый.
Состояние проекта
Ядро считается готовым к продакшену, разработка идёт. Своё размещение бесплатное, оплаты нет. Авторы называют ближайшие планы: кластеры на несколько узлов, интерфейс для балансировки, приватные сети, расширенный мониторинг и визуальные схемы CI/CD.
Лицензия и безопасность
Код, написанный авторами Openship, распространяется под Apache License 2.0. У сторонних компонентов остаются собственные лицензии. В частности, движок iRedMail лицензирован по GPL и входит в некоторые сборки платформы, даже если почта не настраивается. Границы лицензирования перечислены в документе о лицензировании.
Уязвимости авторы просят сообщать приватно, через приватный GitHub-консультационный отчёт, а не в публичных issue. Подробности — в SECURITY.md. Документация, кстати, ещё дописывается, и помощь с ней принимается — инструкция в CONTRIBUTING.md.
Полная документация и справочник CLI лежат на openship.io/docs.
Источник: https://github.com/oblien/openship