ProjectsWhat runs on my platform, or is coming next. Every application runs in its own containers and is reachable only through Traefik.
2026 in progress
odabas.ch This site: built statically with Astro, served from an nginx container and published through Traefik. Every push to main builds and deploys it automatically.
Astro Docker nginx Traefik GitHub Actions2026 running
VPS platform Docker, Traefik, Certbot and shared databases on my own server, versioned as infrastructure as code.
Docker Traefik nginx MariaDB2026 planned
Spring Boot + Angular A full-stack application with a REST API and a single-page frontend, in separate containers behind the same reverse proxy.
Java Spring Boot Angular PostgreSQL2026 planned
Python app A second language on the same platform: one container per app and routing through Traefik are not tied to Java.
How odabas.ch gets deployedA push to main automatically builds a new image and rolls it out on the existing nginx-odabas container.
Deployment pipeline for odabas.ch A push to main in the odabas-portfolio repository triggers GitHub Actions, which builds a Docker image and publishes it to ghcr.io. On the server, only the image of the existing nginx-odabas container changes to this new image; name, port 8081, TLS passthrough and Traefik labels stay unchanged. nginx-odabas serves the built Astro files directly, with no database or app container at all. waverider52.com keeps running unchanged with nginx-waverider and WordPress. A future application from Etappe 7 or 8 would take the same path: its own, isolated nginx and app container. waverider52.com and the future application use the shared MariaDB instance with a bind mount for the data; odabas.ch needs no connection to it. GitHub: odabas-portfolio git push (main) GitHub Actions build-and-deploy: builds image ghcr.io odabas-portfolio:latest Same pattern planned for Etappe 12 (Python/Spring Boot) Internet Traefik edge router (80/443) TLS passthrough, host-based routing odabas.ch nginx-odabas Image: ghcr.io/…/odabas-portfolio serves Astro dist/ directly (static) Port 8081, no app/DB container No database — static site waverider52.com nginx-waverider TLS: 8082 · Redirect: 18082 wordpress-waverider Networks: wpnet + traefik_proxy Further app (Python / Spring Boot, Etappe 7/8) nginx (isolated) App container MariaDB (Python) or own Postgres (Spring) Shared database instance (mariadb-shared) Bind mount ./data/db-shared — separate database per app odabas.ch: static, shipped as a CI/CD image, no database — other apps: shared MariaDB instance