Files
ignis-core/deploy/README.md
2026-05-21 22:19:29 +07:00

110 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`
- база: `/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`
- `IGNIS_INSTANCE_NAME`
- `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
```
## Проверка
```bash
sudo systemctl status ignis-core.service
sudo journalctl -u ignis-core.service -n 100 --no-pager
curl -sS http://127.0.0.1:8000/auth/me -H 'X-API-Key: <master-key>'
curl -sS http://127.0.0.1:8000/system/info -H 'X-API-Key: <master-key>'
```
Если сервис стоит за reverse proxy, имеет смысл задать `IGNIS_PUBLIC_BASE_URL`.
## Обновление
```bash
cd /opt/ignis/ignis-core
. .venv/bin/activate
pip install -r requirements.txt
sudo systemctl restart ignis-core.service
```
Если менялся env:
```bash
sudo systemctl restart ignis-core.service
```
Если менялся unit:
```bash
sudo systemctl daemon-reload
sudo systemctl restart ignis-core.service
```
## Что делает unit
Текущий [ignis-core.service](ignis-core.service):
- запускает `python -m uvicorn main:app --host 0.0.0.0 --port 8000`
- читает `/etc/ignis-core/ignis-core.env`
- рестартует сервис при падении
- пишет состояние в `/var/lib/ignis-core`
- даёт записи в `/opt/ignis/ignis-core` и `/var/lib/ignis-core`
## Практические замечания
- для хостов с VPN, Docker или несколькими интерфейсами лучше всегда задавать `SCAN_NETWORK` явно;
- перед релизом полезно перегенерировать `openapi.json` и прогнать `unittest`;
- reverse proxy лучше ставить перед сервисом, а не встраивать в него.