После прочтения Claude
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
# MEMORY — VPS nao-kvn.ru
|
||||||
|
|
||||||
|
- [Состояние VPS](project_vps_state.md) — архитектура, сервисы, безопасность, бэкап, доступ, репозиторий
|
||||||
|
- [Открытые задачи](project_open_tasks.md) — мониторинг (P1, не сделан), пароли (P2), известные риски
|
||||||
|
- [Принципы работы](feedback_working_principles.md) — пошаговость, подтверждения, без объединения шагов
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
name: feedback-working-principles
|
||||||
|
description: "Принципы работы с VPS — осторожность, пошаговость, откат"
|
||||||
|
metadata:
|
||||||
|
node_type: memory
|
||||||
|
type: feedback
|
||||||
|
originSessionId: 2f046c73-11b0-4c4c-b2ed-132762fcae8c
|
||||||
|
---
|
||||||
|
|
||||||
|
# Принципы работы с этим проектом
|
||||||
|
|
||||||
|
Продакшен-аккуратность: для рискованных изменений сначала проверка, затем применение, с путём отката.
|
||||||
|
|
||||||
|
- По одному шагу за раз, с ожиданием подтверждения перед следующим.
|
||||||
|
- В multi-step процедурах шаги **не объединять** — выполнять последовательно.
|
||||||
|
- Перед применением изменений на VPS — сначала проверить, что делаем; потом применять.
|
||||||
|
|
||||||
|
**Why:** VPS в проде, сервисы живые (Vaultwarden с паролями). Цена ошибки высокая.
|
||||||
|
**How to apply:** Любое изменение на сервере — сначала описать план, дождаться подтверждения, затем выполнять по одному шагу.
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
name: project-open-tasks
|
||||||
|
description: "Незакрытые задачи проекта VPS — мониторинг, уведомления, пароли"
|
||||||
|
metadata:
|
||||||
|
node_type: memory
|
||||||
|
type: project
|
||||||
|
originSessionId: 2f046c73-11b0-4c4c-b2ed-132762fcae8c
|
||||||
|
---
|
||||||
|
|
||||||
|
# Открытые задачи — VPS nao-kvn.ru
|
||||||
|
|
||||||
|
## Приоритет 1 — Мониторинг (исходная цель проекта, ещё не достигнута)
|
||||||
|
|
||||||
|
**Канал уведомлений:** Telegram **отвергнут** (массовые блокировки/тротлинг в РФ с весны 2026).
|
||||||
|
- Вариант A: **ntfy** self-hosted (`ntfy.nao-kvn.ru` через Caddy) — приоритетный под РФ, лёгкий
|
||||||
|
- Вариант B: email (SMTP)
|
||||||
|
|
||||||
|
**Мониторы в Uptime Kuma** (развёрнут, но пустой):
|
||||||
|
- ping белых IP/шлюзов трёх площадок (отличать «упала площадка» от «упал сервис»)
|
||||||
|
- TCP/HTTP-проверки ключевых сервисов
|
||||||
|
- Группы: «Арктика / Архангельскстат / Дом»
|
||||||
|
- Подвесить уведомления на мониторы
|
||||||
|
|
||||||
|
## Приоритет 2
|
||||||
|
- Перенести пароли из бумажного блокнота в Vaultwarden (бэкап проверен — безопасно), затем уничтожить блокнот
|
||||||
|
|
||||||
|
## Опционально
|
||||||
|
- `live-restore` в daemon.json (апдейты Docker без падения контейнеров)
|
||||||
|
- Периодический `docker system prune` по расписанию
|
||||||
|
- Апгрейд тарифа до 2 ГБ RAM при добавлении сервисов
|
||||||
|
|
||||||
|
## Известные риски
|
||||||
|
- RAM в обрез (~0.5/0.96 ГБ) — любой тяжёлый сервис потребует апгрейда
|
||||||
|
- Нет рабочего мониторинга → сбои на площадках не оповещают (главная функциональная дыра)
|
||||||
|
- `ADMIN_TOKEN` Vaultwarden открытым текстом в compose (приемлемо, but known risk)
|
||||||
|
- SMB-копия зависит от доступности дома (by design best-effort)
|
||||||
|
- Один VPS — единая точка отказа по аптайму
|
||||||
|
|
||||||
|
**Why:** Мониторинг — исходная цель всего проекта. Uptime Kuma развёрнут, но без мониторов и уведомлений цель не достигнута.
|
||||||
|
**How to apply:** При новой сессии — начинать отсюда. Первый шаг всегда: выбор канала уведомлений (ntfy vs email).
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
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.
|
||||||
Reference in New Issue
Block a user