Files
gotosocial/docker-compose.yml
T

94 lines
4.8 KiB
YAML
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.
services:
gotosocial:
# Фиксированный тег стабильного релиза (обновление — вручную)
# ВНИМАНИЕ: теги GtS БЕЗ префикса v (0.22.1, не v0.22.1)
image: superseriousbusiness/gotosocial:0.22.1
container_name: gotosocial
restart: unless-stopped
# uid/gid пользователя estorozhenko на bigbox
user: "1000:1000"
environment:
# Окружение процесса GtS
TZ: Europe/Moscow
# Docker-образ GtS конфигурируется ТОЛЬКО через GTS_* env
# (config.yaml в образе не подхватывается — «host must be set»)
# Split-domain: сервер на social.dedinit.ru, аккаунты @user@dedinit.ru
GTS_HOST: "social.dedinit.ru"
GTS_ACCOUNT_DOMAIN: "dedinit.ru"
GTS_PROTOCOL: "https"
GTS_BIND_ADDRESS: "0.0.0.0"
GTS_PORT: "8080"
# SQLite: файл в volume ./data
GTS_DB_TYPE: "sqlite"
GTS_DB_ADDRESS: "/gotosocial/storage/sqlite.db"
# Медиа — локально (./data/storage)
GTS_STORAGE_LOCAL_BASE_PATH: "/gotosocial/storage"
# Траст reverse proxy (Caddy на vps02 → WG 10.8.0.4 → bigbox 10.8.0.2 → docker NAT 172.30.0.1)
# 10.8.0.4/32 — WG-адрес vps02 (реальный источник от Caddy), 172.30.0.1/16 — шлюз docker-сети
GTS_TRUSTED_PROXIES: "10.8.0.4/32,127.0.0.1/32,::1,172.30.0.1/16"
# Инстанс
GTS_INSTANCE_TITLE: "dedinit()"
GTS_INSTANCE_DESCRIPTION: "Нода для обычных людей"
GTS_INSTANCE_CONTACT_EMAIL: "kpa39l@yandex.ru"
# Перезапуск: федальная лента анонимно (иначе /api/v1/timelines/public → 401)
GTS_INSTANCE_EXPOSE_PUBLIC_TIMELINE: "true"
# Регистрация открыта: 10 новых аккаунтов в сутки (лимит очереди одобрения — дефолт 20)
GTS_ACCOUNTS_REGISTRATION_OPEN: "true"
GTS_ACCOUNTS_REGISTRATION_DAILY_LIMIT: "10"
# SMTP (Jino) — пароль из .env (GTS_SMTP_PASSWORD)
GTS_SMTP_HOST: "smtp.jino.ru"
GTS_SMTP_PORT: "587"
GTS_SMTP_USERNAME: "social@dedinit.ru"
GTS_SMTP_FROM: "social@dedinit.ru"
# Метрики Prometheus (OTEL)
GTS_METRICS_ENABLED: "true"
GTS_METRICS_AUTH_ENABLED: "false"
# Логи
GTS_LOG_LEVEL: "info"
GTS_LOG_FORMAT: "json"
# OpenTelemetry → Prometheus (метрики)
OTEL_METRICS_PRODUCERS: prometheus
OTEL_METRICS_EXPORTER: prometheus
# Слушать :9464 на всех интерфейсах (иначе только внутри контейнера)
OTEL_EXPORTER_PROMETHEUS_HOST: "0.0.0.0"
env_file:
- .env
ports:
# Caddy с vps02 → 10.8.0.2:8082 (через WG) → контейнер :8080
# ВНИМАНИЕ: 8080 на bigbox занят NetBox — GtS наружу на 8082
- "8082:8080"
# Метрики Prometheus (OTEL :9464) — наружу на 127.0.0.1 (только localhost)
- "127.0.0.1:9464:9464"
volumes:
# Данные: SQLite + медиа (локальное хранилище)
- ./data:/gotosocial/storage
# Кэш Wazero-компиляции (быстрый старт)
- ./.cache:/gotosocial/.cache
# Конфиг для справки (read-only; рабочий конфиг — env выше)
- ./config.yaml:/gotosocial/config.example.yaml:ro
# Кастомный шаблон подвала: без радужных флагов/эмодзи (чистый Source - GoToSocial)
# ВАЖНО: при обновлении версии GtS проверить совместимость шаблона (см. STATUS.md)
- ./web/template/page_footer.tmpl:/gotosocial/web/template/page_footer.tmpl:ro
# --- Веб-клиент Phanpy (Mastodon-клиент, статический SPA) ---
# https://web.dedinit.ru (Caddy vps02 → 10.8.0.2:8383)
# Ходит на API social.dedinit.ru напрямую из браузера (CORS уже *).
phanpy:
image: openengineering/phanpy:latest
container_name: phanpy
restart: unless-stopped
ports:
- "8383:8080"
networks:
default:
driver: bridge
driver_opts:
# MTU 1500 не проходит через WG-туннель (wg0 mtu 1420) → таймауты исходящих
# соединений (фрагментация теряется, DF-бит). 1380 безопасно ниже 1420.
com.docker.network.driver.mtu: "1380"
ipam:
config:
# Выделенная подсеть (172.29.0.0/16 свободна на bigbox)
- subnet: "172.29.0.0/16"
gateway: "172.29.0.1"