{ "admin": {"listen": ":2019"}, "apps": { "http": { "servers": { "api_server": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["api.rockvilletollandsda.church", "api.adventisthymnarium.app"]}], "handle": [ { "handler": "subroute", "routes": [ { "match": [{"path": ["/uploads/rtsda_android/*"]}], "handle": [ { "handler": "headers", "response": { "set": { "Content-Type": ["application/vnd.android.package-archive"], "Content-Disposition": ["attachment; filename=rtsda.apk"] } } }, { "handler": "file_server", "root": "/opt/rtsda/church-api" } ] }, { "match": [{"path": ["/uploads/*"]}], "handle": [ { "handler": "file_server", "root": "/opt/rtsda/church-api" } ] }, { "match": [{"path": ["/*"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:3002"}] } ] } ] } ] } ] }, "stream_server": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["stream.rockvilletollandsda.church"]}], "handle": [ { "handler": "subroute", "routes": [ { "match": [ { "not": [ {"path": ["/admin*"]}, {"path": ["/_next/*"]}, {"path": ["/styles/*"]}, {"path": ["/api/*"]}, {"path": ["/hls/*"]} ] } ], "handle": [ { "handler": "static_response", "status_code": 301, "headers": { "Location": ["https://rockvilletollandsda.church/live"] } } ] }, { "match": [{"path": ["/admin*", "/_next/*", "/styles/*", "/api/*", "/hls/*"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:8080"}] } ] }, { "handle": [ { "handler": "file_server" } ] } ] } ] } ] }, "contact_server": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["contact.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:3002"}] } ] } ] }, "jellyfin_server": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["jellyfin.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:8096"}] } ] } ] }, "pocketbase_server": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["pocketbase.rockvilletollandsda.church"]}], "handle": [ { "handler": "subroute", "routes": [ { "match": [{"path": ["/api/files/rtsda_android_collection/legacy_update_bridge/current"]}], "handle": [ { "handler": "static_response", "status_code": 302, "headers": { "Location": ["https://api.rockvilletollandsda.church/uploads/rtsda_android/rtsda-1.0.apk"] } } ] }, { "match": [{"path": ["/api/collections/rtsda_android/records"]}], "handle": [ { "handler": "static_response", "status_code": 301, "headers": { "Location": ["https://api.rockvilletollandsda.church/api/collections/rtsda_android/records"] } } ] }, { "handle": [ { "handler": "static_response", "status_code": 410, "body": "PocketBase has been migrated. Please update your app." } ] } ] } ] } ] }, "static_servers": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["adventisthymnarium.rockvilletollandsda.church"]}], "handle": [ { "handler": "file_server", "root": "/media/archive/AdventistHymnarium-Assets" } ] }, { "match": [{"hosts": ["privacy-policy.adventisthymnarium.app"]}], "handle": [ { "handler": "file_server", "root": "/media/archive/AdventistHymnarium-Assets", "try_files": ["{http.request.uri.path}", "/privacy-policy.html"] } ] }, { "match": [{"hosts": ["privacy-policy.rockvilletollandsda.church"]}], "handle": [ { "handler": "file_server", "root": "/media/archive/AdventistHymnarium-Assets", "try_files": ["{http.request.uri.path}", "/privacy-policy-rtsda.html"] } ] }, { "match": [{"hosts": ["bible.rockvilletollandsda.church"]}], "handle": [ { "handler": "file_server", "root": "/media/archive/bibles" } ] }, { "match": [{"hosts": ["quarterlies.rockvilletollandsda.church"]}], "handle": [ { "handler": "headers", "response": { "set": { "X-Content-Type-Options": ["nosniff"], "X-Frame-Options": ["DENY"], "X-XSS-Protection": ["1; mode=block"], "Referrer-Policy": ["strict-origin-when-cross-origin"], "Cache-Control": ["public, max-age=3600"] } } }, { "handler": "file_server", "root": "/var/www/quarterlies" } ] }, { "match": [{"hosts": ["schedule.rockvilletollandsda.church"]}], "handle": [ { "handler": "headers", "response": { "set": { "X-Content-Type-Options": ["nosniff"], "X-Frame-Options": ["DENY"], "X-XSS-Protection": ["1; mode=block"] } } }, { "handler": "file_server", "root": "/var/www/schedule" } ] }, { "match": [{"hosts": ["admin.rockvilletollandsda.church"]}], "handle": [ { "handler": "headers", "response": { "set": { "X-Content-Type-Options": ["nosniff"], "X-Frame-Options": ["DENY"], "X-XSS-Protection": ["1; mode=block"], "Referrer-Policy": ["strict-origin-when-cross-origin"], "Permissions-Policy": ["camera=(), microphone=(), geolocation=()"], "Cache-Control": ["public, max-age=31536000, immutable"] } } }, { "handler": "file_server", "root": "/var/www/admin", "try_files": ["{http.request.uri.path}", "/index.html"] } ] } ] }, "proxy_servers": { "listen": [":443"], "routes": [ { "match": [{"hosts": ["openlp.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:4316"}] } ] }, { "match": [{"hosts": ["obs.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:4455"}], "headers": { "request": { "set": { "X-Real-IP": ["{http.request.remote_host}"], "X-Forwarded-For": ["{http.request.remote_host}"], "Host": ["{http.request.host}"] } } } } ] }, { "match": [{"hosts": ["remote.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:8443"}] } ] }, { "match": [{"hosts": ["syncthing.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:22000"}] } ] }, { "match": [{"hosts": ["rockvilletollandsda.church", "rockvilletollandsda.org"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:4321"}] } ] }, { "match": [{"hosts": ["webrtc.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:8081"}] } ] }, { "match": [{"hosts": ["git.rockvilletollandsda.church"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:3000"}] } ] } ] }, "special_servers": { "listen": [":443", ":4317"], "routes": [ { "match": [{"hosts": ["openlp.rockvilletollandsda.church"]}, {"port": "4317"}], "handle": [ { "handler": "subroute", "routes": [ { "match": [{"path": ["/poll*", "/messages*"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:4318"}] } ] }, { "match": [{"path": ["/"]}], "handle": [ { "handler": "reverse_proxy", "upstreams": [{"dial": "localhost:4318"}] } ] } ] } ] }, { "match": [{"hosts": ["events.rockvilletollandsda.church"]}], "handle": [ { "handler": "static_response", "status_code": 301, "headers": { "Location": ["https://rockvilletollandsda.church/events/submit"] } } ] }, { "match": [{"hosts": ["nominating.rockvilletollandsda.church"]}], "handle": [ { "handler": "subroute", "routes": [ { "match": [{"path": ["/admin*"]}], "handle": [ { "handler": "authentication", "providers": { "http_basic": { "accounts": [ { "username": "admin", "password": "$2a$14$p4vzY.AzQynxA6BIRBBtF.pdiIMv7F9ooOtzznCZbm7HaHNX/vBJi" } ] } } }, { "handler": "file_server", "root": "/var/www/nmc" } ] }, { "match": [{"path": ["/"]}], "handle": [ { "handler": "file_server", "root": "/var/www/nmc", "try_files": ["{http.request.uri.path}", "/index.html"] } ] } ] } ] } ] } } }, "tls": { "automation": { "policies": [ { "subjects": [ "api.rockvilletollandsda.church", "api.adventisthymnarium.app", "stream.rockvilletollandsda.church", "contact.rockvilletollandsda.church", "jellyfin.rockvilletollandsda.church", "pocketbase.rockvilletollandsda.church", "adventisthymnarium.rockvilletollandsda.church", "privacy-policy.adventisthymnarium.app", "privacy-policy.rockvilletollandsda.church", "bible.rockvilletollandsda.church", "openlp.rockvilletollandsda.church", "obs.rockvilletollandsda.church", "remote.rockvilletollandsda.church", "syncthing.rockvilletollandsda.church", "quarterlies.rockvilletollandsda.church", "schedule.rockvilletollandsda.church", "events.rockvilletollandsda.church", "admin.rockvilletollandsda.church", "rockvilletollandsda.church", "rockvilletollandsda.org", "webrtc.rockvilletollandsda.church", "nominating.rockvilletollandsda.church", "git.rockvilletollandsda.church" ], "issuer": { "module": "acme" } } ] } } } }