bunker-admin 5642a24c8f Sync CCP templates with production configs for complete instance provisioning
Closes 12 template drift gaps between the Control Panel templates and
production configs. New instances now provision with full monitoring
(alerts fire properly), correct Gitea DB type (postgres not mysql),
social sharing previews (OG meta bot routes), Excalidraw subdomain
routing, docker-socket-proxy for Homepage, and complete Grafana/
Alertmanager/Prometheus config copying.

Key changes:
- Rewrite Prometheus template: add alerting, rule_files, 5 scrape jobs
- Add cAdvisor, node-exporter, redis-exporter, gotify, docker-socket-proxy
- Fix Gitea env from mysql to postgres to match docker-compose
- Add OG bot detection + rewrite routes for campaigns/pages/gallery
- Add Excalidraw nginx server block + Pangolin draw subdomain
- Add embed port to discovery portConfig + emailTestMode to registration
- Copy alerts.yml, alertmanager.yml, Grafana dashboards to templates
- Add Listmonk proxy port and upgrade volume to API service

Bunker Admin
2026-03-05 08:32:49 -07:00

117 lines
2.6 KiB
Handlebars

# Pangolin Resources — Instance: {{name}}
# All resources route through nginx for consistent subdomain handling
resources:
# ─── Always-On Resources ──────────────────────────────────
- name: app
subdomain: app
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: api
subdomain: api
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: root
subdomain: ""
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: true
- name: docs
subdomain: docs
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: db
subdomain: db
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: mail
subdomain: mail
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: qr
subdomain: qr
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
# ─── Conditional Resources ────────────────────────────────
{{#if enableMedia}}
- name: media
subdomain: media
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableListmonk}}
- name: listmonk
subdomain: listmonk
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableGancio}}
- name: events
subdomain: events
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableChat}}
- name: chat
subdomain: chat
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableMeet}}
- name: meet
subdomain: meet
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableMonitoring}}
- name: grafana
subdomain: grafana
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}
{{#if enableDevTools}}
- name: code
subdomain: code
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: git
subdomain: git
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: n8n
subdomain: n8n
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: home
subdomain: home
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: vault
subdomain: vault
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
- name: draw
subdomain: draw
target: http://{{containerPrefix}}-nginx:80
isBaseDomain: false
{{/if}}