homelab
is a collection of services that can be deployed from your home server and accessed
securely from anywhere in the world. Ultimately everything is deployed into a single
docker compose application. Each service belongs to a docker compose profile - and the
Makefile
contains everything you need to get started and manage your homelab.
core
: Thecore
profile is the base of this project, it includes a traefik reverse proxy and OAuth service that allows you to access all of your services via a single domain name securely behind HTTPS and protected with Google OAuth.media
: Themedia
profile includes services like Plex, Sonarr, Radarr, and Ombi that allow you to request, download, organize, and stream media to your devices. This profile is perfect for those who want to have a media server in their homelab.utilities
: Theutilities
profile includes services like Watchtower and Portainer that are designed to help you manage your homelab, monitor your services, and keep your containers up-to-date.miscellaneous
: Themiscellaneous
profile is disabled by default. It includes services like ChatGPT Next Web and LibreOffice Online that don't fit into the other profiles. These services are great for improving your productivity and adding some fun to your homelab.
This repository is a large docker compose project that allows you to deploy a variety of services to your homelab.
At the root of this repository is a docker-compose.yaml
file that defines
the entire homelab project - it uses the include
directive to pull in
individual service docker compose files from the apps
directory.
.
βββ docker-compose.yaml # Main Docker Compose File
βββ .env # Environment Variables and Configuration
βββ Makefile # Makefile for common tasks and docker compose wrappers
βββ secrets # Secret Files
β βββ cloudflare_api_key.secret # Cloudflare API Key
β βββ google_oauth.secret # Google OAuth Credentials and Whitelist
βββ apps # Individual Service Docker Compose Files
β βββ plex.yaml
β βββ radarr.yaml
β βββ ombi.yaml
β βββ sonarr.yaml
β βββ oauth.yaml
β βββ chat-gpt-next-web.yaml
β βββ watchtower.yaml
β βββ traefik # Traefik Reverse Proxy
β βββ docker-compose.yaml # Traefik Docker Compose File
β βββ rules # Traefik Middlewares and Rules
β βββ middlewares-chains.yml
β βββ middlewares.yml
β βββ tls-opts.yml
βββ appdata # Application Data Persistent Volumes
βββ plex # Each individual service has its own subdirectory
βββ sonarr
βββ oauth
βββ traefik
βββ chat-gpt-next-web
βββ utilities
βββ watchtower
All services are configured via a .env
file at the root of the project and a few secret
files in the secrets
directory. These files are used to define settings and credentials
for all services that are deployed. You can copy the example files to get started:
cp docs/example.env .env
cp -r docs/example-secrets/ secrets/
See the docs for more information on configuration and getting started.