# Deploy Минимальный `systemd`-деплой для `ignis-core`. В каталоге: - `ignis-core.service` — unit-файл; - `ignis-core.env.example` — пример env-конфига. ## Предполагаемая раскладка - код: `/opt/ignis/ignis-core` - env: `/etc/ignis-core/ignis-core.env` - пользователь: `ignis` - SQLite: `/var/lib/ignis-core/ignis.db` Если у вас другие пути, поправьте unit и env-файл. ## 1. Создать системного пользователя ```bash sudo useradd --system --home /opt/ignis --shell /usr/sbin/nologin ignis ``` ## 2. Разложить проект и зависимости ```bash sudo mkdir -p /opt/ignis sudo cp -R /path/to/ignis-core /opt/ignis/ignis-core cd /opt/ignis/ignis-core python3 -m venv .venv . .venv/bin/activate pip install -r requirements.txt sudo chown -R ignis:ignis /opt/ignis ``` ## 3. Подготовить env-файл ```bash sudo mkdir -p /etc/ignis-core sudo cp deploy/ignis-core.env.example /etc/ignis-core/ignis-core.env sudo chmod 640 /etc/ignis-core/ignis-core.env sudo chown root:ignis /etc/ignis-core/ignis-core.env ``` Минимум, который надо заполнить руками: - `IGNIS_API_KEY` - `SCAN_NETWORK` Для машин с VPN или несколькими интерфейсами `SCAN_NETWORK` лучше задавать явно. ## 4. Установить unit ```bash sudo cp deploy/ignis-core.service /etc/systemd/system/ignis-core.service sudo systemctl daemon-reload sudo systemctl enable --now ignis-core.service ``` ## 5. Проверить запуск ```bash sudo systemctl status ignis-core.service sudo journalctl -u ignis-core.service -n 100 --no-pager curl -H 'X-API-Key: ' http://127.0.0.1:8000/auth/me ``` ## Обновление ```bash cd /opt/ignis/ignis-core . .venv/bin/activate pip install -r requirements.txt sudo systemctl restart ignis-core.service ``` ## Замечания - `StateDirectory=ignis-core` в unit создаёт `/var/lib/ignis-core`. - По умолчанию сервис слушает `0.0.0.0:8000`. - Reverse proxy проще ставить перед сервисом, а не внутрь него. - Перед обновлением backend-контракта полезно перегенерировать `openapi.json` и прогнать `unittest`.