Lab

Self-hosted services

Media, files, infrastructure and everyday tools on my own server.

Application server
AMD Ryzen 9 8945HS64 GB DDR5 RAM, 4 TB NVMe8 cores, 16 threads

Applications, data and local AI share the server. Its 64 GB of DDR5 RAM provides room for small local models handling simple tasks; heavier generation runs on my separate workstation.

  • DuckDNSHome-network domain names
  • Cloudflare TunnelSelected public services
TraefikContainer labels, routing & automatic TLS
Selected applicationsServices hosted on the server
Home-network requests reach the proxy directly; selected public services are reached through Cloudflare.

Selected stack

Local models
Ollama, Open WebUIBrowser interface & model serving
Agents
Hermes, Hermes Web UIAgent runtime & browser interface
Containers
Docker, Coolify, Portainer, WatchtowerDeployment, inspection & updates
Access
Traefik, Cloudflare Tunnel, Pi-holeDNS, proxying & remote access
Monitoring
Uptime Kuma, Glances, Speedtest TrackerAvailability, host health & connectivity
Files
Nextcloud, SambaFile sync & shared storage
Media
Jellyfin, PlexPersonal media libraries
Data
PostgreSQL, MariaDB, MySQL, RedisApplication persistence & caching
Automation
n8n, ntfyHome automation, workflows & notifications
Utilities
Vaultwarden, IT-Tools, PrivateBin, DocuSealPasswords, documents & everyday tools

A few implementation details

  • Shared storage. Jellyfin and Plex read the same underlying media folders.
  • Persistent data. Application and database data live outside the containers that run them.
  • Routes from labels. Docker labels configure Traefik routing and automatic TLS. New services use the existing proxy setup.
Browse the Compose collection