Files
Admin 3e1ee28125 Keep RabbitMQ data on recreate and proxy to unique container names
RabbitMQ stores its data under rabbit@<hostname>, and the hostname
changed with every recreated container, so an image update or an .env
change came up with an empty broker. Pin it to `rabbitmq` and document
how to carry the definitions over on an existing deployment.

Every project shares infra-net, where a generic service name like `api`
resolves to every container that has it, round-robin, across projects.
The edge now proxies to container names (musify-api, infra-zitadel, ...).
2026-09-24 15:05:43 +02:00

116 lines
3.4 KiB
Plaintext

# One certificate (live/musify.ikerdemo.cat) covers the five hostnames.
server {
listen 80;
listen [::]:80;
server_name musify.ikerdemo.cat musifyapi.ikerdemo.cat
musifystream.ikerdemo.cat auth.ikerdemo.cat s3.ikerdemo.cat;
include /etc/nginx/snippets/acme-redirect.conf;
}
# Web player. Uploads are posted to its own form actions.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name musify.ikerdemo.cat;
client_max_body_size 1024m;
# The OIDC callback answers with the session cookies (encrypted tokens),
# bigger than the 4k default response-header buffer.
proxy_buffer_size 32k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
large_client_header_buffers 4 16k;
ssl_certificate /etc/letsencrypt/live/musify.ikerdemo.cat/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musify.ikerdemo.cat/privkey.pem;
include /etc/nginx/snippets/tls.conf;
location / {
set $upstream http://musify-web-player:3000;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name musifyapi.ikerdemo.cat;
ssl_certificate /etc/letsencrypt/live/musify.ikerdemo.cat/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musify.ikerdemo.cat/privkey.pem;
include /etc/nginx/snippets/tls.conf;
location / {
set $upstream http://musify-api:5111;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
}
}
# Audio bytes. Buffering off keeps range requests (seeking) responsive.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name musifystream.ikerdemo.cat;
ssl_certificate /etc/letsencrypt/live/musify.ikerdemo.cat/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musify.ikerdemo.cat/privkey.pem;
include /etc/nginx/snippets/tls.conf;
location / {
set $upstream http://musify-gateway:8081;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
proxy_buffering off;
}
}
# Zitadel, shared with the other projects (hence the generic hostname).
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name auth.ikerdemo.cat;
ssl_certificate /etc/letsencrypt/live/musify.ikerdemo.cat/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musify.ikerdemo.cat/privkey.pem;
include /etc/nginx/snippets/tls.conf;
# Login V2 UI, a separate container (see ../compose.yml).
location /ui/v2/login {
set $upstream http://infra-zitadel-login:3000;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
}
location / {
set $upstream http://infra-zitadel:8080;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
}
}
# SeaweedFS S3: presigned PUT/GET straight from the browser.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name s3.ikerdemo.cat;
client_max_body_size 1024m;
ssl_certificate /etc/letsencrypt/live/musify.ikerdemo.cat/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musify.ikerdemo.cat/privkey.pem;
include /etc/nginx/snippets/tls.conf;
location / {
set $upstream http://infra-seaweedfs:8333;
proxy_pass $upstream;
include /etc/nginx/snippets/proxy.conf;
proxy_request_buffering off;
}
}