All projects

How the platform is built

One VPS, Docker with one container per service, and Traefik as the single entry point. Certbot runs directly on the host.

Platform architectureA browser calls Traefik, the single entry point. On the VPS, Docker runs one container per service. Traefik and the two nginx containers share the traefik_proxy network; WordPress and the database sit only on an internal network together with the nginx containers. For odabas.ch and waverider52.com, Traefik only passes TLS through unencrypted to their own nginx containers, which terminate it themselves: nginx-odabas on port 8081, nginx-waverider on port 8082 — both receive their certificates directly from Certbot via mount, not through Traefik. nginx-odabas has served the static Astro files since the cutover, the former WordPress container is stopped, not removed. Plus a planned Spring Boot application with an Angular frontend (its own PostgreSQL database) and a planned Python application (uses the same shared MariaDB as waverider52.com). Certbot has to briefly stop and restart Traefik on every certificate renewal so it can bind port 80 for its own check. The shared MariaDB holds the database of waverider52.com and the database of odabas.ch, which is unused since the switch to Astro; its data lives on a bind mount (./data/db-shared, a mounted host folder, not a named Docker volume). The Spring Boot application is meant to get its own PostgreSQL instance; the Python application uses the shared MariaDB. Certbot runs directly on the host via cron, renews the certificates and restarts Traefik in the process.BrowserVPSCertbothost, via cronCertificatesstop/start during renewalDocker: every box is a containerDocker networks:traefik_proxy, internalTraefiksingle entry point, ports 80/443:8082:8081TLS-Passthroughwaverider52.comnginxWeb serverWordPressPHPodabas.chnginxPortfolioWordPressstoppedSpring Boot + AngularSpring BootBackendAngularFrontendPythonPython-AppplannedMariaDBsharedPostgreSQLshared, plannedbind mount: ./data/db-sharedVolumerunningplanned, stopped, or replaced

Posts