# fr1 — `fr1.ruzzy.dev` (161.97.93.252) Снимок состояния сервера. Секреты (пароли/токены) — только на сервере, не здесь. **Провайдер:** Contabo VPS · France / Lauterbourg (Grand Est) **ОС:** Ubuntu 24.04 LTS · kernel 6.8.0-106-generic **Ресурсы:** 8 vCPU / 23 GB RAM / 387 GB **hostname:** `fr1` (FQDN `fr1.ruzzy.dev` через `/etc/hosts`) --- ## Пользователи и доступ - Пользователь `rus` (uid 1000, группы `rus`, `sudo`, `users`), sudo по паролю. - Вход с Mac: `ssh rus-161` (алиас в `~/.ssh/config`) → ключ `~/.ssh/id_161_97_93_252` (ed25519). - root-доступ по SSH закрыт; для root изнутри — `sudo -i`. ## SSH (`/etc/ssh/sshd_config.d/00-hardening.conf`) ``` PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes KbdInteractiveAuthentication no ChallengeResponseAuthentication no MaxAuthTries 3 AllowUsers rus ``` Через socket-activation (`ssh.socket`). ## DNS - Зона `ruzzy.dev` — Namecheap (NS `dns1/dns2.registrar-servers.com`). - `fr1.ruzzy.dev` A → 161.97.93.252. - PTR (reverse DNS): дефолтный `vmi3387709.contaboserver.net` (не менялся). ## Firewall (ufw) - Default: deny incoming, allow outgoing. - Открыто: `22/tcp`, `80/tcp`, `443/tcp` (IPv4 + IPv6). ## fail2ban (`/etc/fail2ban/jail.local`) ``` [DEFAULT] bantime=1h findtime=10m maxretry=5 ignoreip = 127.0.0.1/8 ::1 31.153.37.106 backend=systemd banaction=ufw [sshd] enabled=true [recidive] enabled=true bantime=1w findtime=1d maxretry=5 backend=auto logpath=/var/log/fail2ban.log ``` ## Обновления - Ubuntu Pro подключён (аккаунт ruzzyrullezz@gmail.com): **livepatch**, **esm-infra**, **esm-apps** — enabled. - unattended-upgrades: `Update-Package-Lists "1"`, `Unattended-Upgrade "1"` (ежедневно, security). Авто-reboot выключен. ## Система - swap: `/swapfile` 2 GB (в `/etc/fstab`), `vm.swappiness=10` (`/etc/sysctl.d/99-swappiness.conf`). - journald: `Storage=persistent`, `SystemMaxUse=500M`. - AppArmor включён; время — systemd-timesyncd. ## Docker - Docker 29.6 + Compose v5.1 (официальный репозиторий). `rus` в группе docker. ## nginx + TLS - nginx 1.24 (apt) + certbot 2.9 (`python3-certbot-nginx`), автопродление через systemd-таймер certbot. - vhost `/etc/nginx/sites-available/mon.ruzzy.dev.conf` → проксирует на Grafana (`127.0.0.1:3000`), HTTPS-редирект, websocket. ## Мониторинг (`~/monitoring`, stack в репо `stacks/monitoring/`) - Стек: **Prometheus + Grafana + node-exporter + cAdvisor** (docker compose). - Prometheus: retention 90d, слушает `127.0.0.1:9090`. Скрейпит node-exporter + cadvisor (job'ы `node`/`cadvisor`, instance `fr1`). - Grafana: `127.0.0.1:3000`, доступ снаружи через **https://mon.ruzzy.dev** (nginx + Let's Encrypt). Datasource Prometheus (uid `prometheus`) и дашборды (Node Exporter Full, cAdvisor, папка Infra) провижатся автоматически. Пароль admin — в `~/monitoring/docker-compose.yml` на сервере (в репо вынесен в `${GF_ADMIN_PASSWORD}`). - **Multi-server:** таргеты через file_sd (`prometheus/targets/{node,cadvisor}/*.yml`) — новый сервер = добавить файл + `curl -X POST .../-/reload`. См. `stacks/monitoring/README.md`. - DNS: `mon.ruzzy.dev` → 161.97.93.252. - Планируется: VPN-экспортёры (wireguard/openvpn/telemt) + подключение `de1` по туннелю. ## Telegram-уведомления - Бот @ultimate_log_bot. Конфиг `/etc/tg-notify.conf` (chmod 600, токен+chat_id — секрет на сервере). - `/usr/local/bin/tg-notify.sh "msg"` — универсальная отправка (HTML, префикс hostname). - `/usr/local/bin/uu-telegram-report.sh` — сводка автообновлений + reboot-required; повешен на `apt-daily-upgrade.service` через drop-in `/etc/systemd/system/apt-daily-upgrade.service.d/telegram.conf` (`ExecStartPost`). Молчит, если нечего сообщать. ## Установленные пакеты (сверх базы) htop, mtr-tiny, tmux, vim, curl, wget, git, unzip, net-tools, dnsutils, ncdu, rsync, fail2ban, unattended-upgrades.