20 KiB
Home Server Container Platform Research
Research Date: 2025-11-11 System: tower-of-joy (Zorin OS 16.3, Intel i7-6700, 16GB RAM, RTX 2080 Ti)
Executive Summary
This document contains comprehensive research on open-source home server solutions for containerizing applications, web servers, file servers, Jellyfin media server, and cloud services like Nextcloud. The research evaluates platforms based on our specific hardware constraints and requirements.
System Context
Current Configuration:
- OS: Zorin OS 16.3 (Ubuntu 20.04 based)
- CPU: Intel i7-6700 (4 cores, 8 threads, 3.40GHz)
- RAM: 16 GB
- Storage: 481 GB (365 GB available) - LIMITED
- GPU: NVIDIA RTX 2080 Ti (11GB VRAM) - EXCELLENT for transcoding
- Docker: 28.1.1 (already installed)
- User: jpmschweitzer
- Hostname: tower-of-joy
Critical Constraints:
- Limited storage (481GB) - Rules out storage-intensive solutions
- Existing OS installation - Prefer solutions that don't require fresh install
- RTX 2080 Ti excellent for Jellyfin hardware transcoding
- Docker already installed - Should leverage existing infrastructure
Requirements
-
Container orchestration for running:
- Jellyfin media server (with GPU hardware transcoding)
- Nextcloud (cloud storage with external access)
- File servers
- Web servers
- Various other containerized applications
-
Web-based management interface for container/service management
-
NAS capabilities (file storage and sharing)
-
Software-defined networking - Specifically Tailscale's OSS version (Headscale) or similar
-
External access capabilities (secure remote access)
-
Easy extensibility for adding more services
-
GPU passthrough support for Jellyfin hardware transcoding
Solutions Evaluated
1. Portainer + Docker Compose ⭐ RECOMMENDED
Overview: Portainer provides a web-based management interface for Docker, allowing you to manage containers, stacks, images, and volumes through an intuitive UI. Combined with Docker Compose for multi-container orchestration.
Installation Compatibility:
- ✅ WORKS ON EXISTING UBUNTU/ZORIN OS
- No fresh install required
- Installs as a Docker container itself
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐⭐ (9.6/10) | Intuitive dashboard, visual management, real-time monitoring |
| Container/Docker Support | ⭐⭐⭐⭐⭐ | Native Docker integration, full Compose support, stack management |
| GPU Passthrough | ⭐⭐⭐⭐ (4/5) | Full NVIDIA support via Container Toolkit, GPU toggle in UI |
| NAS/File Sharing | ⭐⭐⭐ (3/5) | Not built-in, easily added via Samba/NFS containers |
| Headscale Integration | ⭐⭐⭐⭐⭐ | Excellent - both available as Docker containers |
| Hardware Requirements | ⭐⭐⭐⭐⭐ | Minimal - perfect for 481GB storage constraint |
| Learning Curve | ⭐⭐⭐⭐⭐ (EASY) | Rated 9.6/10 for ease of use, visual interface |
| Community & Ecosystem | ⭐⭐⭐⭐⭐ | Massive Docker ecosystem, active community |
| Extensibility | ⭐⭐⭐⭐⭐ | Add any Docker container via UI, custom stacks |
GPU Configuration Example
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
Pros & Cons
PROS:
- ✅ Works on existing OS (no reinstall)
- ✅ Minimal resource footprint (~200MB disk, <100MB RAM for Portainer)
- ✅ Extremely easy to use (9.6/10 rating)
- ✅ Full GPU support for Jellyfin
- ✅ Already have Docker installed
- ✅ Huge ecosystem of containers
- ✅ Perfect for limited storage (481GB)
- ✅ Quick setup (15-30 minutes)
- ✅ Free and open source
- ✅ Excellent for Jellyfin + Nextcloud + file servers
CONS:
- ❌ NAS features require separate containers (not integrated)
- ❌ No built-in RAID or advanced storage management
- ❌ Less comprehensive than full NAS solutions
- ❌ File sharing requires additional configuration
Expected Challenges
- Setting up NVIDIA Container Toolkit (one-time setup)
- Configuring proper GPU permissions
- Learning Docker Compose syntax (minimal if using UI)
- Setting up reverse proxy for external access (Nginx/Caddy)
2. CasaOS - BEST ALTERNATIVE
Overview: CasaOS is a beautiful, app-store-like home server operating system that runs on top of existing Linux installations. Designed specifically for home users who want simplicity.
Installation Compatibility:
- ✅ INSTALLS ON EXISTING UBUNTU/ZORIN OS
- Single curl command:
curl -fsSL https://get.casaos.io | bash - Auto-installs Docker if not present
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐⭐ (5/5) | Most elegant UI, app store paradigm, built-in file manager |
| Container/Docker Support | ⭐⭐⭐⭐⭐ | Built on Docker, app store, recognizes existing containers |
| GPU Passthrough | ⭐⭐⭐⭐ (4/5) | NVIDIA support via environment variables |
| NAS/File Sharing | ⭐⭐⭐⭐ (4/5) | Built-in file manager, easy network sharing |
| Headscale Integration | ⭐⭐⭐⭐⭐ | Can install via Docker containers |
| Hardware Requirements | ⭐⭐⭐⭐⭐ | Very light (~500MB for CasaOS) |
| Learning Curve | ⭐⭐⭐⭐⭐ (EASIEST) | Absolute easiest solution, "click and go" |
| Community & Ecosystem | ⭐⭐⭐⭐ (4/5) | Growing community, Docker ecosystem access |
| Extensibility | ⭐⭐⭐⭐⭐ | Full Docker ecosystem, custom app import |
Pros & Cons
PROS:
- ✅ Installs on existing OS
- ✅ Absolutely beautiful UI
- ✅ Easiest to use (perfect for beginners)
- ✅ App store paradigm
- ✅ Built-in file management
- ✅ GPU support for Jellyfin
- ✅ Minimal resources
- ✅ One-command install
- ✅ Can combine with Portainer
CONS:
- ❌ Less granular control than Portainer
- ❌ Newer/smaller community
- ❌ May abstract away some Docker details
- ❌ Advanced features require custom Docker configs
3. Cockpit + Podman
Overview: Cockpit is a web-based Linux server management tool with a Podman extension for container management. Podman is a daemonless Docker alternative.
Installation Compatibility:
- ✅ Works on existing Ubuntu
- Installs via apt package manager
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐ (4/5) | Clean, functional, less polished than alternatives |
| Container/Docker Support | ⭐⭐⭐ (3/5) | Uses Podman (not Docker), compatibility issues |
| GPU Passthrough | ⭐⭐⭐⭐ (4/5) | NVIDIA support with Podman |
| NAS/File Sharing | ⭐⭐ (2/5) | No built-in features |
| Headscale Integration | ⭐⭐⭐⭐ | Available as Podman containers |
| Hardware Requirements | ⭐⭐⭐⭐⭐ | Very lightweight |
| Learning Curve | ⭐⭐⭐ (3/5 - MODERATE) | Requires learning Podman differences |
| Community & Ecosystem | ⭐⭐⭐ (3/5) | Growing, smaller than Docker |
| Extensibility | ⭐⭐⭐ (3/5) | Limited compared to Docker |
Why Not Recommended:
- Not compatible with existing Docker setup
- Smaller container ecosystem
- Would require migration from Docker to Podman
- Less intuitive than alternatives
4. K3s / MicroK8s (Lightweight Kubernetes)
Overview: Lightweight Kubernetes distributions designed for edge computing and resource-constrained environments.
Installation Compatibility:
- ✅ Works on existing Ubuntu
- k3s: Single binary installation
- MicroK8s: Snap package (Ubuntu native)
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐ (3/5) | Less intuitive than Portainer |
| Container/Docker Support | ⭐⭐⭐⭐ (4/5) | Uses containerd, complex deployment |
| GPU Passthrough | ⭐⭐⭐⭐⭐ | Excellent GPU support, NVIDIA operator |
| NAS/File Sharing | ⭐⭐ (2/5) | No built-in features |
| Headscale Integration | ⭐⭐⭐⭐ | Can run as pods |
| Hardware Requirements | ⭐⭐⭐⭐ | 150-600MB RAM depending on distro |
| Learning Curve | ⭐ (1/5 - STEEP) | Very steep, Kubernetes concepts required |
| Community & Ecosystem | ⭐⭐⭐⭐⭐ | Massive Kubernetes ecosystem |
| Extensibility | ⭐⭐⭐⭐⭐ | Unlimited, enterprise-grade |
Why Not Recommended:
- Massive overkill for home server
- Steep learning curve (weeks to months)
- Complex for simple tasks
- Use case doesn't need Kubernetes orchestration
- More resource overhead than needed
5. TrueNAS Scale
Overview: Enterprise-grade NAS operating system based on Debian with built-in Kubernetes (K3s) for app deployment.
Installation Compatibility:
- ❌ REQUIRES FRESH INSTALL
- Not dual-boot friendly
- Requires entire disk
- Minimum 2 disks for storage functionality
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐⭐ | Excellent, comprehensive |
| Container/Docker Support | ⭐⭐⭐ (3/5) | Uses K3s, more complex than Docker |
| GPU Passthrough | ⭐⭐⭐⭐ (4/5) | NVIDIA support in 24.10+, some RTX issues reported |
| NAS/File Sharing | ⭐⭐⭐⭐⭐ | Best-in-class, ZFS, snapshots, replication |
| Headscale Integration | ⭐⭐⭐ | Can deploy as K3s apps |
| Hardware Requirements | ⭐⭐ (2/5) | Requires 2+ disks, storage-intensive |
| Learning Curve | ⭐⭐⭐ (3/5 - MODERATE) | Storage concepts to learn |
| Community & Ecosystem | ⭐⭐⭐⭐⭐ | Large community, enterprise backing |
| Extensibility | ⭐⭐⭐⭐ | App catalog, K3s apps |
Why Not Recommended:
- ❌ REQUIRES FRESH INSTALL (major dealbreaker)
- ❌ Needs 2+ disks (we have 1)
- ❌ 481GB too small for NAS + apps
- ❌ Overkill for our needs
- ❌ Would lose existing Zorin OS setup
- ❌ Not suitable for our hardware configuration
6. Unraid
Overview: Popular NAS-focused OS with excellent Docker support and user-friendly interface. Known for flexible storage and parity protection.
Installation Compatibility:
- ❌ REQUIRES FRESH INSTALL
- Boots from USB drive
- Takes over entire system
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐⭐ | Excellent, polished |
| Container/Docker Support | ⭐⭐⭐⭐⭐ | Native Docker, Community Applications |
| GPU Passthrough | ⭐⭐⭐⭐⭐ | Excellent NVIDIA/AMD support |
| NAS/File Sharing | ⭐⭐⭐⭐⭐ | Excellent, flexible array, parity protection |
| Headscale Integration | ⭐⭐⭐⭐⭐ | Community containers, well-documented |
| Hardware Requirements | ⭐⭐⭐ (3/5) | Works with single disk, benefits from multiple |
| Learning Curve | ⭐⭐⭐⭐ (4/5 - EASY) | Very user-friendly |
| Community & Ecosystem | ⭐⭐⭐⭐⭐ | Massive community, active forums |
| Extensibility | ⭐⭐⭐⭐⭐ | Docker, VMs, plugins |
Why Not Recommended (Currently):
- ❌ REQUIRES FRESH INSTALL (dealbreaker)
- ❌ NOT FREE ($59-$129 license)
- ❌ Would lose existing setup
- ❌ Limited by 481GB storage
- ❌ Boots from USB (uses a port)
Note: Best all-in-one solution if starting fresh with more storage. Consider for future rebuild.
7. Proxmox VE
Overview: Enterprise virtualization platform supporting VMs and LXC containers. Industry-standard for homelabs.
Installation Compatibility:
- ❌ REQUIRES FRESH INSTALL (typically)
- Can migrate existing Ubuntu to VM (complex)
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐⭐ | Professional, comprehensive |
| Container/Docker Support | ⭐⭐⭐ (3/5) | LXC containers, not Docker directly |
| GPU Passthrough | ⭐⭐⭐⭐⭐ | Excellent, well-documented |
| NAS/File Sharing | ⭐⭐ (2/5) | No built-in, deploy as VM |
| Headscale Integration | ⭐⭐⭐ | Can run in containers/VMs |
| Hardware Requirements | ⭐⭐⭐ (3/5) | Virtualization overhead, 481GB limiting |
| Learning Curve | ⭐⭐ (2/5 - STEEP) | Virtualization concepts required |
| Community & Ecosystem | ⭐⭐⭐⭐⭐ | Huge community, enterprise support |
| Extensibility | ⭐⭐⭐⭐⭐ | Maximum flexibility |
Why Not Recommended:
- ❌ Requires fresh install
- ❌ Overkill for our needs
- ❌ Virtualization overhead
- ❌ More complex than needed
- ❌ Limited by 481GB storage
- ❌ Not optimized for Docker
8. YunoHost
Overview: Debian-based server OS focused on simplifying self-hosting with pre-packaged applications.
Installation Compatibility:
- ⚠️ Prefers fresh install
- Can work on existing Debian/Ubuntu (risky)
- May conflict with existing setup
Ratings
| Category | Rating | Notes |
|---|---|---|
| Web UI Quality | ⭐⭐⭐⭐ | Good application-focused UI |
| Container/Docker Support | ⭐⭐ (2/5) | Docker support experimental/unofficial |
| GPU Passthrough | ⭐ (1/5) | No specific support |
| NAS/File Sharing | ⭐⭐⭐ | Basic file sharing |
| Headscale Integration | ⭐⭐ | Would require manual setup |
| Hardware Requirements | ⭐⭐⭐⭐ | Lightweight |
| Learning Curve | ⭐⭐⭐⭐ | Easy for app installation |
| Community & Ecosystem | ⭐⭐⭐ | Active, limited app catalog |
| Extensibility | ⭐⭐ | Limited to YunoHost apps |
Why Not Recommended:
- ❌ Poor Docker support
- ❌ No GPU support
- ❌ Not suitable for Jellyfin + Docker setup
- ❌ Limited extensibility
- ❌ Prefers fresh install
Software-Defined Networking Solutions
Headscale ⭐ RECOMMENDED
Overview: Open-source, self-hosted implementation of Tailscale control server. Fully compatible with Tailscale clients.
Key Features:
- Self-hosted control plane
- Use official Tailscale clients
- ACL support
- Pre-authenticated keys
- Docker container available (
headscale/headscale)
Integration:
- ✅ Excellent Docker integration
- Docker Compose deployment
- Can share network to other containers
- Well-documented setup
PROS:
- ✅ Fully self-hosted
- ✅ No external dependencies
- ✅ Uses Tailscale clients
- ✅ Free and open source
- ✅ Active development
- ✅ Easy Docker deployment
CONS:
- ❌ Requires initial setup
- ❌ Less polished than Tailscale SaaS
- ❌ Self-managed (no cloud coordination)
Tailscale (Official) - SIMPLE ALTERNATIVE
Overview: Commercial mesh VPN service with generous free tier (up to 100 devices, 3 users).
PROS:
- ✅ Zero configuration
- ✅ Excellent reliability
- ✅ Free tier sufficient for home use
- ✅ Better NAT traversal out of the box
- ✅ Managed service
CONS:
- ❌ Relies on external service
- ❌ Privacy considerations (external control plane)
- ❌ Free tier limits
Nebula
Overview: Slack's open-source overlay network with built-in firewall capabilities.
Key Differences:
- Certificate-based authentication
- Built-in firewall (ACLs)
- Lighthouse coordination servers
- AES-256-GCM encryption
Why Not Recommended:
- More complex setup
- Smaller community than Tailscale/WireGuard
- Less polished tooling
- Steeper learning curve
WireGuard
Overview: Modern, lightweight VPN protocol built into Linux kernel.
PROS:
- ✅ Excellent performance (kernel-level)
- ✅ Simple protocol
- ✅ Widely supported
- ✅ Very secure
CONS:
- ❌ Point-to-point (not mesh)
- ❌ Manual configuration for mesh networking
- ❌ No built-in coordination
- ❌ More setup required for home use
Comparison Matrix
| Solution | Existing OS | Web UI | Docker | GPU | NAS | Learning Curve | Storage | Best For |
|---|---|---|---|---|---|---|---|---|
| Portainer + Docker | ✅ YES | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | EASY | Minimal | Best Overall |
| CasaOS | ✅ YES | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | EASIEST | Minimal | Beginners |
| Cockpit + Podman | ✅ YES | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | Moderate | Minimal | Linux admins |
| k3s/MicroK8s | ✅ YES | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | STEEP | Low | Learning K8s |
| TrueNAS Scale | ❌ NO | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Moderate | HIGH | NAS primary |
| Unraid | ❌ NO | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Easy | Medium | Fresh install |
| Proxmox VE | ❌ NO | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | STEEP | Medium | Virtualization |
| YunoHost | ⚠️ Risky | ⭐⭐⭐⭐ | ⭐⭐ | ⭐ | ⭐⭐⭐ | Easy | Low | Not recommended |
Final Recommendation: Portainer + Docker Compose
Decision Factors
Why Portainer Wins:
- ✅ No OS Reinstall - Works on existing Zorin OS
- ✅ Leverages Existing Docker - Already have Docker 28.1.1 installed
- ✅ Minimal Storage Footprint - Perfect for 481GB constraint
- ✅ Full RTX 2080 Ti Support - Excellent for Jellyfin hardware transcoding
- ✅ Easy Learning Curve - Rated 9.6/10 for ease of use
- ✅ Massive Ecosystem - Thousands of pre-built containers
- ✅ Free and Open Source - No licensing costs
- ✅ Quick Setup - 15-30 minutes to get running
- ✅ Perfect for 16GB RAM / 481GB storage - Minimal overhead
- ✅ Excellent Headscale Integration - Simple Docker deployment
- ✅ Meets All Requirements - Jellyfin, Nextcloud, file servers, web servers
- ✅ Active Community - Extensive support and documentation
- ✅ Easy Extensibility - Add services via web UI
- ✅ Web UI for Everything - No command-line required for basic tasks
When This Might Not Be Right
- If you need enterprise NAS features (ZFS snapshots, replication)
- If you want one-click app installation without any configuration (choose CasaOS)
- If you need advanced RAID configurations
- If you're planning major storage expansion (consider TrueNAS later)
Alternative Consideration: CasaOS
Choose CasaOS instead if:
- You want the absolute easiest experience
- You prioritize beautiful UI over control
- You're completely new to self-hosting
- You want app-store simplicity
- You can sacrifice some control for ease-of-use
Note: You can also run both - CasaOS will recognize existing Docker containers managed by Portainer.
Networking Recommendation
Primary Choice: Headscale
- Self-hosted Tailscale control server
- Full privacy and control
- Uses official Tailscale clients
- Docker container deployment
- No external dependencies
Alternative: Tailscale Free Tier
- Zero configuration
- Excellent reliability
- Free for personal use (100 devices, 3 users)
- Better NAT traversal out of the box
- Managed service (less maintenance)
Recommendation: Start with Headscale for full control, fall back to Tailscale if setup is too complex.
Resource Links
Portainer + Docker Compose
- Official Docs: https://docs.portainer.io/
- GPU Configuration: Search "Portainer GPU passthrough Docker Compose"
- Stack Templates: https://github.com/portainer/templates
CasaOS
- Official Site: https://casaos.io/
- GitHub: https://github.com/IceWhaleTech/CasaOS
- Community: https://community.zimaspace.com/
Headscale
- Official Docs: https://headscale.net/
- GitHub: https://github.com/juanfont/headscale
- Docker Setup: Check official documentation
Jellyfin Hardware Transcoding
- Official Docs: https://jellyfin.org/docs/general/administration/hardware-acceleration/
- NVIDIA Guide: Jellyfin docs for NVIDIA-specific configuration
- RTX 2080 Ti: Fully supported, handles multiple 4K transcodes
NVIDIA Container Toolkit
- Official Docs: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/
- Ubuntu Setup: Follow NVIDIA's Ubuntu installation guide
- Testing: Use nvidia-smi in containers to verify
Docker Compose Examples
- Awesome Docker: https://github.com/veggiemonk/awesome-docker
- Compose Examples: https://github.com/docker/awesome-compose
- Media Server Stacks: Search GitHub for "jellyfin nextcloud docker-compose"
Next Steps
Proceed to implementation-plan.md for detailed step-by-step implementation instructions with phases, tests, and validation checks.
Research compiled from: TrueNAS community forums, Portainer documentation, CasaOS project, Jellyfin docs, NVIDIA Container Toolkit guides, Headscale documentation, Reddit homelab communities, and various technical blogs specializing in home server deployments (2024-2025)