11 KiB
11 KiB
Реестр ключей и секретов хоста (только пути и описания, БЕЗ значений)
Дата: 2026-09-30. Составил: часовой поток Simbiot Harness (t-260930061207-617c69). Правило: значения секретов в чат/файлы отчётов не выводятся — только пути и назначение.
1. Simbiot Harness (активный, владелец: харнес)
| Путь | Что | Права | Бэкап | Ротация |
|---|---|---|---|---|
/root/simbiot-harness/.env |
ROUTER_KEY, OPENROUTER_KEY, SIMBIOT_TG_TOKEN, SIMBIOT_TG_ALLOWED, ROUTER/OPENROUTER_BASE_URL | 600 | да (см. §6) | ROUTER_KEY — по политике 9router; TG-токен — при подозрении |
/etc/simbiot/dashboard.env |
SIMBIOT_DASH_TOKEN (страница + /api/state, порт 8765 открыт наружу 0.0.0.0). 02.10 сервис восстановлен: systemd-run --unit=simbiot-dashboard -p EnvironmentFile=/etc/simbiot/dashboard.env -p Restart=on-failure /root/simbiot-harness/venv/bin/python /root/simbiot-harness/harness/dashboard.py |
600 | да | при демобилизации дашборда |
git-история /root/simbiot-harness |
.env убран из трекинга (e6a99ce); 01.10 push в приватный репо https://git.cil.by/symbiot/simbiot-harness (3361b67..d39f60f): аудит — .env в истории отсутствует (0 коммитов), скан sk-/bot/rsh/Bearer по git log -p --all чист. Утечки не было. |
— | n/a | токен Forgejo symbiot (9f29709…) — admin-скоп, ротация при компрометации; в репо не хранить |
2. Наследие агента Гермес (живое, сервисы active)
| Путь | Что | Права | Примечание |
|---|---|---|---|
/root/.hermes/.env (+ .env.bak.tok-5673079687) |
~30 ключей: TELEGRAM_BOT_TOKEN/TOKEN, OLLAMA_API_KEY, KIE/KIMI_API_KEY, RESEND_API_KEY, X_* (OAuth Twitter, 8 шт: consumer/access/refresh/bearer), MATRIX_ACCESS_TOKEN, SIMPLEX_, 9ROUTER_CIL_API_KEY, HERMES_CUSTOM__API_KEY, 42admin-*, OIDC-токены профиля | 600 | .env.bak.* — тот же набор, дубликат ротации токена |
/root/.hermes/profiles/coop-group/.env |
TELEGRAM_BOT_TOKEN (групповой бот), KIMI/OLLAMA_API_KEY, 9ROUTER_CIL_API_KEY, HERMES_CUSTOM_ROUTER_CIL_BY_API_KEY | 600 | профиль кооп-чата |
/root/.hermes/config.yaml (+ 8 бэкапов config.yaml.bak.*) |
api_key у ~10 провайдеров (9router, ollama-cloud, kimi-coding, glm-coding, 9router-remote, 9router-cil…), password_hash, token_analytics | 600 | бэкапы копируют те же ключи |
/root/.hermes/auth.json |
credential_pool: kimi-coding, zai, openrouter, custom:9router(-remote/-cil), glm-coding, ollama-cloud, nous (OAuth client_id) | 600 | актуальный пул кредов LLM-провайдеров |
/root/.hermes/profiles/coop-group/auth.json |
тот же пул для профиля coop-group | 600 | |
/root/.hermes/chain-key.json |
приватный ключ блокчейна (address + private_key, кооп 42) | 600 | критично; бэкап обязателен, ротация невозможна без смены адреса |
/root/.hermes/harness-attest.json |
аттестационный чек (root/tx/files/bytes/ts) — не секрет | 600 | не бэкапить отдельно |
/root/.hermes/telegram_config.yaml |
token TG | 600 | |
/etc/systemd/system/hermes-api.service |
ADAPTER_KEYS inline (ключ доступа к локальному OpenAI-адаптеру) | 600 (было 644 — исправлено) | см. §5 рекомендация |
/root/hermes-api/.key |
ключ адаптера (тот же) | 600 | адаптер слушает только 127.0.0.1:9100 |
/root/.hermes/state.db (+ бэкапы /root/backups/hermes/state.db.*.bak.zst, 644, ротация 14) |
SQLite агента — внутри сессии/токены в истории | 600 | бэкапы содержат секреты, права нести в 600 |
3. Инфраструктура кооператива (/root, /opt)
| Путь | Что | Права | Примечание |
|---|---|---|---|
/root/coop/.env |
HETZNER_API_TOKEN, STRIPE_(LIVE/TEST)_KEY, STRIPE_WEBHOOK_SECRET, RESEND_API_KEY, HARNESS_TOKEN, TIME_REPORT_TOKEN, SALARY_CRON_TOKEN, STUDIO_ADMIN_KEY, LIVE_MONITOR_TOKEN, MAGIC_SEND_SECRET, GOOGLE_AI_KEY | 600 | ядро биллинга коопа |
/root/coop/.alfa_env (EnvironmentFile coop-portal.service) |
FORGEJO_PULL_TOKEN — scoped read-токен Forgejo (simbiot-agent-pull, read:repository): им simbiot-агенты клонируют /root/simbiot-harness с git.cil.by при деплое (simbiot_harness.py) | 600 | ротация: Forgejo → Settings → Applications → удалить и перевыпустить, обновить .alfa_env, рестарт coop-portal |
/root/rag/.env |
RAG_API_KEY (публичный сервис RAG) | 600 | |
/root/litellm/.env |
LITELLM_MASTER_KEY, ZAI/KIMI/OLLAMA_API_KEY ×4, POSTGRES_PASSWORD | 600 | |
/root/9router/.env |
JWT_SECRET, INITIAL_PASSWORD, API_KEY_SECRET, MACHINE_ID_SALT, OLLAMA_CLOUD_API_KEY | 600 (было 644 — исправлено) | сервис слушает 0.0.0.0:20128 |
/root/deip/.env |
DEIP_ADMIN_TOKEN, STRIPE_* (live+test+webhooks), RESEND_API_KEY, OLLAMA_API_KEY | 600 (было 644) | |
/root/jitsi/.env |
JICOFO/JVB/JIGASI XMPP-пароли, JIGASI_TRANSCRIBER_PASSWORD | 600 (было 644) | |
/root/cal-diy/.env |
CALCOM_DB_PASSWORD, NEXTAUTH_SECRET, CALENDSO_ENCRYPTION_KEY, SSO42_CLIENT_SECRET | 600 (было 644) | |
/root/chatwoot/.env |
POSTGRES/REDIS_PASSWORD, SECRET_KEY_BASE, C42_CLIENT_ID(+secret) | 600 (было 644) | |
/opt/documenso/.env |
POSTGRES_PASSWORD, NEXTAUTH_SECRET, NEXT_PRIVATE_ENCRYPTION_KEY ×2, SMTP_PASSWORD, OIDC_CLIENT_SECRET, SIGNING_PASSPHRASE | 600 | |
/opt/kan/.env |
POSTGRES_PASSWORD, BETTER_AUTH_SECRET, OIDC_CLIENT_SECRET | 600 | |
/opt/rallly/.env |
SECRET_PASSWORD, OIDC_CLIENT_SECRET, SMTP_PWD, POSTGRES_PASSWORD, S3_ACCESS_KEY_ID/SECRET, GARAGE_RPC_SECRET | 600 | |
/opt/espocrm/compose.yml |
inline: MARIADB_ROOT/USER_PASSWORD, ESPOCRM_ADMIN_PASSWORD (admin: alex), ESPOCRM_DATABASE_PASSWORD | 600 (было 644 — исправлено) | вынести в .env или secrets |
/opt/hermes-agent/.env |
OPENROUTER_API_KEY, GLM_API_KEY, TELEGRAM_BOT_TOKEN, KIMI_API_KEY | 600 (было 644) | |
/opt/apps/totem-platform/.env |
STRIPE_WEBHOOK_SECRET | 600 (было 644) | |
/opt/vexa/.env |
TRANSCRIPTION_SERVICE_TOKEN, пароли/ключи портов сервисов | 600 (было 644) | |
/root/docker-compose.openclaw.yml |
OPENCLAW_GATEWAY_PASSWORD inline в командной строке | 600 (было 644 — исправлено) | |
/root/.config/claude-code/env |
CLAUDE_CODE_OAUTH_TOKEN; router-env: ANTHROPIC_API_KEY (через 9router) | 600 | |
/root/.openclaw/credentials/ |
telegram-default-allowFrom.json, telegram-pairing.json | 600, dir 700 | |
/root/.docker/.token_seed |
seed docker-токенов | 600, dir 700 | |
/root/.config/gogcli/ |
gog-credentials (OAuth google) | 600 | |
~/.ssh |
пусто — приватных SSH-ключей пользователя нет | — | |
/etc/ssh/ssh_host_*_key |
host-ключи сервера | 600 | бэкапить при DR |
systemd simbiot-*.service |
секретов нет (токены в .env/dash-env) | 644 |
4. Отсутствует / не найдено
~/.ssh/— нет ни приватных ключей, ни known_hosts: доступ наружу по SSH не хранится./root/.git-credentials,.netrc,.pypirc— нет./etc/docker/— нет registry-секретов (auths пуст).- Bitwarden-интеграция в
config.yaml(secrets.bitwarden) — disabled, пароль-менеджер не подключён. - crontab
/root/coop/scripts/*— inline-секретов нет (ключи тянутся из .env coop).
5. Рекомендации
- Права: исправлено в этом тике — 11 файлов с 644→600 (espocrm compose, hermes-agent, 9router, deip, jitsi, cal-diy, chatwoot, openclaw, totem-platform, vexa, hermes-api.service). На хосте есть не-root юзер
swarm(uid 1000, bash) — мир-читаемые секреты были ему доступны. - systemd с inline-секретами (
hermes-api.service, openclaw): перенести вEnvironmentFile=с правами 600. - git-история харнеса:
.envс ROUTER_KEY+SIMBIOT_TG_TOKEN в коммитах 6236044/2f758bb. Репо без remote → утечки не было. Перед push:git filter-repo --path .env --invert-paths(или ротация обоих ключей). - Бэкап state.db (
/root/backups/hermes/) содержит сессии/креды: chmod 600 на*.bak.zstи добавить в скриптumask 077. - Экспозиция: dashboard 8765 и 9router 20128 слушают 0.0.0.0 — dashboard за токеном (ок), 9router — проверить firewall/привязку, JWT_SECRET и API_KEY_SECRET живут в его .env.
- Куда выгрузить копию (реестр+значения):
- зашифрованный архив возрастом/age:
age -r <public-key> secrets.tar.age→ выгрузить в S3 Garage (уже есть S3_ACCESS_KEY_ID у rallly) или Hetzner Storage Box; - preferable: поднять Bitwarden Secrets Manager — интеграция уже есть в конфиге Гермеса (
secrets.bitwarden.enabled: false→ true), это даёт центральное хранение + ротацию + TTL; - критичный минимум для DR: chain-key.json (приватный ключ коопа), coop/.env (Stripe live + Hetzner), .hermes/.env (X OAuth refresh-токены невосстановимы!), hermes-api adapter key.
- зашифрованный архив возрастом/age:
- Ротация: X_OAUTH2_USER_REFRESH_TOKEN — одноразовый по природе, копию держать обязательно; STRIPE_LIVE_KEY + HETZNER_API_TOKEN — ротация раз в 90 дней; ADAPTER_KEYS — сменить и разнести по файлу (см. п.2).
6. Хранение этого реестра
Сам реестр значений не содержит и безопасен в git. Значения секретов в него не заносить.