Files
vps-server-01/VPS/PROJECT_STATE.md
T
administrator e7667fe801 First
2026-06-21 20:30:44 +03:00

6.5 KiB
Raw Blame History

VPS nao-kvn.ru — состояние проекта (компактно)

Стартовый контекст для нового чата. Только текущее состояние. Секреты — в файлах на VPS, не здесь.

Доступ

Цель

Личный VPS: Portainer (управление Docker), Uptime Kuma (мониторинг доступности сервисов по трём площадкам с белыми IP — ДК «Арктика», Архангельскстат Нарьян-Мар, дом), Vaultwarden (пароли). Всё защищено и с проверенным многокопийным бэкапом.

Серверы и роли

  • VPS 45.91.8.169 (box-938039): Ubuntu 24.04 LTS, KVM, 1 vCPU / 961 MiB RAM / 20 ГБ, swap 2 ГБ, MSK, тариф 400₽. Несёт Docker-стек, WireGuard-клиент, бэкапы. RAM в обрез (~0.5/0.96 ГБ занято).
  • Дом — Keenetic Hopper KN-3811: белый IP 91.122.209.x, WireGuard-сервер, SMB-сервер (USB-диск, шара TOSHIBA EXT, юзер only_vps), LAN 172.16.0.0/24 (SMB-хост 172.16.0.1).

Архитектура

Один Compose-стек. Caddy — единственный публичный вход (80/443), авто-HTTPS Let's Encrypt. Остальные контейнеры портов на хост не публикуют — только в сети core_proxy, Caddy проксирует по имени контейнера. Portainer и Uptime Kuma — за Caddy basic-auth; Vaultwarden публичен (своя авторизация). SMB-офсайт — через WG-туннель VPS→Keenetic (порт 445 в интернет не выставлен).

Сервисы (стек /opt/docker/core, сеть core_proxy, restart: unless-stopped)

Сервис Образ Порт Доступ
caddy caddy:2 80/443 proxy + TLS
portainer portainer/portainer-ce:lts 9000 portainer.nao-kvn.ru, basic-auth
uptime-kuma louislam/uptime-kuma:1 3001 status.nao-kvn.ru, basic-auth
vaultwarden vaultwarden/server:latest 80 vault.nao-kvn.ru, публичный

Vaultwarden: DOMAIN=https://vault.nao-kvn.ru, SIGNUPS_ALLOWED=false, ADMIN_TOKEN задан. Portainer-админ: administrator. Volumes: core_{caddy_data,caddy_config,portainer_data,uptime_data,vaultwarden_data}.

Безопасность

  • HTTPS везде; наружу только 80/443 (Caddy).
  • Caddy basic-auth (логин admin, bcrypt) перед Portainer и Uptime Kuma (сниппет (protected)).
  • Vaultwarden: регистрация закрыта.
  • UFW: входящие закрыты, разрешён только SSH (22, v4+v6); 80/443 ведёт Docker. fail2ban на SSH (бан через UFW).
  • SSH: только ключ, пароль отключён, root prohibit-password (/etc/ssh/sshd_config.d/00-hardening.conf).
  • Docker-логи лимитированы (10 МБ × 3). SMB доступен только через приватный WG.

DNS / TLS

  • Домен nao-kvn.ru. A-записи → 45.91.8.169: portainer, status, vault.
  • Caddy авто-выпускает/продлевает Let's Encrypt (TLS-ALPN-01) для трёх поддоменов; сертификаты в core_caddy_data.

Бэкап (Vaultwarden)

  • Скрипт /usr/local/bin/vw-backup.sh: консистентный снимок БД sqlite3 .backup + rsa_key*/config/attachments/sendstar.gz.
  • Три копии: (1) локально /opt/backups/vaultwarden (14 шт.); (2) Google Drive gdrive:vaultwarden-backups/ — обязательная, 90 дн; (3) домашний SMB homesmb:TOSHIBA EXT/vaultwarden-backups/ — best-effort (не валит бэкап при недоступности дома), 90 дн.
  • Восстановление проверено фактически (integrity ok, аккаунт + записи + rsa_key на месте).
  • Расписание: systemd vw-backup.timer, ежедневно 03:30 MSK, Persistent.
  • rclone-remotes: gdrive (scope drive.file), homesmb (smb, 172.16.0.1, only_vps).
  • WG: wg-quick@wg0 enabled, VPS 10.0.0.5, Keenetic 10.0.0.1, маршрут на 172.16.0.0/24.

Мониторинг

Uptime Kuma развёрнут (status.nao-kvn.ru, basic-auth + свой логин, админ создан). Мониторы и уведомления ещё НЕ настроены — главная функциональная недоделка. Telegram отвергнут (массовые блокировки в РФ с весны 2026); планируется ntfy (self-hosted) или email.

Пакеты

Docker CE 29.6.0 / containerd 2.2.5 / compose; sqlite3; rclone (с SMB-бэкендом); wireguard-tools; smbclient; fail2ban; ufw.

Открытые задачи

  1. Уведомления: поднять ntfy (self-hosted, ntfy.nao-kvn.ru через Caddy) или email в Uptime Kuma.
  2. Мониторы по трём площадкам: ping шлюзов + TCP/HTTP ключевых сервисов; группы «Арктика / Архангельскстат / Дом»; повесить уведомления.
  3. Перенести пароли из бумажного блокнота в Vaultwarden (бэкап проверен — безопасно), затем уничтожить блокнот.

Известные риски

RAM в обрез (апгрейд до 2 ГБ при расширении); мониторинг не введён в строй (нет оповещений при сбое); ADMIN_TOKEN открытым текстом в compose; SMB-копия зависит от доступности дома; один VPS — единая точка отказа по аптайму.

Принципы работы

Продакшен-аккуратность: для рискованных изменений сначала проверка, потом применение, с путём отката; по одному шагу за раз с подтверждением; в multi-step процедурах шаги не объединять.