diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx index a037dfbf00..e5dc7c6248 100644 --- a/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx +++ b/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx @@ -125,16 +125,35 @@ docker compose --profile postgres --profile observability --profile backup up -d docker compose --profile observability up -d always starts clean even before you've configured anywhere to send notifications. This is intentional — the shipped config can't bake in a Slack/Discord/email destination that works for everyone — but it means - nothing pages anyone until you edit alertmanager/alertmanager.yml yourself. - Treat this as a required step, not an optional one, for any deployment you expect to run - unattended. + nothing pages anyone until you enable a real receiver. Treat this as a required step, not an + optional one, for any deployment you expect to run unattended.

- The fastest verified path: create a Discord channel webhook (channel settings → Integrations - → Webhooks → New Webhook), then uncomment the discord receiver block in{" "} - alertmanager/alertmanager.yml and point the root route at it. Slack, email, and - a generic webhook receiver (for PagerDuty or a custom handler) are also ready to uncomment - in the same file. + Don't edit the committed alertmanager/alertmanager.yml in place — deploys + git pull this repo, so a local edit to a tracked file either blocks the next + pull or gets silently overwritten by it. Instead, copy it to a gitignored{" "} + alertmanager/alertmanager.local (matches the existing *.local{" "} + ignore rule) and make your receiver/route changes there — the fastest verified path is + uncommenting the discord receiver block and pointing the root route at it, + using webhook_url_file: /etc/alertmanager/discord_url so the webhook URL itself + lives in its own gitignored file next to it, never in a file docker-compose.yml or git ever + tracks. Slack, email, and a generic webhook receiver (for PagerDuty or a custom handler) are + also ready to uncomment in the same template. Then point Alertmanager at your local copy via{" "} + docker-compose.override.yml: +

+ +

+ Restart with docker compose up -d --no-deps alertmanager to pick up both files. + The whole alertmanager/ directory is mounted read-only into the container, so + any gitignored file you add there (the local config, a secret file it references) shows up + at the same path with no docker-compose.yml edit required.

Until you do, alerts are still visible without any extra setup: open Grafana and check the{" "} diff --git a/docker-compose.yml b/docker-compose.yml index 4aa8a931b0..b7752eded6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -520,7 +520,12 @@ services: expose: - "9093" # in-network only; reach the UI/API via `docker compose port` or a tunnel volumes: - - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro + # Mounts the whole host directory (not just the yml) so an operator's private overrides are visible + # inside the container at the same paths, with no docker-compose.yml edit needed per file added: + # a real receiver config (e.g. ./alertmanager/alertmanager.local, gitignored via the *.local rule + # above -- point docker-compose.override.yml's alertmanager `command:` at it) and/or a secret file a + # local config's webhook_url_file /etc/alertmanager/ references. + - ./alertmanager:/etc/alertmanager:ro - alertmanager-data:/alertmanager command: - "--config.file=/etc/alertmanager/alertmanager.yml"