Files
infrastructure/CLAUDE.md
T
maximilion96 c254bd03fe Add CLAUDE.md with infrastructure overview
Документирует серверы, сервисы из docker-compose и конвенцию
«одна папка на сервер» для конфигов развёртывания.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-13 00:18:25 +03:00

4.7 KiB
Raw Blame History

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.