4.8 KiB
4.8 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project-vps-state | Полное состояние VPS nao-kvn.ru — архитектура, сервисы, безопасность, бэкап, доступ |
|
VPS nao-kvn.ru — текущее состояние
Доступ
- SSH:
ssh root@45.91.8.169— только ed25519-ключ (Manjaro~/.ssh/id_ed25519, с passphrase), пароль отключён. - Стек:
/opt/docker/core/(docker-compose.yml+caddy/Caddyfile) - Сервисы: https://vault.nao-kvn.ru, https://portainer.nao-kvn.ru, https://status.nao-kvn.ru
- ТЗ VPS: MSK
Сервер
- IP
45.91.8.169, хостbox-938039, Ubuntu 24.04 LTS, KVM - 1 vCPU, 961 MiB RAM, 20 ГБ диск, swap 2 ГБ, тариф 400₽/мес
- RAM в обрез: ~0.5 ГБ занято из 0.96 ГБ
Архитектура
- Один Compose-стек в
/opt/docker/core, сетьcore_proxy - Caddy — единственная публичная точка входа (80/443), авто-HTTPS Let's Encrypt
- Остальные контейнеры на хост портов не публикуют — только через Caddy по имени контейнера
- WireGuard-туннель VPS→Keenetic для домашнего SMB (445 в интернет не выставлен)
Сервисы
| Сервис | Образ | Доступ |
|---|---|---|
| caddy | caddy:2 | proxy + TLS, 80/443 на хост |
| portainer | portainer/portainer-ce:lts | portainer.nao-kvn.ru, basic-auth |
| uptime-kuma | louislam/uptime-kuma:1 | status.nao-kvn.ru, basic-auth |
| vaultwarden | vaultwarden/server:latest | vault.nao-kvn.ru, публичный |
Volumes: core_{caddy_data,caddy_config,portainer_data,uptime_data,vaultwarden_data}
Безопасность
- HTTPS везде; UFW: только SSH разрешён; 80/443 управляет Docker через iptables
- Caddy basic-auth (логин
admin, bcrypt) перед Portainer и Uptime Kuma — сниппет(protected) - Vaultwarden:
SIGNUPS_ALLOWED=false,ADMIN_TOKENзадан (открытым текстом в compose — известный компромисс) - SSH:
PasswordAuthentication no,PermitRootLogin prohibit-password, конфиг/etc/ssh/sshd_config.d/00-hardening.conf - fail2ban на SSH (banaction = ufw); docker-логи лимитированы 10МБ×3
Домашний роутер Keenetic Hopper KN-3811
- Белый IP
91.122.209.x(реальный endpoint в/etc/wireguard/wg0.confна VPS) - WireGuard-сервер; SMB-шара
TOSHIBA EXT, юзерonly_vps, LAN172.16.0.0/24 - WG: VPS
10.0.0.5, Keenetic10.0.0.1, маршрут172.16.0.0/24,PersistentKeepalive=25
Бэкап Vaultwarden
- Скрипт
/usr/local/bin/vw-backup.sh: sqlite3.backup+ rsa_key*/config.json/attachments/sends → tar.gz - 3 копии: (1) локально
/opt/backups/vaultwarden/14 шт.; (2)gdrive:vaultwarden-backups/90 дн.; (3)homesmb:TOSHIBA EXT/vaultwarden-backups/best-effort 90 дн. - Расписание:
vw-backup.timer, ежедневно 03:30 MSK, Persistent=true - rclone-remotes:
gdrive(scope drive.file),homesmb(smb, 172.16.0.1, only_vps) - Восстановление проверено фактически: integrity_check ok, аккаунт + записи + rsa_key на месте
DNS
- Домен
nao-kvn.ru. A →45.91.8.169: portainer, status, vault - TLS-ALPN-01 валидация, сертификаты в
core_caddy_data
Пакеты
Docker CE 29.6.0 / containerd 2.2.5; sqlite3; rclone (SMB-бэкенд); wireguard-tools; smbclient; fail2ban; ufw
Репозиторий проекта
/mnt/Dick_E/Projects/vps-server-01/
- VPS/configs/ — все конфиги (Caddyfile, docker-compose.yml, wg0.conf, sshd, daemon.json, fail2ban)
- VPS/scripts/vw-backup.sh — скрипт бэкапа
- VPS/OPERATIONS_RUNBOOK.md — операционные процедуры
- VPS/TODO.md — открытые задачи
- vps-nao-kvn-state.md — детальный state-документ
Why: Личный VPS для управления контейнерами (Portainer), мониторинга доступности трёх площадок с белыми IP (ДК «Арктика», Архангельскстат Нарьян-Мар, дом) и хранения паролей (Vaultwarden). How to apply: При работе с VPS — читать этот файл для контекста. Проверять актуальность подключившись по SSH.