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.