CI/CD / BackEnd (push) Successful in 1m27s
CI/CD / WebPlayer (push) Successful in 39s
CI/CD / Deploy (push) Skipped
CI/CD / BackEnd (pull_request) Successful in 1m16s
CI/CD / WebPlayer (pull_request) Successful in 39s
CI/CD / Deploy (pull_request) Skipped
Remove deploy/nginx and the nginx service from compose.prod.yml: the shared edge in Infrastructure owns ports 80/443 and serves every domain. Make the deploy job fail when zitadel-init or seaweedfs-init fail, and document the runner and edge setup.
69 lines
2.7 KiB
Bash
69 lines
2.7 KiB
Bash
# Production configuration for deploy/compose.yml + compose.prod.yml.
|
|
# Copy to deploy/.env.prod, then:
|
|
#
|
|
# 1. replace every `*.example.com` with your actual domains (each service
|
|
# below has its own, independent domain — they don't need to share a
|
|
# root, e.g. for DNS providers that don't allow multi-level
|
|
# subdomains),
|
|
# 2. replace every CHANGE_ME with a strong random value
|
|
# (`openssl rand -hex 24`),
|
|
# 3. point each domain below at the server and add its vhost to the shared
|
|
# edge (Infrastructure's edge/conf.d).
|
|
#
|
|
# Requires ../../../Infrastructure running first, on the same Docker host,
|
|
# with its own `infra-net` network already created. See
|
|
# ../../../Infrastructure/README.md. Not versioned. Keep it readable only by
|
|
# the deploy user (chmod 600).
|
|
|
|
DOTNET_ENVIRONMENT=Production
|
|
|
|
# --- Domains -------------------------------------------------------------
|
|
# Public URLs. They must match the vhosts of the shared edge nginx
|
|
# (Infrastructure's edge/conf.d), which is what serves them; the domains are
|
|
# independent, they don't need to share a root.
|
|
PUBLIC_WEB_URL=https://musify.example.com
|
|
PUBLIC_API_URL=https://musifyapi.example.com
|
|
PUBLIC_STREAM_URL=https://musifystream.example.com
|
|
PUBLIC_AUTH_URL=https://auth.example.com
|
|
S3_PUBLIC_URL=https://s3.example.com
|
|
|
|
# --- PostgreSQL (Infrastructure's shared instance, Musify's own database) ---
|
|
# POSTGRES_USER / POSTGRES_PASSWORD must match Infrastructure's .env.prod.
|
|
POSTGRES_HOST=postgres
|
|
POSTGRES_USER=postgres
|
|
POSTGRES_PASSWORD=CHANGE_ME
|
|
POSTGRES_DB=musify_db
|
|
|
|
# --- Zitadel (OIDC, shared instance) -----------------------------------------
|
|
ZITADEL_ADMIN_PAT_DIR=../../../Infrastructure/zitadel/.output
|
|
ZITADEL_DEV_MODE=false
|
|
|
|
# OIDC clients: the zitadel-init one-shot service (see compose.yml) fills
|
|
# these in automatically on `docker compose up -d`.
|
|
AUTH_CLIENT_ID=
|
|
WEB_CLIENT_ID=
|
|
WEB_CLIENT_SECRET=
|
|
|
|
# --- RabbitMQ (shared instance, MassTransit) --------------------------------
|
|
RABBITMQ_HOST=rabbitmq
|
|
RABBITMQ_DEFAULT_USER=musify
|
|
RABBITMQ_DEFAULT_PASS=CHANGE_ME
|
|
|
|
# --- SeaweedFS (S3, shared instance, Musify's own bucket) --------------------
|
|
SEAWEEDFS_HOST=seaweedfs
|
|
S3_ACCESS_KEY=CHANGE_ME
|
|
S3_SECRET_KEY=CHANGE_ME
|
|
S3_BUCKET=webapi-storage
|
|
S3_INTERNAL_URL=http://seaweedfs:8333
|
|
S3_USE_HTTP=false
|
|
|
|
# --- Jaeger (shared instance, tracing) ---------------------------------------
|
|
JAEGER_HOST=jaeger
|
|
|
|
# --- Web player --------------------------------------------------------------
|
|
# Key material for the encrypted session cookie. Rotating it logs everyone out.
|
|
SESSION_SECRET=CHANGE_ME
|
|
AUTH_ALLOW_INSECURE_HTTP=false
|
|
|
|
# --- Misc --------------------------------------------------------------------
|
|
AUTH_REQUIRE_HTTPS=true |