From 5cd19867b702c648fff64cdd399d173005468d6e Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Thu, 10 Sep 2026 22:46:36 +0200 Subject: [PATCH] content improve 2 --- infra/index.njk | 12 ++++++++++ infra/monitoring/index.njk | 21 +++++++++++++++- retro/amiga-hardware-landscape/index.njk | 26 +++++++++++++++++++- retro/atari-networking-bbs/index.njk | 29 +++++++++++++++++++++++ retro/dos-486-tower/index.njk | 29 ++++++++++++++++------- retro/index.njk | 6 ++--- retro/retro-corner-snapshot/index.njk | 9 +++++++ retro/the-a1200/index.njk | 2 +- smarthome/balkonpi/index.njk | 16 ++++++++++++- smarthome/index.njk | 12 ++++++++++ smarthome/octoprint/index.njk | 24 +++++++++++++++++-- smarthome/tubearchivist/index.njk | 21 +++++++++++++++- stefankoelle/pdf/cv.pdf | Bin 47174 -> 47173 bytes 13 files changed, 189 insertions(+), 18 deletions(-) diff --git a/infra/index.njk b/infra/index.njk index d180cb0..f743915 100644 --- a/infra/index.njk +++ b/infra/index.njk @@ -36,3 +36,15 @@ sections:

A peek under the hood of my homelab. Proxmox, Synology, Docker, and how everything is wired together.

{% include "card-grid.njk" %} + +
+

The setup at a glance

+

The infrastructure runs on three main machines: a Proxmox VE host (Intel NUC, 64GB RAM) as the primary compute node, a Synology DS918+ NAS for storage and Docker services, and a Xubuntu VM on Proxmox for development. An OpenWrt router handles multi-WAN failover with WiFi and Powerline backhaul, and four Zyxel GS1200-8HP managed switches distribute the network across the flat.

+

The whole stack is monitored via Prometheus and Grafana, with node exporters on every machine, cAdvisor for container metrics, and SNMP exporters for network hardware. Backups follow a 3-2-1 strategy: local snapshots, NAS copies, offsite sync to a Raspberry Pi in a different room, and cloud archive for worst-case scenarios.

+ +

Why Proxmox

+

Proxmox VE was chosen over alternatives like ESXi or plain Docker for several reasons. The open-source model means no licensing headaches. LXC containers provide near-native performance for lightweight services without the overhead of full VMs. The web UI makes it easy to manage snapshots, backups, and migrations. And the ZFS support on the underlying Debian system gives us reliable snapshots and send/receive for the backup chain.

+ +

How services are organized

+

The general rule: stateful services (databases, media archives, monitoring data) run on the Synology NAS where they benefit from the integrated backup and snapshot system. Stateless services and compute-heavy workloads run on the Proxmox Docker VM. LXC containers handle lightweight always-on services like Pi-hole and MariaDB. This separation makes it easy to tear down and recreate Docker containers without worrying about data loss.

+
diff --git a/infra/monitoring/index.njk b/infra/monitoring/index.njk index 8cbfe51..7f29ed7 100644 --- a/infra/monitoring/index.njk +++ b/infra/monitoring/index.njk @@ -9,7 +9,9 @@ layout: base.njk

Prometheus and Grafana form the central monitoring stack for the whole -homelab, running as Docker containers on the NAS.

+homelab, running as Docker containers on the NAS. Every machine in the +flat — Proxmox host, Docker VM, Synology NAS, and Raspberry Pi devices — +feeds metrics into this central instance.

What's monitored

diff --git a/retro/dos-486-tower/index.njk b/retro/dos-486-tower/index.njk index 93009bb..5902b1f 100644 --- a/retro/dos-486-tower/index.njk +++ b/retro/dos-486-tower/index.njk @@ -1,20 +1,33 @@ --- -title: "The 486 DX2-66 Tower: An Original PC Living Alongside Its FPGA Twin" +title: "The 486 DX2-66: Rebuilding a DOS Era on MiSTer FPGA" section: "retro" -description: "Keeping an original Colani-design 486 tower running while a MiSTer core covers the same era digitally." +description: "Recreating a Vobis-Highscreen 486 DX2-66 setup on MiSTer FPGA, down to the original DOS configuration." layout: base.njk parent: "/" --- -

The 486 DX2-66 Tower: An Original PC Living Alongside Its FPGA Twin

+

The 486 DX2-66: Rebuilding a DOS Era on MiSTer FPGA

-

Long before Atari ST and Amiga took over the retro corner, a Vobis-Highscreen 486 DX2-66 in its distinctive Colani-designed tower case was the main PC. Decades later, it's kept around as both a museum piece and a genuine gaming machine, running alongside a MiSTer FPGA equivalent.

+

Long before Atari ST and Amiga took over the retro corner, a Vobis-Highscreen 486 DX2-66 in its distinctive Colani-designed tower case was the main PC. The original hardware is long gone, but the entire setup has been recreated 1:1 on MiSTer FPGA — same DOS version, same drivers, same AUTOEXEC.BAT and CONFIG.SYS, same directory structure.

-

Original Hardware vs FPGA Twin

+

The original hardware

+

The Vobis-Highscreen was a premium PC in its day — the Colani design gave it a distinctive curved case that still looks futuristic. Inside it ran an Intel 486 DX2 at 66MHz with 8MB of RAM, a Sound Blaster 16, and a Tseng ET4000 graphics card. A 200MB hard drive and a 3.5" floppy drive completed the setup. The machine was the go-to system for early-90s classics like Doom, Wing Commander, Duke Nukem 3D, and Lemmings.

+ +

The MiSTer recreation

+

The AO486 core on MiSTer FPGA reproduces the original hardware with near-perfect accuracy. The key was not just getting the hardware emulation right, but rebuilding the exact software environment: the same MS-DOS version, the same memory managers (HIMEM.SYS, EMM386), the same Sound Blaster drivers, and the same AUTOEXEC.BAT and CONFIG.SYS tuning that made the original machine run smoothly. Even the directory structure and file names match the original setup.

+ +

Why a 1:1 recreation

+

The point isn't just to play DOS games — it's to preserve the exact computing experience from that era. The way DOS memory management worked, the way sound drivers had to be configured manually, the way batch files chained together to create a usable environment. This level of detail is lost when you just launch a DOS game from a modern frontend. The MiSTer setup recreates the entire boot process, from BIOS POST to the C:\> prompt, just as it was in the mid-90s.

+ +

What's preserved

+

AO486 vs real hardware

+

The MiSTer AO486 core handles the emulation convincingly. Timing accuracy is good enough for games that rely on cycle-sensitive behavior. Sound Blaster emulation covers the standard OPL3 FM synthesis and digital audio. The main trade-off is that some hardware-specific quirks — like the exact timing of the ET4000 graphics card or the behavior of specific ISA bus peripherals — aren't perfectly replicated. But for the purpose of preserving a working DOS environment, it's more than sufficient.

+
diff --git a/retro/index.njk b/retro/index.njk index c4f113f..be06473 100644 --- a/retro/index.njk +++ b/retro/index.njk @@ -45,8 +45,8 @@ sections: href: "/mini-arcade-handheld-roundup/" - heading: "DOS & PC" cards: - - title: "💻 The 486 DX2-66 Tower" - summary: "An original Colani-design 486 tower kept running alongside its MiSTer AO486 FPGA equivalent." + - title: "💻 The 486 DX2-66" + summary: "A complete DOS environment rebuilt 1:1 on MiSTer FPGA, down to the original AUTOEXEC.BAT." href: "/dos-486-tower/" - heading: "Overview" cards: @@ -55,6 +55,6 @@ sections: href: "/retro-corner-snapshot/" --- -

Hardware I've collected and kept running over the years. From Atari ST and Amiga to MiSTer FPGA and DOS towers.

+

Hardware I've collected and kept running over the years. From Atari ST and Amiga to MiSTer FPGA and DOS environments.

{% include "card-grid.njk" %} diff --git a/retro/retro-corner-snapshot/index.njk b/retro/retro-corner-snapshot/index.njk index fb919ee..82ea0f7 100644 --- a/retro/retro-corner-snapshot/index.njk +++ b/retro/retro-corner-snapshot/index.njk @@ -18,5 +18,14 @@ parent: "/"
  • The focus, unmistakably — Amiga and Atari ST are the heart of the collection; everything else (DOS, arcade, handhelds) exists to fill in the gaps around those two platforms.
  • +

    The office setup in detail

    +

    The office houses the main retro computing workstation. The three Mega ST 4 machines each have a defined role: one runs GEM-based productivity software, one is set up for MIDI music production with a connected synthesizer, and one serves as the development machine for ST software. The Mega ST 2 is the backup and testing machine. The MiSTer FPGA handles Amiga and DOS emulation with near-perfect timing accuracy, while the MiST provides a dedicated Atari ST experience without the overhead of the MiSTer's larger feature set.

    + +

    The living room setup

    +

    The Batocera box in the living room takes a completely different approach — it's not about hardware authenticity, it's about convenience. A compact PC boots directly into the Batocera frontend, providing a console-like experience for casual retro gaming on the TV. Controllers are wireless, the interface is controller-friendly, and the focus is on games that work well from a couch rather than demos or productivity software that needs a keyboard and mouse.

    + +

    How it all connects

    +

    All machines share the same network infrastructure, with FTP access to the NAS for file transfers. Disk images and software archives are stored centrally and served to individual machines as needed. The MiSTer and MiST both use SD cards for storage, while the original hardware uses CompactFlash adapters or SCSI-to-IDE bridges depending on the machine. The Raspberry Pi 400 accesses the same NFS shares as the other Pis in the flat.

    +

    The honest status update: several open items remain — documenting the exact handheld models, and waiting on the A1200 Mini pre-order. Retro computing, it turns out, is never really "done."

    diff --git a/retro/the-a1200/index.njk b/retro/the-a1200/index.njk index 9906a8c..601cd3c 100644 --- a/retro/the-a1200/index.njk +++ b/retro/the-a1200/index.njk @@ -42,7 +42,7 @@ no configuration required, at the cost of some flexibility.

    If the A1200 ships on time and delivers on the promised feature set, it could become the default entry point for people curious about the Amiga. The original hardware is getting harder to find in good condition, -and the capacitor-bomb主板 issue means that even working units need +and the capacitor-bomb motherboard issue means that even working units need recapping. A modern, reliable reproduction — even if it's software emulation — lowers the barrier significantly. The 25 pre-installed games give newcomers a curated starting point, and the USB sideloading support diff --git a/smarthome/balkonpi/index.njk b/smarthome/balkonpi/index.njk index 28d4901..a610233 100644 --- a/smarthome/balkonpi/index.njk +++ b/smarthome/balkonpi/index.njk @@ -11,7 +11,10 @@ layout: base.njk

    A Raspberry Pi Zero W mounted near the balcony acts as a small, self-contained smart-balcony controller: light control, an internet radio player, sensor readings, and its own backup/monitoring, all on -very modest hardware.

    +very modest hardware. The goal is to make the balcony a more pleasant +space — light control when it gets dark, background music while sitting +outside, and temperature readings to know what to expect before stepping +out.

    What it does

    +

    Hardware details

    +

    The Pi Zero W is connected to an ESP32 microcontroller that handles +the actual light switching via a relay module. Communication happens +over HTTP — the Pi sends a simple request to toggle the relay, and the +ESP32 responds with the current light state. The ESP32 also reads a +DHT22 temperature and humidity sensor, publishing the values to MQTT +for the home dashboard. This split makes sense: the Pi handles the +user-facing logic (audio, buttons, internet radio), while the ESP32 +handles the real-time hardware control.

    +

    Monitoring & backup, even on tiny hardware

    Despite the very limited RAM, this Pi still participates in the same Prometheus monitoring pattern as the rest of the fleet — with the metrics @@ -33,6 +46,7 @@ configuration to the NAS over the internal network.

    diff --git a/smarthome/index.njk b/smarthome/index.njk index c80831e..73c9fbf 100644 --- a/smarthome/index.njk +++ b/smarthome/index.njk @@ -72,3 +72,15 @@ sections:

    The heart of the homelab. Home Assistant, MQTT sensors, dashboards, and automation projects that make everyday life a little more interesting.

    {% include "card-grid.njk" %} + +
    +

    The stack

    +

    Everything connects through MQTT. HomematicIP thermostats report room temperatures via Home Assistant automations, Tasmota smart plugs feed energy data, and various ESP32 and Raspberry Pi devices publish sensor readings. InfluxDB stores the time-series data, and Grafana dashboards visualize it all in real time.

    +

    The home dashboard runs on multiple touch displays around the flat: an ESP32-S3 WT32-SC01 in the living room and an M5Stack in the study. Both show room temperatures, energy usage, and quick-action buttons for lighting and music control.

    + +

    Automation philosophy

    +

    The goal is subtle automation that improves daily life without being intrusive. Lights turn on when someone enters a room, music starts playing in the bathroom when the light switches on, and LED matrix displays show the time, weather, and laundry status. But nothing talks unless spoken to — no voice assistants, no always-on microphones, just simple sensor-driven automation that runs locally without cloud dependencies.

    + +

    Self-hosted services

    +

    Beyond hardware automation, several self-hosted services run on the Synology NAS: TubeArchivist for YouTube archiving, OctoPrint for remote 3D printer control, iCloud Contacts Sync for keeping the address book up to date, and a Google Calendar sync for dashboard widgets. Each service is containerized and backed up as part of the NAS backup strategy.

    +
    diff --git a/smarthome/octoprint/index.njk b/smarthome/octoprint/index.njk index b99cfef..6576100 100644 --- a/smarthome/octoprint/index.njk +++ b/smarthome/octoprint/index.njk @@ -10,7 +10,9 @@ layout: base.njk

    A Raspberry Pi 3B runs OctoPrint for remote 3D-printer control, plus a live camera stream so print progress can be checked without walking over -to the printer.

    +to the printer. This eliminates the need to stand next to the printer +watching the first layer — a quality-of-life improvement that's hard to +go back from once you've experienced it.

    Current setup

    +

    Camera and streaming

    +

    The camera setup uses a standard USB webcam connected to the Pi. The +camera-server project provides two streaming modes: MJPEG for the +OctoPrint dashboard (low latency, works in any browser) and HLS for +remote viewing over slower connections. The MJPEG stream is the primary +way to check on prints — it loads quickly and updates in real time in the +OctoPrint web interface.

    +

    History

    This Pi originally also had a small status display attached; the display was later moved to the backup Pi (which benefits more from local, @@ -30,6 +40,16 @@ that point to better reflect its now-singular focus on the printer.

    After moving this Pi to a newer OS release, boot configuration files moved to a new path — editing the old path silently does nothing, which is an easy trap when following older notes or tutorials for the same -hardware.

    +hardware. The lesson: always verify that configuration changes actually +take effect, especially after OS upgrades on embedded hardware.

    + +

    Why Docker on a Pi

    +

    Running OctoPrint in Docker on a Pi 3B might seem like overkill, but +it provides consistency with the rest of the fleet. The same Portainer +interface manages this container alongside the NAS services, the same +monitoring stack collects its metrics, and the same backup strategy +covers its configuration. The overhead of Docker on ARM is minimal for a +single-container setup, and the operational benefits justify the small +resource cost.

    diff --git a/smarthome/tubearchivist/index.njk b/smarthome/tubearchivist/index.njk index 1e7065e..5b180c6 100644 --- a/smarthome/tubearchivist/index.njk +++ b/smarthome/tubearchivist/index.njk @@ -10,7 +10,9 @@ layout: base.njk

    TubeArchivist runs on the Synology NAS via Docker Compose, self-hosting a searchable archive of downloaded YouTube content (Elasticsearch + -Redis + the TubeArchivist app itself).

    +Redis + the TubeArchivist app itself). It's used to archive channels +worth rewatching — tutorials, long-form content, and anything that might +disappear behind copyright strikes or channel deletions.

    Why this needed real troubleshooting

    Running Elasticsearch on Synology's DSM kernel isn't fully @@ -23,8 +25,16 @@ without it, rather than fighting the kernel.

    +

    How it fits into the backup strategy

    +

    TubeArchivist data is split into two categories with different backup +priorities. The downloaded media files and Elasticsearch metadata are +backed up as part of the NAS backup volumes, since they take significant +time to re-download and re-index. The Redis cache is excluded — it only +holds session data and can be safely rebuilt on restart.

    +

    What's backed up

    @@ -33,4 +43,13 @@ without it, rather than fighting the kernel.

    DataIncluded in NAS backup?
    Redis cacheNo — safe to delete/rebuild, only holds session data
    +

    Day-to-day usage

    +

    Channels are added via the TubeArchivist web interface, which provides +a YouTube-like browsing experience for the archived content. New videos +from subscribed channels are automatically downloaded on a schedule. The +search function indexes titles, descriptions, and metadata, making it +easy to find specific videos in a large archive. The system runs headless +on the NAS with no dedicated display — all interaction happens through the +web interface or the companion mobile app.

    + diff --git a/stefankoelle/pdf/cv.pdf b/stefankoelle/pdf/cv.pdf index dc2a8a48ed81e2f53f6d39c823154afa5b3d8976..82f5ebeb7ada968e6fc19e39ac37721ce0a4d2a5 100644 GIT binary patch delta 12448 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�b5PjSiA)=~WB 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