Files
portainer-core/docs/research.md
T

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:

  1. Limited storage (481GB) - Rules out storage-intensive solutions
  2. Existing OS installation - Prefer solutions that don't require fresh install
  3. RTX 2080 Ti excellent for Jellyfin hardware transcoding
  4. Docker already installed - Should leverage existing infrastructure

Requirements

  1. 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
  2. Web-based management interface for container/service management

  3. NAS capabilities (file storage and sharing)

  4. Software-defined networking - Specifically Tailscale's OSS version (Headscale) or similar

  5. External access capabilities (secure remote access)

  6. Easy extensibility for adding more services

  7. GPU passthrough support for Jellyfin hardware transcoding


Solutions Evaluated

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

  1. Setting up NVIDIA Container Toolkit (one-time setup)
  2. Configuring proper GPU permissions
  3. Learning Docker Compose syntax (minimal if using UI)
  4. 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

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:

  1. No OS Reinstall - Works on existing Zorin OS
  2. Leverages Existing Docker - Already have Docker 28.1.1 installed
  3. Minimal Storage Footprint - Perfect for 481GB constraint
  4. Full RTX 2080 Ti Support - Excellent for Jellyfin hardware transcoding
  5. Easy Learning Curve - Rated 9.6/10 for ease of use
  6. Massive Ecosystem - Thousands of pre-built containers
  7. Free and Open Source - No licensing costs
  8. Quick Setup - 15-30 minutes to get running
  9. Perfect for 16GB RAM / 481GB storage - Minimal overhead
  10. Excellent Headscale Integration - Simple Docker deployment
  11. Meets All Requirements - Jellyfin, Nextcloud, file servers, web servers
  12. Active Community - Extensive support and documentation
  13. Easy Extensibility - Add services via web UI
  14. 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.


Portainer + Docker Compose

CasaOS

Headscale

Jellyfin Hardware Transcoding

NVIDIA Container Toolkit

Docker Compose Examples


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)