diff --git a/site/apps/index.html b/site/apps/index.html new file mode 100644 index 0000000..034882a --- /dev/null +++ b/site/apps/index.html @@ -0,0 +1,121 @@ + + + + + + Apps — plate-software.de + + + + + + + + + + + + +
+ +
+ +
+
+
+ + ← Zurück + ← Back + +

+ Apps aus dem Homelab + Apps from the homelab +

+

+ Built in the homelab, served from IONOS — same continuous-deploy story as this page itself. + Built in the homelab, served from IONOS — same continuous-deploy story as this page itself. +

+
+
+ +
+
+
+ +
+
🌿
+

CannaManage 🟢 Live

+
Mitgliederverwaltung für Cannabis-Anbauvereinigungen
+
Member management for German Cannabis Cultivation Associations
+

Mitgliederverwaltung für Cannabis-Anbauvereinigungen nach KCanG. Mitglieder, Beitragszahlungen, Abgabemengen-Tracking, gerichtsfeste Audit-Logs.

+

Member management for German Cannabis Cultivation Associations (CSCs) per KCanG. Members, dues, distribution tracking, court-proof audit logs.

+ cannamanage.plate-software.de ↗ +
+ + +
+
🛡️
+

InspectFlow 🟢 Live

+
Maschinen- und Sicherheitsinspektionen
+
Machine and safety inspections
+

Maschinen- und Sicherheitsinspektionen für Produktionsbetriebe. Fragebogen-Engine, Tickets, Archiv, Audit-Trail mit Hibernate Envers.

+

Machine and safety inspections for production facilities. Questionnaire engine, tickets, archive, audit trail via Hibernate Envers.

+ inspectflow.plate-software.de ↗ +
+
+
+
+
+ + + + + + diff --git a/site/homelab/index.html b/site/homelab/index.html new file mode 100644 index 0000000..70f838d --- /dev/null +++ b/site/homelab/index.html @@ -0,0 +1,113 @@ + + + + + + Homelab — plate-software.de + + + + + + + + + + + + +
+ +
+ +
+
+
+ + ← Zurück + ← Back + +

+ Das Homelab + The Homelab +

+
+
+ +
+
+
+

Alles, was unter *.plate-software.de erreichbar ist, läuft auf einem TrueNAS bei mir zu Hause. Öffentlich wird das Ganze über einen winzigen VPS, der nichts anderes tut, als einen frps-Tunnel zu halten — davor steht ein IONOS-Reverse-Proxy, der TLS terminiert. Ein git push nach Gitea, der Runner baut das Docker-Image, und in unter einer Minute steht die neue Version öffentlich unter HTTPS.

+

Everything you can reach under *.plate-software.de runs on a TrueNAS at home. The whole thing is exposed publicly through a tiny VPS whose only job is to hold an frps tunnel — fronted by an IONOS reverse-proxy that terminates TLS. A git push to Gitea, the runner builds the Docker image, and in under a minute the new version is live on public HTTPS.

+ +

Der Stack

+

The stack

+

TrueNAS SCALE hostet Gitea, den act_runner und pro App einen Docker-Stack. Der VPS fährt ausschließlich frps (frp-Server) — kein Anwendungs-Code, keine Datenbank, einfach nur Tunnel-Endpunkt. Eingehender Traffic landet zuerst auf IONOS-Apache-vHosts, die per Reverse-Proxy in den frps-Tunnel zeigen. Let's-Encrypt-Zertifikate kommen via acme.sh.

+

TrueNAS SCALE hosts Gitea, the act_runner, and a per-app Docker stack. The VPS runs only frps (the frp server) — no application code, no database, just a tunnel endpoint. Public traffic enters IONOS Apache vhosts that reverse-proxy into the frps tunnel. Let's Encrypt certificates via acme.sh.

+ +

Warum so?

+

Why this setup?

+

Vor allem die Kosten: rund 10 €/Monat für VPS und Domain — bei einer vergleichbar gemanageten Hosting-Lösung wären es eher 80 €. Dazu volle Kontrolle, kein Vendor-Lock-in und ehrlich gesagt: Infrastruktur zu bauen ist die halbe Miete vom Spaß.

+

Mostly cost: about €10/month for VPS plus domain, versus around €80/month for an equivalent managed hosting setup. Add full control, no vendor lock-in, and frankly — building the infrastructure is half of why this is fun.

+ +

Was ich gelernt habe

+

Lessons learned

+

Zwei systemische Stolpersteine sind hängen geblieben: in einer Proxy-Kette muss auth() von NextAuth verwendet werden, getToken() bricht durch die mehrfachen Hops. Und die DNS-A-Records zeigen auf IONOS, nicht auf den VPS — wer das vergisst, wundert sich lange über kaputtes Routing.

+

Two systemic gotchas have stuck with me: in a proxy chain you need NextAuth's auth(), not getToken() — the latter breaks across the multiple hops. And the DNS A-records point to IONOS, not the VPS — forget that and you'll spend a long time wondering why routing is broken.

+
+
+
+
+ + + + + + diff --git a/site/index.html b/site/index.html index 4e84089..3759747 100644 --- a/site/index.html +++ b/site/index.html @@ -18,7 +18,15 @@