Skitflow

Установка

Запустите Skitflow на вашем сервере за несколько минут с помощью этого простого руководства по установке.

Выполните следующие шаги для установки Skitflow на ваш сервер и развёртывания первого приложения:

Требования

  • Linux-сервер (VPS или выделенный) с root-доступом.
  • 4 ГБ RAM минимум (8 ГБ рекомендуется для сборок).
  • 30 ГБ дискового пространства минимум.
  • Публичный IP-адрес и доменное имя, указывающее на него (для HTTPS).

Протестированные дистрибутивы Linux

  • Ubuntu 24.04 LTS
  • Ubuntu 22.04 LTS
  • Ubuntu 20.04 LTS
  • Debian 12
  • Debian 11
  • Fedora 40

Скрипт установки требует root и использует синтаксис Bash. Всегда передавайте через bash, а не sh — в Ubuntu и Debian sh по умолчанию использует dash, который не поддерживает Bash-массивы.

Установка Skitflow

1. Направьте домен на сервер

Перед установкой направьте DNS-запись A (или CNAME) на публичный IP сервера. Skitflow рассчитан на работу через Traefik с настоящим доменом и TLS: домен — это ваш основной адрес, а IP:3000 — только bootstrap-шаг.

Если планируете сертификаты Let's Encrypt, также задайте ACME email до запуска установщика (иначе сертификаты не будут выданы):

export ACME_EMAIL=[email protected]

2. Запустите установщик

curl -sSL https://skitflow.cloud/install.sh | sudo bash

Скрипт установит Docker (если отсутствует), настроит PostgreSQL, Redis, Traefik и управляющий контур Skitflow.

В конце вывода установщик печатает одноразовый SETUP TOKEN (зелёная строка после «SETUP TOKEN:»). Он понадобится на следующем шаге — сохраните вывод терминала.

По умолчанию установщик разворачивает канал canary, который получает частые обновления и может быть менее стабилен. Для production используйте стабильный канал:

curl -sSL https://skitflow.cloud/install.sh | sudo bash -s -- --channel stable

3. Создайте администратора (bootstrap через IP:3000)

Сразу после установки Skitflow временно доступен по адресу http://IP-вашего-сервера:3000. Откройте его в браузере — попадёте на страницу первичной настройки. Кроме имени, email и пароля форма запросит Токен установки — вставьте SETUP TOKEN из вывода установщика.

Токен установки — намеренная защита: без него любой, кто сканирует интернет на открытые IP:3000, мог бы зарегистрироваться первым и захватить инстанс в промежутке между установкой и вашим первым заходом. Токен печатается только в терминале сервера — не передавайте его никому.

Доступ по IP:3000 временный и ОБЯЗАТЕЛЬНО должен быть закрыт. Панель на голом HTTP без TLS не защищена Traefik и открыта всему интернету. После выполнения шага 4 (домен + HTTPS) порт 3000 нужно закрыть — см. шаг 6.

Создание первого администратора на свежей установке автоматически запускает 30-дневный Enterprise-триал: включены все enterprise-функции (SSO, SCIM, пользовательские роли, журналы аудита, white-labeling, реплицируемое хранилище) и до 3 подключаемых серверов (сам хост платформы не считается). По окончании триала инстанс продолжает работать без enterprise-функций; лицензионный ключ открывает их насовсем.

4. Настройте домен и HTTPS через Traefik

В панели управления настройте домен (тот, что направлен на сервер в шаге 1), чтобы Traefik выпустил сертификат Let's Encrypt и открывал Skitflow по https://ваш-домен.ru. Убедитесь, что HTTPS работает в браузере, прежде чем продолжать — если закрыть порт 3000 раньше, вы потеряете доступ.

5. SMTP и прочие настройки

Настройте SMTP для email-уведомлений и приглашений, а также остальные параметры (удалённые серверы, AI gateway, OAuth) по необходимости.

6. Закройте порт 3000 — обязательно, не опционально

Как только домен с HTTPS заработал, закройте прямой доступ к панели по IP:3000 и переключите auth origin на домен одним шагом (иначе приглашения участников продолжат указывать на закрытый IP:3000):

docker service update \
  --publish-rm "published=3000,target=3000,mode=host" \
  --env-add BETTER_AUTH_URL=https://ваш-домен.ru skitflow

Это обязательный шаг безопасности, а не рекомендация: пока порт 3000 открыт, панель управления остаётся доступной по незашифрованному HTTP в обход Traefik и TLS.

Временно вернуть доступ (например, для восстановления при сломанном домене):

docker service update --publish-add "published=3000,target=3000,mode=host" skitflow

Перед закрытием порта 3000 убедитесь, что https://ваш-домен.ru открывает панель. Если домен или сертификат настроены неверно, вы потеряете доступ к инстансу, пока порт не будет возвращён с серверной консоли.

Телеметрия счётчика установок

Skitflow публикует на skitflow.cloud два числа: сколько раз был скачан скрипт установки и сколько установок сообщили, что поднялись. Второе число отправляет установщик — ниже точно то, что он отправляет, когда и как это отключить.

Что отправляется

Один HTTP POST на https://skitflow.cloud/api/telemetry/install, и тело запроса целиком такое:

{ "event": "install_succeeded", "version": "0.32.3" }

version — тег установленного образа. Это весь payload. Установщик не читает, не вычисляет и не отправляет ваш IP-адрес, имя хоста, домен, email, machine id, server id, лицензионный ключ, setup token, строку подключения к базе, переменные окружения и пути к файлам, а принимающий endpoint ничего из этого и не хранит: он хранит целочисленные счётчики и отметку времени, поэтому две установки оставляют совершенно одинаковый след.

Когда отправляется

Только после того, как установщик сам убедился, что установка поднялась: сервис skitflow должен выйти на заданное число реплик и ответить на своём health-эндпоинте. Пока оба условия не выполнены, не отправляется ничего.

Ничего не отправляется для:

  • запуска скрипта
  • установки, которая упала или была прервана
  • установки, где сервис так и не сошёлся
  • install.sh update, remove, ssh-identity и pin-platform-services

Дедупликации нет: она требовала бы идентификатора хоста, а установщик намеренно его не отправляет. Поэтому публичное число считает события успешных установок, а не уникальные хосты и не работающие инстансы — повторная установка на том же сервере считается дважды. Это число ещё и самодекларируемое: endpoint не может аутентифицировать установщики, работающие на чужих серверах.

Как отключить

Задайте любую из двух переменных перед запуском установщика — событие не будет отправлено вовсе:

export SKITFLOW_TELEMETRY=0
# или общепринятое межпроектное соглашение, которое учитывается так же:
export DO_NOT_TRACK=1
curl -sSL https://skitflow.cloud/install.sh | sudo -E bash

sudo -E сохраняет переменную при переходе через sudo. Без -E задайте её внутри привилегированной оболочки: sudo SKITFLOW_TELEMETRY=0 bash install.sh.

Каждый запуск печатает это раскрытие и способ отказа до того, как что-либо создаётся, — установка, которая собирается отправить событие, сначала об этом сообщает. Запуск с отключённой телеметрией печатает Telemetry: OFF.

Весь этот путь — best-effort: недоступный счётчик, firewall или прокси на пути дают напечатанную строку и никогда не меняют результат установки.

Обновление

Чтобы обновить Skitflow до последней версии:

curl -sSL https://skitflow.cloud/install.sh | sudo bash -s -- update
Панель управления Skitflow после установки

On this page