Self-host

Как развернуть весь Actari на своём сервере в Docker.

Actari можно запустить целиком на своей машине или сервере: веб-приложение, фоновый воркер, база и очередь поднимаются одной командой в Docker. Облако при этом не зависит от actari.dev, не отправляет данные во внешнюю аналитику и не требует почтового сервера. Агентов вы подключаете к нему так же, как к обычному облаку, только с другим адресом.

Что понадобится

  • Docker с Compose v2: Docker Desktop на macOS и Windows или Docker Engine на Linux.
  • Около 3 ГБ свободного места под образы и около пяти минут на первую сборку.
  • Свободный порт 3000 (его можно поменять).
  • Репозиторий Actari с папкой deploy/self-host: образы собираются из него тем же Dockerfile, что и у основного облака.

Запуск

cd deploy/self-host
cp .env.example .env
docker compose up

Когда в логе появится строка [actari] интеграции: …, откройте http://localhost:3000. Чтобы запустить в фоне и дождаться готовности, используйте docker compose up -d --wait.

Что поднимается

СервисДля чего
postgresБаза данных (Postgres с расширением pgvector)
redisОчередь фоновых задач
setupОдноразовый: создаёт секреты и накатывает миграции базы
workerФоновые задачи: разбор фич, индексация поиска и другие
webВеб-приложение на порту 3000

Порядок запуска такой: сначала postgres и redis проходят проверку здоровья, затем setup создаёт секреты и применяет миграции, и только потом стартуют worker и web. Миграции также накатываются при каждом запуске воркера, так что после обновления ничего отдельно делать не нужно.

Первый вход

Откройте http://localhost:3000 и зарегистрируйтесь. Пока не настроена отправка почты, регистрация сразу входит в облако без письма с подтверждением. Создайте пространство в интерфейсе, а дальше всё как в обычном облаке: см. Быстрый старт.

Подключение агента

Выпустите токен на странице «MCP-токены» в боковом меню. Затем скажите агенту подключить журнал, указав адрес вашего облака:

connect { url: "http://localhost:3000", token: "act_…" }

Тот же адрес можно задать переменной ACTARI_CLOUD_URL=http://localhost:3000, тогда его не нужно передавать при каждом connect. Подробности про токены и несколько пространств — на странице Установка.

Токен владельца можно выпустить и из командной строки, без интерфейса. Пользователь и пространство создаются, если их нет, а в вывод попадает только токен:

docker compose exec worker node dist/scripts/bootstrap.js --email you@example.com

Пользователь, созданный этой командой, пароля для входа в веб-интерфейс не имеет: для интерфейса регистрируйтесь через форму.

Настройки

Все настройки лежат в файле .env, скопированном из .env.example:

ПеременнаяЧто делает
ACTARI_PORT, ACTARI_URLПорт на вашей машине и адрес, по которому вы открываете облако. При смене порта меняйте оба значения.
POSTGRES_PASSWORDПароль базы, только буквы и цифры. Действует при создании базы.
BETTER_AUTH_SECRETПодписывает сессии.
AI_KEY_ENCRYPTION_SECRETШифрует ключи AI, сохранённые в пространствах.

Секреты можно не задавать: при первом запуске они создаются и сохраняются в томе secrets, переживают docker compose down и повторный up, поэтому сессии не слетают. Секрет, заданный в .env, главнее созданного. Если сменить AI_KEY_ENCRYPTION_SECRET, уже сохранённые ключи AI станут нечитаемыми.

Интеграции

По умолчанию облако работает без AI-ключей, Telegram, почты и S3: основные страницы открываются, а интеграции показаны выключенными. Чтобы включить нужную, раскомментируйте её переменные в .env и примените изменения:

docker compose up -d

В логе старта видно, какие интеграции включены: [actari] интеграции: smtp=вкл, telegram=выкл, ….

  • Почта. Нужны SMTP_HOST, SMTP_USER и SMTP_PASSWORD. После этого регистрация требует подтверждения почты.
  • Telegram-бот. TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, TELEGRAM_WEBHOOK_SECRET. Подробнее — Бот в Telegram.
  • Супер-админ инстанса. ACTARI_SUPER_ADMIN_EMAILS — почты через запятую, почта должна быть подтверждена. Супер-админ видит расход встроенного AI и обращения «Обратной связи», отвечает на них и получает в личный Telegram сообщения о новых обращениях и регистрациях — для этого он привязывает Telegram в любом своём пространстве. Без переменной пункт «Обратная связь» скрыт.
  • Вход через Яндекс. YANDEX_CLIENT_ID и YANDEX_CLIENT_SECRET.
  • Файлы в S3-совместимом хранилище. Нужны все четыре: STORAGE_S3_BUCKET, STORAGE_S3_ENDPOINT, STORAGE_S3_ACCESS_KEY, STORAGE_S3_SECRET_KEY.
  • Аналитика Umami. Нужны оба: UMAMI_SCRIPT_URL и UMAMI_WEBSITE_ID. Без них на страницах нет ни одного запроса к аналитике.
  • AI. Ключ AI вводится в самом облаке на странице настроек, см. Встроенный AI и своя модель.

Агент в комплекте

Профиль agent дополнительно поднимает opencode с подключённым actari-mcp, скиллами Actari и учебным проектом-тудушкой. Папки вашей машины в контейнер не монтируются:

docker compose --profile agent run opencode

Один раз нужно войти в модель командой opencode auth login внутри контейнера (вход сохраняется в томе) либо задать ANTHROPIC_API_KEY или OPENAI_API_KEY в .env. Затем выпустите токен и попросите агента подключить журнал. После этого фраза «сделай через actari: показывать в списке только невыполненные задачи» запустит скилл feature, и принятая задача появится на доске вашего облака.

Остановка, сброс, обновление

  • Остановить, сохранив данные и секреты: docker compose down.
  • Остановить и стереть всё (базу и секреты): docker compose down -v. Сессии после этого недействительны, а сохранённые ключи AI нечитаемы.
  • Обновиться после git pull: docker compose up -d --build. Миграции накатываются сами.
  • Пароль Postgres применяется при создании базы: смена POSTGRES_PASSWORD на живой базе без down -v не действует.

Данные хранятся в томах Docker, поэтому не удаляйте их, пока не сделали собственную копию базы.

Если не получилось

Типичные неполадки с запуском и подключением собраны в разделе Неполадки и FAQ.

На этой странице

Для агентов: текстовая версия · llms.txt