commit 8e632558ac8eabdbd74140676a9de6e04551509b Author: Ruslan Gilfanov Date: Sun Jun 21 18:17:14 2026 +0300 infra: базовая структура + состояние fr1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..63af063 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.env +*.key +*.pem +secrets/ diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..d68c610 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,8 @@ +# infra + +Описание состояния серверов. + +## Серверы +- [`servers/fr1.md`](servers/fr1.md) — Contabo, France (`fr1.ruzzy.dev`). + +Секреты (пароли, токены) в репозитории не хранятся — только на серверах. diff --git a/servers/fr1.md b/servers/fr1.md new file mode 100644 index 0000000..19d4079 --- /dev/null +++ b/servers/fr1.md @@ -0,0 +1,31 @@ +# fr1 — `fr1.ruzzy.dev` (161.97.93.252) + +**Провайдер:** Contabo VPS · France / Lauterbourg +**ОС:** Ubuntu 24.04 LTS · 8 vCPU / 23 GB RAM / 387 GB +**hostname:** `fr1` + +## Доступ +- `ssh rus-161` (алиас в `~/.ssh/config`) → пользователь `rus`, ключ `~/.ssh/id_161_97_93_252`. +- root по SSH отключён; вход по паролю отключён; `AllowUsers rus`. +- sudo у `rus` по паролю. + +## DNS +- Зона `ruzzy.dev` на Namecheap. +- `fr1.ruzzy.dev` A → 161.97.93.252. + +## Безопасность +- SSH: key-only, root off, `MaxAuthTries 3`, `AllowUsers rus` (`/etc/ssh/sshd_config.d/00-hardening.conf`). +- ufw: deny incoming; открыты 22, 80, 443/tcp. +- fail2ban: jails `sshd` + `recidive`, `banaction=ufw`, рабочий IP в `ignoreip` (`/etc/fail2ban/jail.local`). +- Ubuntu Pro attached: Livepatch + esm-infra + esm-apps. +- unattended-upgrades включены (security, ежедневно), авто-reboot выключен. + +## Система +- swap 2 GB (`/swapfile`), `vm.swappiness=10`. +- journald: `Storage=persistent`, лимит 500M. +- AppArmor включён, время через systemd-timesyncd. + +## Telegram-уведомления +- Бот @ultimate_log_bot. Конфиг `/etc/tg-notify.conf` (600, секрет на сервере). +- `/usr/local/bin/tg-notify.sh` — отправка сообщений. +- `/usr/local/bin/uu-telegram-report.sh` на `apt-daily-upgrade.service` (ExecStartPost) — сводка автообновлений и reboot-required.