← All projects

SYSTEMS ENGINEERING / DEPLOYMENT

Self-hosted Linux infrastructure

Persistent containerized services with private remote access, VPN-based application routing, and troubleshooting across storage and network boundaries.

DebianDocker ComposeWireGuard + Tailscale

A persistent, remotely administered Linux host.

I repurposed a Lenovo laptop into a headless Debian server running persistent containerized services with Docker Compose. The system includes private remote administration, service monitoring, and external storage.

Operating it on a dorm network requires working within connectivity constraints rather than assuming a public inbound connection is available.

Linux server service architectureRemote access through Tailscale to Linux server running Debian and Docker, with Jellyfin, Homepage, and Uptime Kuma services.Tailscale accessLinux server / Debian + DockerJellyfinHomepageUptime Kuma
Service architecture

Separate private access from application routing.

I configured SSH and Tailscale for remote administration and private network access. For selected application traffic, I configured WireGuard through Gluetun and Linux network namespaces to constrain routing while keeping host and service networking distinct.

Docker Compose defines the service setup, with persistent storage, filesystem permissions, and service-level access controls supporting operation across restarts.

Diagnose failures across the stack.

  • Storage and filesystems: investigate mount behavior, permissions, and container access to persistent data.
  • Networking and VPNs: inspect routing and isolation across host, container, and VPN boundaries.
  • Media delivery: distinguish client, network, format, and transcoding issues.
  • Availability: use service monitoring, Linux logs, and command-line tooling to inspect failures.

The engineering work is the configuration and ongoing operation of the system, including tracing symptoms to the layer responsible for them.