Openship — платформа деплоя с CI/CD, которую можно поднять у себя

· 2 мин чтения
self-hosted devops deployment cli open-source
📂 Исходный код на GitHub

Открытая платформа для деплоя с CI/CD, которую можно поднять на своём сервере. Собирает приложение из репозитория, папки или готовой сборки, запускает его, настраивает домены и TLS, а также управляет базами данных, почтой, CDN и резервными копиями. Есть десктопное приложение, веб-панель, CLI, SDK и MCP-эндпоинт. Лицензия Apache 2.0, основной язык — TypeScript.

Openship — платформа деплоя с CI/CD, которую можно поднять у себя

Openship — это открытая платформа для деплоя, которую можно поднять на своём сервере. Она берёт исходники приложения, собирает его, запускает в контейнере, настраивает домен и выпускает сертификат Let's Encrypt. Встроенный CI/CD работает по вебхуку от GitHub: пушите код — получаете новую сборку.

Проект написан на TypeScript, распространяется под лицензией Apache 2.0. Управлять платформой можно из десктопного приложения, веб-панели или CLI.

Зачем это нужно

Обычно деплой — это склейка из нескольких разных программ. Где-то настраивается сборка. Где-то CI-конвейер. Где-то DNS. Где-то веб-сервер с сертификатами. Где-то база данных и бэкапы. Каждый кусок живёт отдельно, и в каждом своя панель и свой формат конфига.

Openship собирает это в одно место. Одна программа отвечает за весь путь: от коммита в репозитории до работающего приложения по HTTPS.

Как устроен деплой

У Openship есть источник кода. Это может быть репозиторий на GitHub, локальная папка или уже готовая сборка. Дальше платформа выполняет пять шагов.

  1. Определение стека. Платформа читает package.json, конфиг фреймворка, файлы блокировки зависимостей, а также docker-compose.yml или openship.json. По ним она понимает, какой стек используется, каким пакетным менеджером собирать, какие команды запускать и на каком порту приложение будет слушать. Файлы конфига не обязательны: всё определяется автоматически. openship.json нужен только тогда, когда вы хотите переопределить догадки.
  2. Сборка. Образ Docker или готовый релиз собираются на целевом сервере или локально. Найденная конфигурация сохраняется в снимок. Благодаря этому повторный деплой и откат запускают ровно то, что уже уезжало в продакшен.
  3. Запуск. Приложение стартует как контейнер или как обычный процесс под присмотром платформы. Порт контейнера публикуется только на локальном адресе, наружу он не выставляется.
  4. Маршрутизация и защита. Обратный прокси на OpenResty прописывает ваш домен и выпускает сертификат Let's Encrypt. Важная деталь: маршрутизация идёт после запуска приложения. Если DNS или сертификат не выдались, платформа просто помечает задачу как «требует внимания». Деплой при этом не падает, а приложение не лежит.
  5. Деплой по пушу. 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