Skip to content

This repository contains a collection of Docker Compose configurations for setting up and managing various services in a home lab environment. Each stack is tailored for ease of use, scalability, and maintainability, with detailed descriptions and customizable options.

Notifications You must be signed in to change notification settings

Anashost/HomeLab-Docker-Stacks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 

Repository files navigation

Revolut.Me PayPal.Me ko_fi buymecoffee patreon

HomeLab Docker Stacks

This repository contains a collection of Docker Compose configurations for setting up and managing various services in a home lab environment. Each stack is tailored for ease of use, scalability, and maintainability, with detailed descriptions and customizable options.

               ##         .
             ## ## ##        ==
          ## ## ## ## ##    ===
      /"""""""""""""""""\___/ ===
 ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
      \______ o           __/
        \    \         __/
         \____\_______/
  _    _                         _           _        _____             _             
 | |  | |                       | |         | |      |  __ \           | |            
 | |__| | ___  _ __ ___   ___   | |     __ _| |__    | |  | | ___   ___| | _____ _ __ 
 |  __  |/ _ \| '_ ` _ \ / _ \  | |    / _` | '_ \   | |  | |/ _ \ / __| |/ / _ \ '__|
 | |  | | (_) | | | | | |  __/  | |___| (_| | |_) |  | |__| | (_) | (__|   <  __/ |   
 |_|  |_|\___/|_| |_| |_|\___|  |______\__,_|_.__/   |_____/ \___/ \___|_|\_\___|_|   

Available Stacks

Home Assistant - Home Automation Home Assistant is an open-source home automation platform that lets you control, automate, and monitor smart devices in one centralized system.
services:
  homeassistant:
    container_name: homeassistant
    ## image: "ghcr.io/home-assistant/home-assistant:2024.7.4"  ## Specific version
    image: "ghcr.io/home-assistant/home-assistant:stable"       ## Latest version
    volumes:
      - /home/user/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
Plex - Media Server Plex is a powerful media server solution that organizes your media and allows streaming to various devices.
version: "2.1"
services:
  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    network_mode: host
    environment:
      - PUID=0
      - PGID=0
      - VERSION=docker
      - PLEX_CLAIM= # optional
    volumes:
      - /srv/plex/config:/config
      - /srv/dev-disk-by-uuid-nas/plex/TV:/tv
      - /srv/dev-disk-by-uuid-nas/plex/Movies:/movies
      - /srv/dev-disk-by-uuid-nas/plex/Music:/music
    restart: unless-stopped
Jellyfin - Open Source Media Server Jellyfin is an open-source alternative to Plex, offering media organization and streaming capabilities.
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    network_mode: 'host'
    volumes:
      - /srv/jellyfin/config:/config
      - /srv/jellyfin/cache:/cache
      - type: bind
        source: /srv/dev-disk-by-uuid-nas/media
        target: /media
        read_only: true
    devices: 
      - /dev/dri:/dev/dri ## iGPU passthrough
    restart: unless-stopped
Open WebUI - Interface for LLMs Open WebUI provides a convenient interface for managing and interacting with language models.
version: '3.8'
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    environment:
      - OLLAMA_BASE_URL=http://10.0.0.100:11434 # Change this to your server IP
    ports:
      - "3232:8080"
    volumes:
      - open-webui:/app/backend/data
    restart: unless-stopped
volumes:
  open-webui:
AdGuard Home - DNS-based Ad Blocking AdGuard Home is a network-wide ad and tracker blocking DNS server.
version: '3.8'
services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    volumes:
      - adguard-workdir:/opt/adguardhome/work  # Docker volume for work directory
      - adguard-confdir:/opt/adguardhome/conf  # Docker volume for configuration directory
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 784:784/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 80:80/tcp
      - 443:443/tcp
    networks:
      - adguard_net
volumes:
  adguard-workdir:
  adguard-confdir:
networks:
  adguard_net:
    driver: bridge
Pi-hole - Network-wide Ad Blocking Pi-hole is a DNS sinkhole that protects your devices from unwanted ads and trackers.
version: '3.8'
services:
  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    ports:
      - "8085:80"        # Web interface
      - "443:443"        # HTTPS (optional)
      - "5354:53/tcp"    # DNS (TCP)
      - "5354:53/udp"    # DNS (UDP)
    volumes:
      - pihole-data:/etc/pihole
      - dnsmasq-data:/etc/dnsmasq.d
    environment:
      - WEBPASSWORD=0000
      - DNS1=8.8.8.8
      - DNS2=8.8.4.4
      - ServerIP=10.0.0.100 # Change this to your server IP
    restart: unless-stopped
volumes:
  pihole-data:
  dnsmasq-data:
Uptime Kuma - Monitoring Uptime Kuma is a self-hosted monitoring solution for websites, APIs, and services.
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    ports:
      - "3001:3001" # Web interface
    volumes:
      - uptime-kuma-data:/app/data # Persist data
    environment:
      - DB_TYPE=sqlite
    restart: unless-stopped
volumes:
  uptime-kuma-data:
Nginx Proxy Manager - Reverse Proxy Nginx Proxy Manager simplifies reverse proxy management with an intuitive web interface.
services:
  app:
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    restart: unless-stopped
Nextcloud - File Sharing and Collaboration Nextcloud is a self-hosted productivity platform for file sharing, collaboration, and more.
version: '2'
volumes:
  nextcloud:
  db:
services:
  db:
    image: mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=admin
      - MYSQL_PASSWORD=xxxxxxx # Change this
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    restart: always
    ports:
      - 8888:80
    links:
      - db
    volumes:
      - /srv/dev-disk-by-uuid-nas/nextcloud:/var/www/html # Storage
    environment:
      - MYSQL_PASSWORD=xxxxxxx # Match the password above
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
VSCode Remote Server - Remote Development Code Server allows you to run VS Code in the browser for remote development.
version: '3.8'
services:
  code-server:
    image: codercom/code-server:latest
    container_name: code-server
    ports:
      - "8081:8080"  # Changed port mapping
    volumes:
      - code-server-data:/home/coder/project
    environment:
      - PASSWORD=0000  # Use a more secure password
    restart: unless-stopped
volumes:
  code-server-data:

About

This repository contains a collection of Docker Compose configurations for setting up and managing various services in a home lab environment. Each stack is tailored for ease of use, scalability, and maintainability, with detailed descriptions and customizable options.

Resources

Stars

Watchers

Forks