Infrastructure

One server, everything on it

Every product, client site and demo on this site runs on one Hetzner machine that I set up and look after myself. The dots on this page are live: they come from my own status service.

Checking…

36

public hosts

19

static exports

8

Node apps on pm2

8

in Docker

How it's put together

nginx takes every request, handles HTTPS with a Let's Encrypt certificate per domain and hands it on. Whatever can be static is static; only what needs a server runs as a process.

nginx · HTTPS for every domain
19

Static exports

Next.js and Vite builds served straight from disk. No process to crash or patch.

8

Node on pm2

Only where a site needs a server: an API, a login or an admin area.

8

Docker

Isolated stacks: every NextUp tenant with its own Postgres, plus Agentic OS, Umami and the Vocafy app with MySQL.

Plus one WordPress theme on PHP-FPM.

Built to run it

The parts I wrote myself to keep all of this running.

Status service & Dash Server

A Node service without dependencies checks every site and domain every 30 seconds, scans ports every five minutes and reads the nginx configs, so a dead upstream shows red instead of disappearing. An Expo app shows it all on my phone.

Node.jspm2ExpoReact Native

NextUp tenant stacks

Every NextUp tenant runs as its own Docker stack: the app, Postgres, Caddy and Mailpit for test mail, set up with one command. Staging, a public demo and n8n automations run next to them.

DockerCaddyPostgreSQLn8n

Static first

In July 2026 I moved twelve Next.js sites from always-on Node processes to static exports served by nginx. Less memory, fewer moving parts, less to patch.

Next.jsnginx

Everything that's live36

Every public host on the server, with its runtime. Hosts that only show a login or answer API calls aren't linked.

Products9

My own products and the services behind them.

  • Checking…

    Vocafy

    vocafy.ch

    Landing page for my vocabulary trainer.

    Static
  • Checking…

    Vocafy app

    app.vocafy.ch

    The web app itself: Node.js and MySQL.

    Docker
  • Checking…

    School Companion

    schoolcompanion.ch

    Site for the app, with a Matura grade calculator that runs in the browser.

    Static
  • Checking…

    School Companion admin

    admin.schoolcompanion.ch

    Admin dashboard for users, schools, timetables and push notifications.

    Node · pm2
  • Checking…

    NextUp

    sellux.ch

    Landing page of the startup.

    Docker
  • Checking…

    NextUp demo

    demo.sellux.ch

    Public demo with its own database and mail catcher.

    Docker
  • Checking…

    NextUp tenants

    acme · globex · test1 · staging .sellux.ch

    One isolated stack per customer: app, Postgres, Caddy and Mailpit.

    Docker
  • Checking…

    Agentic OS server

    agentic-os.serviweb.ch

    Sync and AI backend for my desktop and Android app. API only.

    Docker
  • Checking…

    Static export, English and German.

    Static

Tools & experiments8

Things I built or host for the server, my studies and new ideas.

  • Checking…

    Status service

    status.serviweb.ch

    Checks every site every 30 seconds. The dots on this page come from it.

    Node · pm2
  • Checking…

    Umami

    umami.serviweb.ch

    Self-hosted, cookie-free web analytics.

    Docker
  • Checking…

    NextUp automation

    automation.sellux.ch

    n8n workflows behind a login gate.

    Docker
  • Checking…

    All live projects on serviweb.ch as a tap-through gallery for the phone.

    Static
  • Checking…

    Landing page for a tool that finds restaurants without a website or Google profile and builds a demo to pitch.

    Static
  • Checking…

    Python Trainer

    uniwise.serviweb.ch

    Handbook, flashcards and tests for the Python cheatsheets of CODE's Orientation Semester.

    Node · pm2
  • Checking…

    Room Radar

    housingfinder.serviweb.ch

    Berlin rooms and flats that Claude rated good or great. Private.

    Node · pm2
  • Checking…

    Waitlist page for a dating-app concept, with a small signup API on pm2.

    Static

Client sites4

Hosted and looked after for clients.

  • Checking…

    Serviweb

    serviweb.ch

    My web studio's site.

    Static
  • Checking…

    Tiger Wil

    tiger-wil.ch

    My first client, hosted since December 2023.

    Docker
  • Checking…

    Vision Wil

    vision-wil.ch

    Bar and café in Wil SG.

    Static
  • Checking…

    Ski Service Joel

    skiservice-joel.ch

    Ski service with its own login and availability API.

    Node · pm2

Demos15

Design studies for real kinds of businesses.

See them with screenshots on the Projects page

Building something? Let's talk.

A project, a venture to build together, or a role to talk through. I read every message myself.