Skip to content

Self-Hosted Services

Containerized applications for your homelab infrastructure.

Service Categories

Infrastructure

Service Description
Reverse Proxy Route traffic to services (Traefik, Caddy)
SSL/TLS Certificates Certificate management and HTTPS
Authentication SSO and identity management
Pi-hole Network-wide ad blocking

Applications

Service Description
Media Stack Jellyfin and *arr automation
Homepage Homelab dashboard

Monitoring

Service Description
Uptime Kuma Status pages and monitoring

Deployment Patterns

Internet
    v
┌─────────────────┐
│  Reverse Proxy  │  (Traefik/Caddy)
│  + SSL/TLS      │
└─────────────────┘
    ├──> Authentication (Authentik)
    ├──> Applications
    │    ├── Jellyfin
    │    ├── Homepage
    │    └── Other services
    └──> Monitoring
         ├── Uptime Kuma
         └── Prometheus/Grafana

DNS: Pi-hole (network-wide)

Docker Network Setup

# Create shared network
networks:
  proxy:
    external: true

# In each service's docker-compose.yml
services:
  myservice:
    networks:
      - proxy
      - default

networks:
  proxy:
    external: true
# Create network
docker network create proxy

Common Configurations

Environment Variables

# .env file template
DOMAIN=example.com
TZ=Europe/Oslo
PUID=1000
PGID=1000

Volume Permissions

services:
  app:
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config:/config

Resource Limits

services:
  app:
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 512M

Getting Started

  1. Set up Reverse Proxy first
  2. Configure Authentication for SSO
  3. Deploy services as needed
  4. Add Homepage dashboard
  5. Set up Uptime Kuma monitoring

See Also