Files
vps-server-01/.claude/memory/project_vps_state.md
T
2026-06-21 21:30:07 +03:00

75 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: project-vps-state
description: "Полное состояние VPS nao-kvn.ru — архитектура, сервисы, безопасность, бэкап, доступ"
metadata:
node_type: memory
type: project
originSessionId: 2f046c73-11b0-4c4c-b2ed-132762fcae8c
---
# 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`, LAN `172.16.0.0/24`
- WG: VPS `10.0.0.5`, Keenetic `10.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/](VPS/configs/) — все конфиги (Caddyfile, docker-compose.yml, wg0.conf, sshd, daemon.json, fail2ban)
- [VPS/scripts/vw-backup.sh](VPS/scripts/vw-backup.sh) — скрипт бэкапа
- [VPS/OPERATIONS_RUNBOOK.md](VPS/OPERATIONS_RUNBOOK.md) — операционные процедуры
- [VPS/TODO.md](VPS/TODO.md) — открытые задачи
- [vps-nao-kvn-state.md](vps-nao-kvn-state.md) — детальный state-документ
**Why:** Личный VPS для управления контейнерами (Portainer), мониторинга доступности трёх площадок с белыми IP (ДК «Арктика», Архангельскстат Нарьян-Мар, дом) и хранения паролей (Vaultwarden).
**How to apply:** При работе с VPS — читать этот файл для контекста. Проверять актуальность подключившись по SSH.