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"