c254bd03fe
Документирует серверы, сервисы из docker-compose и конвенцию «одна папка на сервер» для конфигов развёртывания. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
62 lines
4.7 KiB
Markdown
62 lines
4.7 KiB
Markdown
# Personal Infrastructure
|
||
|
||
Репозиторий моей личной инфраструктуры. Всё разворачивается через Docker (предпочтительный метод), конфиги хранятся в этом репо.
|
||
|
||
## Серверы
|
||
|
||
| IP | Локация | Роль |
|
||
|---|---|---|
|
||
| `111.88.253.112` | Yandex Cloud | Основной сервер — все основные сервисы (n8n, gitea, traefik, portainer, postgres, redis, xray, mtg) |
|
||
| `62.84.114.137` | Yandex Cloud | Входная нода VPN (3x-ui) |
|
||
| `94.247.214.20` | Нидерланды | Реверс-прокси для n8n (принимает SSH-туннель с основного сервера) |
|
||
| `94.247.214.112` | Нидерланды | Выходная нода VPN (3x-ui) |
|
||
|
||
## Структура репозитория
|
||
|
||
Всё, что нужно для развёртывания, хранится в этом репо. Под каждый сервер — отдельная папка верхнего уровня со всеми его конфигами, compose-файлами, артефактами и т.п.
|
||
|
||
| Папка | Сервер | Назначение |
|
||
|---|---|---|
|
||
| `docker/` | `111.88.253.112` | Основной сервер (текущее содержимое) |
|
||
| _tbd_ | `62.84.114.137` | Входная нода VPN |
|
||
| _tbd_ | `94.247.214.20` | NL реверс-прокси для n8n |
|
||
| _tbd_ | `94.247.214.112` | Выходная нода VPN |
|
||
|
||
Папки для остальных серверов добавим по мере того, как будем переносить туда конфиги. Имена папок — по роли сервера (например, `vpn-entry/`, `nl-proxy/`, `vpn-exit/`), не по IP.
|
||
|
||
Правило: если сервис где-то крутится — его конфиг должен лежать в папке соответствующего сервера в этом репо. Никаких «живёт только на сервере» артефактов.
|
||
|
||
## Сервисы основного сервера (`docker/docker-compose.yml`)
|
||
|
||
Развёрнуты на `111.88.253.112`:
|
||
|
||
- **traefik** — реверс-прокси + Let's Encrypt, слушает 80/443, маршрутизирует по Host-меткам.
|
||
- **postgres** (16-alpine) — общая БД для n8n и gitea.
|
||
- **redis** (7-alpine) — кэш и очередь Bull для n8n.
|
||
- **n8n** — автоматизация. HTTP(S)_PROXY через `xray` для обхода блокировок. Публикуется по `${N8N_HOST}` через traefik, а также пробрасывается SSH-туннелем (`tunnel` сервис) на `94.247.214.20:5678` для внешнего доступа через NL-реверс-прокси.
|
||
- **tunnel** (autossh) — обратный SSH-туннель `-R` на `94.247.214.20`, пользователь `tunnel`, ключ в `./ssh/tunnel_key`.
|
||
- **xray** — исходящий прокси для n8n (порт 8080 во внутренней сети).
|
||
- **gitea** — git-хостинг, БД в общем postgres (`gitea`/`gitea`), SSH на хосте проброшен на `222`.
|
||
- **portainer** — UI для управления docker.
|
||
- **mtg** — Telegram MTProto-прокси с fake TLS, проксируется через traefik TCP по SNI `${MTG_FAKE_TLS_HOST}`.
|
||
|
||
Сети: `proxy` (внешний трафик через traefik) и `internal` (между сервисами и БД).
|
||
|
||
## VPN
|
||
|
||
Входная (`62.84.114.137`) и выходная (`94.247.214.112`) ноды — оба на **3x-ui**. На основном сервере отдельно крутится **xray** как исходящий прокси для n8n и **mtg** как Telegram-прокси.
|
||
|
||
## Конфиги в репо
|
||
|
||
- `docker/docker-compose.yml` — основной compose.
|
||
- `docker/.env` — переменные (`*_HOST`, пароли, `N8N_ENCRYPTION_KEY`, `ACME_EMAIL`, `TIMEZONE`). Не коммитить секреты.
|
||
- `docker/xray/config.json` — конфиг xray-клиента.
|
||
- `docker/mtg/config.toml` — конфиг mtg.
|
||
- `docker/ssh/tunnel_key` — приватный ключ для autossh-туннеля (не в git).
|
||
|
||
## Конвенции
|
||
|
||
- Новые сервисы добавляем в `docker/docker-compose.yml`, публикуем через traefik с метками `traefik.http.routers.<name>.*` и хостом из `.env`.
|
||
- Внутренние сервисы — только в сети `internal`, публичные — в `proxy` (или в обеих, если нужен доступ к БД).
|
||
- Секреты — через `.env`, не хардкодить в compose.
|