Files
netrunner-landing/docker-compose.dev-remote.yml
T
nineap 5f9d607d07 Обновить dev ACCOUNT_ORIGIN/API_URL под Caddy на 443 вместо 8443
netrunner-backend dev теперь проксирует Caddy на стандартный порт 443
(VPN-нода, ранее занимавшая его, перенесена на другой порт) — Telegram
Login Widget в браузере требует именно этот порт.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 20:00:15 +07:00

91 lines
5.2 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.
# =====================================================================
# DEV (remote VPS, тот же хост, что и netrunner-backend dev-remote:
# 45.76.161.137, DNS A-record dev.netrunner-vpn.com) — тот же принцип, что
# и прод: тянем готовые образы из GHCR и запускаем. В отличие от прода,
# порты открыты не только на 127.0.0.1 — на dev нет reverse-proxy/TLS
# перед сервисами (см. netrunner-backend/.env.dev-remote.example).
#
# Используем доменное имя, а не голый IP, намеренно: Telegram Login Widget
# требует настоящий домен, зарегистрированный в BotFather (/setdomain) —
# на IP виджет отвечает "Bot domain invalid" независимо от кода.
# =====================================================================
services:
# Фронтенд (Next.js)
landing:
image: ${IMAGE:-ghcr.io/nineap/netrunner-landing:latest}
container_name: netrunner-landing-dev
restart: always
ports:
- "3000:3000"
environment:
- NODE_ENV=production
# PB_PUBLIC_URL — адрес PocketBase, который реально используют клиентские
# компоненты (Pricing, TerminalGuestbook, docs/download/terminal-client.tsx):
# он читается на сервере в соответствующих page.tsx и прокидывается пропсом
# (тот же паттерн, что и ACCOUNT_ORIGIN для auth). NEXT_PUBLIC_PB_URL ниже
# оставлен для остальных мест (Faq/BlogPreview/blog — серверные компоненты,
# получают данные через PB_INTERNAL_URL, а NEXT_PUBLIC_PB_URL там нужен только
# как дефолт/для URL картинок) — саму переменную NEXT_PUBLIC_PB_URL Next.js
# зашивает в бандл на этапе сборки образа в CI и не перечитывает при старте
# контейнера, поэтому она НЕ годится для рантайм-конфигурации, в отличие от
# PB_PUBLIC_URL (обычная, не NEXT_PUBLIC_-переменная).
- PB_PUBLIC_URL=http://dev.netrunner-vpn.com:8090/cms-api
- NEXT_PUBLIC_PB_URL=http://dev.netrunner-vpn.com:8090/cms-api
- NEXT_PUBLIC_PROXY_URL=http://dev.netrunner-vpn.com:3001
- PB_INTERNAL_URL=http://netrunner-cms:8090
# Единая авторизация: смотрим на dev-бэкенд через Caddy (порт 443,
# настоящий TLS) — НЕ напрямую на :8080. Бэкенд на dev теперь ставит
# сессионные cookie с атрибутом Secure (как в проде, раз уже есть TLS),
# такую cookie браузер примет только с ответа по HTTPS; см.
# netrunner-backend WEB_APP_BASE_URL/COOKIE_SECURE в .env.dev-remote.example
# и Caddyfile.dev (Caddy нужен и ради Telegram Web Apps, которым обязателен
# https://, и ради Telegram Login Widget, которому в браузере обязателен
# именно порт 443). Без NEXT_PUBLIC_ — читаются на сервере
# (app/[lang]/auth/page.tsx), поэтому реально применяются в рантайме
# этого образа, а не только прод-образа, собранного с другими значениями.
- ACCOUNT_ORIGIN=https://dev.netrunner-vpn.com
- API_URL=https://dev.netrunner-vpn.com/api/v1
# ОБЯЗАТЕЛЬНО задать явно (без дефолта на прод-бота!) в .env на сервере —
# отдельный dev-бот, заведённый через @BotFather специально под
# dev.netrunner-vpn.com. Молчаливый фолбэк на прод-бота приводил ровно
# к "Bot domain invalid": у прод-бота в BotFather уже прописан прод-домен.
- BOT_USERNAME=${BOT_USERNAME:?"Задай BOT_USERNAME dev-бота в .env — см. комментарий выше"}
depends_on:
- ws-proxy
networks:
- netrunner-network-dev
# CMS (PocketBase) — отдельные данные от прода, свой volume.
netrunner-cms:
image: ghcr.io/muchobien/pocketbase:latest
container_name: netrunner-cms-dev
restart: unless-stopped
command:
- serve
- --http=0.0.0.0:8090
- --dir=/pb_data
ports:
- "8090:8090"
volumes:
- ./pb_data_dev:/pb_data
networks:
- netrunner-network-dev
# Прокси-слой (Rust)
ws-proxy:
image: ghcr.io/nineap/netrunner-landing-proxy:latest
container_name: netrunner-ws-proxy-dev
restart: always
ports:
- "3001:3001"
environment:
- PB_INTERNAL_URL=http://netrunner-cms:8090
depends_on:
- netrunner-cms
networks:
- netrunner-network-dev
networks:
netrunner-network-dev:
driver: bridge