Home

🏠 Selfhosted

Unified • Automated • Production-Ready

  • Quick Start


    Get up and running in minutes with our step-by-step guide

  • Service Management


    Learn how to manage and configure your self-hosted services

  • Architecture


    Understand the unified system architecture

  • Roadmap


    See what's coming next in our development roadmap

What is Selfhosted?

A Docker Swarm-based homelab deployment platform that simplifies running multiple self-hosted services. With pre-configured compose files for 25+ popular services, automatic SSL certificates via Traefik, centralized SSO via Authentik, automated backups, and network storage integration, you can have a complete homelab infrastructure running in minutes.

What is self-hosting?

Self-hosting is the practice of running and maintaining your own services instead of relying on third-party providers, giving you control over your data and infrastructure. For more information, see r/selfhosted.

🚀 Why This Homelab Platform?

  • 📦 Pre-Configured Services


    25+ ready-to-deploy services with Docker Compose files

  • 🛡 Automatic SSL


    Traefik reverse proxy with Let's Encrypt + Cloudflare DNS

  • :network-wired: Network Storage


    Built-in SMB/CIFS support for persistent data on NAS

  • Docker Swarm Ready


    Multi-node orchestration and high availability

  • Battle-Tested


    Comprehensive linting, static analysis, and validation playbooks

  • One-Command Deploy


    Deploy everything with task ansible:deploy:full after a one-time setup.

✨ Key Features

Environment-Based Configuration

Single .env file contains all configuration - domains, credentials, storage paths, and API keys.

Pre-Built Service Stack

25+ popular services with production-ready Docker Compose configurations including Traefik labels and Authentik SSO integration.

Simple Deployment Interface

A simple Taskfile.yml provides a clean and consistent interface for all management commands, powered by Ansible.

SSL Certificate Automation

Traefik reverse proxy with Let's Encrypt certificates via Cloudflare DNS challenge - fully automated.

Reverse Proxy Integration

Every service pre-configured with Traefik labels for automatic routing and SSL termination.

Docker Swarm Orchestration

Multi-node deployment with automatic service placement, health checks, and rolling updates.

📋 Available Services

Pre-configured Docker Compose stacks ready for deployment:

  • PhotoPrism - AI-powered photo management and organization
  • Emby - Media server for streaming movies and TV shows
  • CryptPad - Encrypted collaborative document editing
  • LibreChat - AI chat interface supporting multiple LLM providers
  • Homepage - Centralized dashboard for all services
  • Traefik - Reverse proxy with automatic SSL certificates
  • Technitium DNS - Local DNS server for internal service resolution
  • Sonarr - TV series management and automation
  • Radarr - Movie management and automation
  • Prowlarr - Indexer manager for media automation
  • Downloads Stack - Unified qBittorrent, Deluge, and VPN setup with SOCKS5 proxy

Total: 25+ pre-configured services with more being added regularly!

New in v3.4.0: - Authentik - Identity provider and SSO (integrated with 8+ services) - Kopia - Automated encrypted backups to cloud storage - iSCSI Storage - Enhanced storage backend for media services

🎯 Quick Example

Deploy your entire homelab with just a few commands:

# 1. Clone and setup
git clone https://github.com/chutch3/homelab.git
cd homelab

# 2. Configure your environment
cp .env.example .env
nano .env  # Set your domain, Cloudflare credentials, etc.

# 3. Configure your hosts
nano ansible/inventory/02-hosts.yml # Add your hosts and their roles

# 4. Install Ansible and dependencies
task ansible:install

# 5. Deploy everything
task ansible:bootstrap
task ansible:cluster:init
task ansible:deploy:full

That's it! All services deploy automatically with: - ✅ Automatic SSL certificates via Let's Encrypt + Cloudflare - ✅ Traefik reverse proxy routing - ✅ SMB/CIFS network storage integration - ✅ Docker Swarm orchestration across multiple nodes - ✅ Homepage dashboard showing all services

Or deploy specific services only:

# Deploy only the homepage service
task ansible:deploy:stack -- -e "stack_name=homepage"

🏗️ Architecture Overview

graph TB subgraph "User & Configuration" USER("User") TASK("Taskfile.yml") DOT_ENV(".env") INVENTORY("ansible/inventory/02-hosts.yml") STACKS_DIR("stacks/") end subgraph "Orchestration" ANSIBLE("Ansible Playbooks") end subgraph "Docker Swarm Cluster" MANAGER("Manager Node") WORKER("Worker Node") TRAEFIK("Traefik Proxy") APPS("Apps") end USER -- "runs" --> TASK TASK -- "triggers" --> ANSIBLE ANSIBLE -- "reads" --> DOT_ENV ANSIBLE -- "reads" --> INVENTORY ANSIBLE -- "reads" --> STACKS_DIR ANSIBLE -- "deploys to" --> MANAGER MANAGER -- "manages" --> WORKER MANAGER -- "runs" --> TRAEFIK MANAGER -- "runs" --> APPS

🚀 Getting Started

Ready to start your self-hosting journey? Choose your path:

🏷️ Tags

Browse by tags to find content relevant to your use case.