# Развёртывание cortiq-gateway для команды / офиса Один шлюз на небольшом сервере, API-ключи по отделам, локальные модели для дешёвых уровней, облачные — для сложных. Эта страница про эксплуатацию. ## 1. Запуск как сервис ### Linux (systemd) ```ini # /etc/systemd/system/cortiq-gateway.service [Unit] Description=Cortiq Gateway After=network-online.target [Service] User=cortiq Environment=CORTIQ_GATEWAY_HOME=/var/lib/cortiq-gateway ExecStart=/usr/local/bin/cortiq-gateway --no-port-search Restart=always RestartSec=3 [Install] WantedBy=multi-user.target ``` ```bash sudo systemctl enable --now cortiq-gateway ``` ### macOS (launchd) ```xml Labelcom.cortiq.gateway ProgramArguments /usr/local/bin/cortiq-gateway --no-port-search RunAtLoad KeepAlive ``` ```bash launchctl load ~/Library/LaunchAgents/com.cortiq.gateway.plist ``` ### Windows Планировщик заданий → Создать задачу → «Выполнять вне зависимости от входа пользователя», триггер «При запуске», действие `cortiq-gateway.exe --no-port-search`. Либо [NSSM](https://nssm.cc): `nssm install cortiq-gateway C:\bin\cortiq-gateway.exe`. ### Docker ```bash docker run -d --restart unless-stopped -p 9000:9000 \ -v cortiq-data:/data ghcr.io/infosave2007/cortiq-gateway:latest ``` ## 2. TLS и внешний мир Сам шлюз говорит по HTTP — поставьте перед ним reverse-proxy с TLS, а шлюз привяжите к localhost: ```toml # gateway.toml listen = "127.0.0.1:9000" ``` ```nginx server { listen 443 ssl; server_name ai.example.com; ssl_certificate /etc/letsencrypt/live/ai.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ai.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:9000; proxy_http_version 1.1; proxy_buffering off; # SSE-стриминг proxy_read_timeout 3600s; # долгие генерации } } ``` (`caddy reverse-proxy --from ai.example.com --to 127.0.0.1:9000` делает то же с автоматическими сертификатами.) ## 3. Чек-лист безопасности - **Токен админки**: задайте `[admin] token` (или `CORTIQ_ADMIN_TOKEN`) — без него консоль предупреждает, что открыта сети. - **API-ключи**: по ключу на отдел/разработчика на странице ключей. Как только настроен хотя бы один ключ, модельные API требуют Bearer / x-api-key — запросы без валидного ключа получают 401. - **Rate-limit**: запросов/мин на ключ → 429 с Retry-After. - **Месячные бюджеты**: потолок $ на ключ → 429 insufficient_quota, когда траты аккаунта за месяц превысят лимит. - Привязывайте к 127.0.0.1 за прокси; не выставляйте админку наружу голой. ## 4. Бэкапы Всё живёт в data-директории (`CORTIQ_GATEWAY_HOME`): - `gateway.toml` — полный конфиг вкл. ключи (или TOML-экспорт из консоли); - `secrets.toml` — ключи провайдеров (chmod 600); - `stats.jsonl` + `stats.jsonl.totals.json` — учёт запросов вкл. вечные тоталы по ключам и месячные траты для бюджетов. Скопируйте эти три файла — и инстанс поднимается где угодно. ## 5. Наблюдаемость - Рабочий стол: KPI, расходы по ключам, последние запросы с коэффициентами сложности, баланс OpenRouter (красный ниже $5). - `GET /metrics` (включите `[telemetry] metrics = true`) для Prometheus. - Просмотр логов в консоли; `stats.max_file_mb` ограничивает диск.