Commit Graph
39 Commits
Author SHA1 Message Date
Ruben Hensen 665147a691 Merge pull request #43 from rubenhensen/renovate/python-3.x
chore(deps): update python docker tag to v3.15
2026-10-27 09:30:50 +01:00
renovate[bot] a36fc6f348 chore(deps): update python docker tag to v3.15 2026-10-26 22:28:58 +00:00
Ruben Hensen 13b92fff54 dns: NetworkPolicy 2026-10-26 23:26:38 +01:00
Ruben Hensen 7acb7eaa8c Move every ExternalSecret and the ClusterSecretStore to external-secrets.io/v1
ESO 0.16.2 is the one release that serves both v1beta1 and v1. 0.17
stops serving v1beta1, so manifests still on v1beta1 would fail to sync
from the next hop on. For these resources the schemas are name-identical
(conversion strategy None); only the apiVersion changes.
2026-10-22 21:41:28 +02:00
Ruben Hensen 2ce9c33dbd Remove ghost-blog and whishper
Neither is used any more: the blog moves to a self-written site, and
whishper needs more compute than this setup has. Ghost also ran Node 18,
which won't get the eMudhra root store fix.

Drops both apps, the blog DNS record, Gatus check and node001 tunnel
entry, their ca-bundle namespaces, and the leftover ExternalSecret for the
old hensen.io blog namespace. Final Velero backups keep the data:
ghost-blog-final-202610220955 until 22 October 2027 and
whisper-final-202610220955 until 20 January 2027.
2026-10-22 10:11:06 +02:00
Ruben Hensen 1f736cd4c7 Remove phocas-lustrum
The folder went in April (bb308a3) but the app and its DNS record stayed,
so the demo site kept serving at phocaslustrum.rubenhensen.nl.
2026-10-22 09:36:26 +02:00
Ruben Hensen 3e45ddaf4a Remove lingo
lingo-api ran PHP 8.1.34 (php:8.1-apache) and was reachable at
https://lingo.rubenhensen.nl/api/. PHP 8.1 is EOL and gets no fix for
CVE-2026-109618 and CVE-2026-109619, so it was exposed to the PHP2Shell
RCE. It is no longer used, so drop it entirely: the app, its Gatus
check, the DNS record and the node001 tunnel entry.
2026-10-22 09:06:52 +02:00
Ruben Hensen e23779044f gatus: alert through self-hosted ntfy
Add ntfy at ntfy2.rubenhensen.nl on the home cluster, pointed straight at
the home IP like s2. s2 now alerts on mail and on s1 through it. The
home services are left to s1, which sees them from outside.

ntfy denies everything except the provisioned user. The user, its
password hash and the Gatus token come from Vault kv/ntfy.
2026-10-20 15:34:42 +02:00
Ruben Hensen 3ffb10b627 gatus: add s2.rubenhensen.nl status page on the home cluster
Gatus with sqlite history, checking every public service plus its twin
s1.rubenhensen.nl on Hetzner. Replaces the GitHub-hosted Upptime page.

DNS gets s1 (Hetzner) and s2. s2 points straight at the home IP rather
than through the Hetzner tunnel, so it stays reachable when Hetzner is
down.

gatus/README.md explains how to read the two pages and writes down the
plan for a single self-hosted failover URL (PowerDNS LUA records).
2026-10-20 11:03:58 +02:00
Ruben Hensen f13417bc8f Add bolletjestrui app + vic.rubenhensen.nl
Deploys ghcr.io/rubenhensen/bolletjestrui at vic.rubenhensen.nl:
- bolletjestrui/ folder: deployment (SQLite on a PVC, migrate-on-start,
  ORIGIN + raised BODY_SIZE_LIMIT for GPX uploads), service, nginx
  ingress with prod-cluster-issuer TLS, PVC, and a Vault ExternalSecret
  (kv/bolletjestrui: site_password, admin_password, key_secret).
- apps/templates/bolletjestrui-folder.yaml: ArgoCD Application.
- dns: vic A record -> 46.224.26.65 (ingress LB).
- renovate: watch bolletjestrui/ for image tag bumps.

Committed locally, not pushed: needs the Vault secret created and the
ghcr package made public first.
2026-07-21 14:33:31 +02:00
Ruben Hensen a11309263e Update home cluster IP to 62.41.86.27 2026-06-06 09:52:36 +02:00
Ruben Hensen 20128bcd73 Add gitea at git.rubenhensen.nl
Single-pod sqlite install (simplest path for a home git host). HTTPS-only,
no SSH listener for now. Wired into the Hetzner tunnel like the other
rubenhensen.nl services.

First visitor to git.rubenhensen.nl can register; Gitea auto-promotes the
first user to admin.
2026-05-19 23:19:21 +02:00
Ruben Hensen ffe8830b5e Tunnel argocd/ha/longhorn/lingo/blog/serpbear through Hetzner
Refactor node001 nginx to drive both the SNI map and the port-80 vhosts
from a single tunneledHosts list so adding a service is one line.
2026-05-19 23:14:04 +02:00
Ruben Hensen 8d383d4261 Tunnel ynab.rubenhensen.nl through Hetzner 2026-05-19 23:04:02 +02:00
Ruben Hensen 00d46b6bd6 Tunnel vault.rubenhensen.nl through Hetzner 2026-05-19 22:56:52 +02:00
Ruben Hensen cb7cba25d0 Tunnel authentik.rubenhensen.nl through Hetzner
Same pattern as rss — needed so the OIDC redirect from freshrss (and
other relying parties) works for clients outside the home LAN.
2026-05-19 22:50:56 +02:00
Ruben Hensen ff9c2d3cef Tunnel rss.rubenhensen.nl through Hetzner
Point rss to the Hetzner box and reverse-proxy/SNI-passthrough back to
the home cluster so cert-manager keeps owning the certificate. Move
stalwart's HTTPS listener to 127.0.0.1:8443 so nginx can take :443 and
dispatch by SNI.
2026-05-19 22:45:55 +02:00
Ruben Hensen 20dfbde02f Add serpbear 2026-04-25 20:39:20 +02:00
Ruben Hensen c876a725c1 Move to simpler email setup 2026-04-06 17:55:48 +02:00
Ruben Hensen cfa4c49a2b Remove sogo 2026-04-06 17:42:06 +02:00
Ruben Hensen 66a5e2600f Lower DNS TTL from 24h to 5 minutes for all records 2026-04-04 12:38:56 +02:00
Ruben Hensen 6262ac5a93 Point mail.rubenhensen.nl to home K8s cluster instead of Hetzner
The CNAME to stalwart.rubenhensen.nl caused browser traffic to hit the
Hetzner server, which doesn't have a certificate for mail.rubenhensen.nl.
2026-04-04 12:33:22 +02:00
Ruben Hensen d9964cd689 Fix the dns for rubenhensen.nl 2026-03-26 11:19:32 +01:00
Ruben Hensen 04fafd64e2 Add dkim to stalwart 2026-03-22 16:06:40 +01:00
Ruben Hensen 7a98ad0a9e Add email domain changes 2026-03-22 15:41:06 +01:00
Ruben Hensen bcd0e47076 Connect Stalwart to Authentik LDAP for user authentication
- Add LDAP directory backend in Stalwart pointing to ldap.rubenhensen.nl
- Expose Authentik LDAP outpost externally via LoadBalancer service
- Add ldap.rubenhensen.nl DNS record
2026-03-17 22:12:56 +01:00
Ruben Hensen 0ed06f311c Change authentik dns rubenhensen.nl 2026-03-15 21:32:23 +01:00
Ruben Hensen 28ea6f4a47 Remove ansible 2026-03-15 18:29:16 +01:00
Ruben Hensen 1b45178c07 Go back to direct dns 2026-03-15 18:29:04 +01:00
Ruben Hensen 0abaf74955 Point MX to stalwart.rubenhensen.nl 2026-03-15 17:31:14 +01:00
Ruben Hensen 0a9185ff3e Point rubenhensen.nl to mailserver for reverse proxy 2026-03-15 13:15:16 +01:00
Ruben Hensen c51c98e821 Add rubenhensen.nl to all ingresses 2026-03-15 11:46:24 +01:00
Ruben Hensen 09f019264f DNS: add authentik 2026-03-15 00:20:13 +01:00
Ruben Hensen 35a17772ca Add stalwart subdomain 2026-03-14 23:20:51 +01:00
Ruben Hensen 33af7cf829 Add Stalwart dns settings to rubenhensen.nl 2026-03-14 22:25:12 +01:00
Ruben Hensen bc2f75294d Add test dns 2026-03-14 21:41:41 +01:00
Ruben Hensen 72e0ba8cce Update python script dns 2026-03-14 21:37:12 +01:00
Ruben Hensen 18bb7f6812 DNS info 2026-03-14 21:30:35 +01:00
Ruben Hensen bd9053eeec Add programmatic DNS with Transip API 2026-03-14 21:28:54 +01:00