70 Commits

Author SHA1 Message Date
272250d4c2 Add hourly restart sidecar for invidious and companion
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 6s
Deploy Stacks / deploy-dev (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:38:06 -05:00
9ad35b77d8 Point meshmon.ghost.tel to ubuntu-dev instance
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 14s
Deploy Stacks / deploy-dev (push) Has been cancelled
The meshmonitor container is running on ubuntu-dev, not docker-dev.
Having both instances fight over the same Meshtastic node TCP connection
was causing repeated ECONNRESET disconnects.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:58:07 -05:00
077d40321d Point tlc routes to ubuntu-dev
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 13s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-07 08:57:56 -05:00
adfeb664c9 Disable tlc.ghost.tel route
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 6s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-07 08:51:43 -05:00
1463bbced1 Route sdr.uplink.tel and update radio backend
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 14s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-05 22:36:37 -05:00
eed6196da5 Move Traefik file routes to Docker labels
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 6s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-05 22:04:28 -05:00
0970e97a8f Switch invidious to master branch for API 400 fix
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 8s
Deploy Stacks / deploy-dev (push) Has been cancelled
The fix for YouTube API 400 errors (PR #5614) was merged Feb 3, 2026
but hasn't been included in a tagged release yet. Using master tag
to get the fix now.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 21:44:59 -05:00
53332d416a Trigger GitOps via traefik config touch
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 3s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-05 20:36:09 -05:00
ca456e8ee6 Trigger GitOps run 2026-02-05 20:33:02 -05:00
c616d63083 Avoid SIGPIPE in workflow container listing 2026-02-05 20:02:04 -05:00
deb2403bad Remove gitea file-provider route
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 10s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-05 19:56:59 -05:00
0cbe7d3862 Use ubuntu-prod hostname in Traefik upstreams
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 0s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-02-05 19:21:55 -05:00
2a1d78fa69 Add fonts to perilous container for favicon rendering
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
Sharp requires fontconfig and fonts to render SVG text elements.
Added ttf-dejavu for the dynamically generated favicon.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 11:41:01 -05:00
6b5fcb2f61 Add homepage stack for ghost.tel
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
Static nginx container serving the main ghost.tel homepage.
Includes restart policy and /watch redirect to invidious.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:51:08 -05:00
d6a3d9a3f6 Add detailed access logging and Prometheus metrics
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
- accessLog: field filtering to drop sensitive headers (Authorization)
  while keeping useful ones (User-Agent, Content-Type, Referer)
- metrics: Prometheus endpoint with latency buckets (0.1, 0.3, 1.2, 5.0s)

Aligned with core's observability config.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:17:19 -05:00
c5e416d31c Add global HTTP to HTTPS redirect
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
All HTTP traffic now redirects to HTTPS at the entrypoint level,
eliminating the need for per-service redirect middleware.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:11:32 -05:00
a4dfbc715f Add astro stack for e.field.ghost.tel
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-24 22:55:12 -05:00
b14015b12f Adjust healthchecks and dev tooling
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 2s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-22 14:19:36 -05:00
6e22713454 Remove sequela.uk domains from routing rules
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
The sequela.uk domain doesn't have DNS configured, causing ACME
certificate generation to fail. Removed from wikijs and matomo
routing rules.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:49:55 -05:00
a0b6dcbdc3 Fix analoggallery build context to use main branch
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
The analogGallery repo uses 'main' not 'master' as default branch.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:40:33 -05:00
e944ac8b48 Add analoggallery-public stack, update traefik routing
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 11s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Add analoggallery-public stack for analog.uplink.tel
- Update uplink.yml: remove routes now handled by Docker labels
  (nitter, freshrss, rsshub, searx, analog)
- Update sequela.yml: remove routes now handled by Docker labels
  (wiki.sequela.tel, matomo.sequela.tel)
- File routes now only contain external proxies (docker-public for
  invidious.uplink.tel, radio.uplink.tel)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:38:59 -05:00
2609411fd8 Fix authentik postgres version to match data
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 3s
Deploy Stacks / deploy-dev (push) Has been cancelled
Pin postgres to 12-alpine to match existing data directory
that was initialized with PostgreSQL 12.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:19:40 -05:00
477e22d5a6 Update GitOps workflow to respect stack-type labels
- deploy-prod (master → ubuntu-prod): Only deploys prod and public stacks
- deploy-dev (dev → ubuntu-dev): Only deploys dev-only stacks
- Skips stacks without stack-type labels (with warning)
- Fixed: Only create .env from template if .env doesn't exist

This prevents dev-only experimental stacks from being deployed to
production, even if they're in the master branch.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:07:26 -05:00
32e7536fd8 Add stack-type labels and public service stacks
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 6s
Deploy Stacks / deploy-dev (push) Has been cancelled
Add com.ghost.tel/stack-type labels to all stacks:
- prod (17): Production services from core
- dev-only (11): Experimental/device-specific services
- public (8): Public-facing services (uplink.tel, sequela.tel)

New public stacks from docker-public:
- nitter-public: Nitter instance for uplink.tel
- freshrss-public: FreshRSS for uplink.tel
- rsshub-public: RSSHub for uplink.tel
- searx-public: SearXNG for uplink.tel
- wikijs-public: Wiki.js for sequela.tel
- matomo-public: Matomo analytics for sequela.tel

Also fixes:
- Remove obsolete 'version' key from compose files
- Fix snowflake to remove duplicate watchtower service
- Standardize compose file formatting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:02:37 -05:00
7704551668 Fix zerotier UI port and traefik basicAuth mount
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 2s
Deploy Stacks / deploy-dev (push) Has been cancelled
- zerotier: Change exposed port from 3180 to 3000 (actual UI port)
- zerotier: Add loadbalancer.server.port label for traefik
- traefik: Add basicAuth volume mount for dashboard-auth middleware
- test-services.sh: Fix registry URL to use /v2/ endpoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 22:48:31 -05:00
f949992127 Update registry to include UI service
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1m3s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Add registry-ui container with dockerhub.${DOMAIN} hostname
- Registry API available at registry.${DOMAIN}
- UI available at dockerhub.${DOMAIN}/ui

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:37:09 -05:00
b2971e1f89 Fix smokeping hostname to match existing DNS record
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 7s
Deploy Stacks / deploy-dev (push) Has been cancelled
smoke.ghost.tel exists, smokeping.ghost.tel does not.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:59:05 -05:00
c91a89a33e Add service URL test script
Tests all configured service URLs and reports HTTP status.
Useful for verifying deployments and identifying routing issues.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:52:58 -05:00
e5b14eee4e Fix HostRegexp syntax for Traefik v3
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
Traefik v3 uses raw regex syntax instead of v2's {name:pattern} format.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:50:35 -05:00
6559870e06 Move perilous traefik routing from file provider to Docker labels
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Add traefik labels to perilous docker-compose.yml for web and code-server
- Remove stacks/traefik/conf.d/perilous.yml (no longer needed)
- Changed from host ports to expose (traefik routes directly to container)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:46:55 -05:00
db0745e57d Migrate perilous to ubuntu-prod
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Update traefik route to use Docker container names instead of host IPs
- Update Dockerfile to build full app with sharp, ejs, marked dependencies
- Simplify docker-compose.yml (remove traefik labels, use file provider routing)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:38:14 -05:00
cb9a8fa46b Add uplink.tel and sequela.tel routing via ubuntu-prod proxy
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Add uplink.yml: Routes nitter, invidious, searx, freshrss, rsshub, radio
  through ubuntu-prod to docker-public backend
- Add sequela.yml: Routes wiki and matomo through ubuntu-prod to docker-public
- Update traefik.yml: Add proxyProtocol insecure:true for VPS HAProxy
  send-proxy compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 14:52:04 -05:00
382292c52f Add perilous.dev routing config
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 15s
Deploy Stacks / deploy-dev (push) Has been cancelled
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:22:33 -05:00
aa2646c907 Trigger traefik config sync
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-21 12:35:07 -05:00
f46817fa7a Add traefik routing configs to GitOps
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
Sync all conf.d routing configs from core:
- authentik.yml - routes to ubuntu-prod:9000
- gitea.yml - routes to ubuntu-prod:3001
- middlewares.yaml - forward-auth, redirects, security headers
- dynamic.yml, library.yaml, meshmon.yaml, minecraft.yaml
- radio.yml, spider.yml, tlc.yml, wille.yaml

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 11:43:17 -05:00
244794d15f Sync Gitea and Authentik configs with production
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
- Gitea: Add port 3001:3000 for external access
- Gitea: Add GITEA_RUNNER_LABELS=ubuntu-prod:host for runner
- Authentik: Add port 9000:9000 for external access

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 10:58:31 -05:00
e2372fd67a Trigger deploy workflow
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 4s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-21 00:12:18 -05:00
68660717f2 Test ubuntu-prod runner 2026-01-21 00:11:37 -05:00
b19a0aa195 Test runner on ubuntu-prod 2026-01-21 00:08:54 -05:00
5388ef16d7 Trigger Gitea deploy to ubuntu-prod
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 1s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-20 20:03:54 -05:00
195c6860b5 Remove trigger file
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 4s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-20 13:06:20 -05:00
ba27db032e Fix invidious companion key docs (must be 16 chars) 2026-01-20 13:06:11 -05:00
5807713e22 Trigger invidious deploy
Some checks failed
Deploy Stacks / deploy-prod (push) Successful in 2s
Deploy Stacks / deploy-dev (push) Has been cancelled
2026-01-20 13:02:02 -05:00
55e1e0a400 Merge branch 'dev'
Some checks failed
Deploy Stacks / deploy-prod (push) Failing after 8s
Deploy Stacks / deploy-dev (push) Has been cancelled
# Conflicts:
#	.gitea/workflows/deploy.yml
2026-01-20 12:52:38 -05:00
9f61b06592 Update invidious stack to use companion approach
- Replace inv_sig_helper with invidious-companion for better YouTube API handling
- Add healthcheck for main container
- Add resource limits for all containers
- Add SQL init scripts for fresh database setup
- Update README with invidious secrets documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 12:52:19 -05:00
608cc9253d Reset dev deploy behavior
All checks were successful
Deploy Stacks / deploy-prod (push) Has been skipped
Deploy Stacks / deploy-dev (push) Successful in 1s
2025-12-31 20:14:24 -05:00
3357d96cb0 Trigger dev full deploy
All checks were successful
Deploy Stacks / deploy-prod (push) Has been skipped
Deploy Stacks / deploy-dev (push) Successful in 1s
2025-12-31 20:12:34 -05:00
aeac252491 Deploy all stacks on dev
Some checks failed
Deploy Stacks / deploy-prod (push) Has been skipped
Deploy Stacks / deploy-dev (push) Failing after 17s
2025-12-31 20:12:13 -05:00
13989e2b59 Add dev stacks 2025-12-31 20:11:44 -05:00
0bcfed8fb8 Match dev runner label
All checks were successful
Deploy Stacks / deploy-prod (push) Has been skipped
Deploy Stacks / deploy-dev (push) Successful in 2s
2025-12-31 20:07:59 -05:00