infra/docs/STATUS.md
jack 66b70827df
Some checks failed
CI/CD / syntax-check (push) Successful in 1m31s
CI/CD / deploy (push) Has been cancelled
chore: full project cleanup + documentation
Syncthing removal (was already decided, now fully removed):
- roles/base/tasks/firewall.yml: remove 3 UFW rules (ports 22000/21027)
- inventory/group_vars/all/main.yml: remove domain_sync, domain_mon, syncthing_basic_auth_htpasswd
- roles/services/templates/env.j2: remove DOMAIN_SYNC
- roles/services/templates/authelia/configuration.yml.j2: remove Syncthing 2FA rule
- roles/services/tasks/directories.yml: remove syncthing/config and syncthing/data dirs
- roles/services/defaults/main.yml: remove syncthing_image
- roles/services/tasks/main.yml: remove syncthing image pull

Security hardening:
- inventory/group_vars/all/main.yml: move cloudflare_zone_id to vault
- inventory/group_vars/all/vault.yml: add vault_cloudflare_zone_id

.gitignore improvements:
- add *.env, acme.json, *.log, editor dirs, venv, temp files

Documentation (new):
- docs/STATUS.md: all services, servers, known issues
- docs/BACKLOG.md: prioritized task list, done/todo
- docs/DECISIONS.md: architecture decisions and rationale
- CLAUDE.md: rewritten with read-first docs, rules, full arch reference

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 19:58:12 +07:00

4.6 KiB
Raw Blame History

Статус инфраструктуры

Обновляй этот файл при каждом значимом изменении. Последнее обновление: 2026-03-22


Серверы

Сервер IP Роль Состояние
main 87.249.49.32 Основные сервисы + мониторинг Работает
tools 85.193.83.9 Wiki + автоматизация + почта Работает

Сервисы

Основной сервер (main, 87.249.49.32)

Сервис Домен Статус Заметки
Traefik Реверс-прокси, TLS wildcard *.csrx.ru через Cloudflare DNS-01
Vaultwarden vault.csrx.ru Менеджер паролей
Forgejo git.csrx.ru Git-сервер, SSH на порту 2222
Forgejo Actions CI/CD runner, деплой через push в master
Plane plane.csrx.ru Управление проектами
Grafana dash.csrx.ru Дашборды мониторинга (нет DNS-записи — нужно добавить A→87.249.49.32)
Prometheus Сбор метрик, 30 дней хранения
Loki + Promtail Сбор логов
AlertManager Алерты в Telegram
CrowdSec IDS, банит злоумышленников
Authelia auth.csrx.ru 2FA SSO, защищает traefik dashboard и plane/god-mode
Uptime Kuma status.csrx.ru Публичная страница статуса
Бэкап Каждый час → S3 cold visual-backup/data/

Tools-сервер (tools, 85.193.83.9)

Сервис Домен Статус Заметки
Outline wiki.csrx.ru Wiki, аутентификация через email magic link
n8n n8n.csrx.ru Автоматизация workflow
docker-mailserver mail.csrx.ru Postfix + Dovecot, порты 25/465/587/993
SnappyMail webmail.csrx.ru Веб-клиент почты

Почта (@csrx.ru)

Аккаунт Назначение
noreply@csrx.ru Системные письма (Outline magic link)
admin@csrx.ru Администратор
jack@csrx.ru Личный

DNS-записи для почты:

  • A mail.csrx.ru → 85.193.83.9
  • MX csrx.rumail.csrx.ru (priority 10)
  • TXT csrx.ruv=spf1 mx ~all
  • TXT _dmarc.csrx.ruv=DMARC1; p=quarantine; rua=mailto:admin@csrx.ru
  • TXT mail._domainkey.csrx.ru → DKIM-ключ (генерируется автоматически при первом деплое)

CI/CD

  • Репозиторий: git.csrx.ru/jack/infra
  • Триггер: push в master запускает ansible-playbook playbooks/deploy.yml + playbooks/tools.yml
  • Runner: act_runner на основном сервере
  • Правило: все изменения только через git, никаких ручных правок на сервере

Известные проблемы

Проблема Статус
Нет DNS-записи для dash.csrx.ru ⚠️ Нужно добавить в Cloudflare вручную: A dash → 87.249.49.32
Tools-сервер не бэкапится ⚠️ outline-db и n8n не входят в скрипт бэкапа
Tools-сервер вне мониторинга ⚠️ Prometheus не скрейпит tools-сервер

Сети Docker

Основной сервер

  • proxy — публичная, только для Traefik (нужна для ACME)
  • backend — internal, Traefik ↔ сервисы
  • forgejo-db — internal, Forgejo ↔ PostgreSQL
  • forgejo-ssh — публичная, для SSH-клиентов
  • plane-internal — internal, все компоненты Plane
  • runner-jobs — публичная, для job-контейнеров CI/CD
  • monitoring — internal, стек мониторинга
  • authelia-internal — internal, Authelia ↔ Redis

Tools-сервер

  • front — публичная, для port binding хоста
  • outline-internal — internal, Outline ↔ DB ↔ Redis
  • n8n-internal — internal, n8n изоляция
  • mail-internal — internal, Outline → mailserver (SMTP без auth)
  • webmail-internal — internal, SnappyMail изоляция