This is the updated docker-compose repo of all the media, home, and web server apps described in the following guides on our website:
- Docker Media Server Ubuntu: Compose for 23 Awesome Apps
- Docker Media Server with Traefik 2 Reverse Proxy
- WordPress on Docker with Nginx, Traefik, LE SSL, Security, and Speed
- Synology Docker Media Server with Traefik, Docker Compose, and Cloudflare
When you are ready to upgrade to Traefik or prefer Traefik over Nginx Proxy Manager, I strongly suggest getting Traefik and Traefik dashboard up and running before adding any other app. Here is the order I would recommend:
- Traefik with HTTP Authentication. This requires:
- .env file
- secrets
- network definition
- middlewares and chains
- Socket Proxy
- Check to ensure Traefik still works
- OAuth or Authelia (optional)
- Check to ensure OAuth works
- Put Traefik dashboard behind OAuth or Authelia and disable HTTP Authentication
- Ensure Traefik dashboard works behind OAuth/Authelia
- Proceed to add portainer and other apps/services
Go step-by-step. If you bite too big of a piece, I guarantee you will choke.
Supporting Articles:
- How to Install Docker and Docker Compose on Ubuntu 22.04 LTS
- How to Install Docker and Docker Compose on Ubuntu 20.04 LTS
- Cloudflare Settings for Traefik Docker: DDNS, CNAMEs, & Tweaks
- Google OAuth 2 MFA Protection for Docker
- Authelia MFA Protection for Docker
- Traefik Docker Security Best Practices
- Nextcloud Docker with Traefik Reverse Proxy for Beginners
The following posts have been combined and updated for Traefik v2 (linked above):
- Docker: 20.10.12
- Docker Compose: v2.5.0
- Traefik: 2.6
Update (September 13, 2021): I moved from TOML to YAML for Traefik 2 dynamic configurations. I have included example configuration files for both. However, since I do not use TOML anymore, there may be minor syntax errors or typos.
- docker-compose.yml - this is the basic media server stack with Nginx Proxy Manager instead of Traefik
- docker-compose-t2.yml - this is my main stack with most apps/services, including Traefik
- docker-compose-t2-web.yml - web server specific stack for WordPress and non-WordPress sites with Nginx and Traefik
- docker-compose-t2-synology.yml - apps/services that I run on Synology NAS using Docker Compose for Homelab use
- docker-compose-t2-obsolete.yml - apps/services that I once tried/used but don't use anymore (future compatibility not guaranteed)
Almost any app/service from the docker-compose files listed above can be copy-pasted to any other compose file in this repo.
- archives/docker-compose-t1.yml
- archives/docker-compose-t1-vpn.yml
- archives/docker-compose-t1-obsolete.yml
- archives/docker-compose-t1-swarm.yml
- MAIN - Ubuntu 22.04 Proxmox LXC Container on Intel Xeon E3-1240 V2.
- WEB - Ubuntu 22.04 Proxmox VM on Intel Xeon E3-1240 V2.
- SYNOLOGY - Synology DS918+ NAS.
I use Syncthing to keep certain key files synched between various systems.
The apps I use are scattered around in several different docker-compose files. Some apps are used in more than one host and some on only one.
- Traefik - Reverse Proxy
- Nginx Proxy Manager - Reverse Proxy
- Docker Socket Proxy - Secure Proxy for Docker API
- Traefik Custom Error Pages
- OAuth - Google OAuth 2 Forward Authentication
- Authelia - Private Forward Authentication
- Portainer - Container Management
- Organizr - Unified Frontend
- Heimdall - Unified Frontend Alternative
- Autoindex - Plain text Index to All Files
- Home Assistant Core - Home Automation
- HA-Dockermon - Manage Docker containers in Home Assistant
- Mosquitto - MQTT Broker
- MotionEye - Video Surveillance
- ZoneMinder - Video Surveillance
- MiFlora - MiFlora MQTT Daemon (MiFlora Plant Sensors)
- MariaDB - MySQL Database
- phpMyAdmin - Database management
- InfluxDB - Database for sensor data
- Postgres - Database
- Grafana - Graphical data visualization for InfluxDB data
- Varken - Monitor Plex, Sonarr, Radarr, and Other Data
- Redis - Key value store
- Redis Commander - Redis management
- jDownloader - Download management
- TransmissionBT with VPN - Torrent Downloader with IPVanish VPN.
- SABnzbd - Binary newsgrabber, NZB downloader
- Nzbget - Binary newsgrabber, NZB downloader
- qBittorrent with VPN - Torrent downloader
- NZBHydra2 - NZB meta search
- Jackett - Torrent proxy
- Prowlarr - Torrent proxy
- Lidarr - Music Management
- Radarr - Movie management
- Sonarr - TV Shows management
- LazyLibrarian - Books Management
- Readarr - Books Management
- AirSonic - Music Server
- NaviDrome - Music Server
- FunkWhale - Music Server
- Calibre - Ebook/Audiobook Server
- Calibre-Web - Ebook/Audiobook Reader
- Plex - Media Server
- Emby - Media Server
- Jellyfin - Media Server
- Ombi - Media Requests
- Tautulli - Previously PlexPy. Plex statistics and monitoring
- Plex-Sync - For Syncing watched status between plex servers
- PhotoShow - Personal Photo Gallery and viewer
- TellyTv- IPTV proxy for Plex
- xTeve- IPTV proxy for Plex
- Bazarr - Subtitle Management
- Picard - Music Library Tagging and Management
- Handbrake - Video Conversion, Transcoding, and Compression
- MKVToolNix - Video Editing, Remuxing (changing media container while keeping original source quality)
- MakeMKV - Video Editing (Ripping from Disks)
- FileBot - File renamer
- Tiny Media Manager - Media Files Management
- Firefox - Web Broswer
- Glances - System Information
- APCUPSD - APC UPS Management
- Guacamole - Remote desktop, SSH, on Telnet on any HTML5 Browser
- Guacamole Daemon - Needed for Guacamole
- Dozzle - Docker logs viewer
- qDirStat - Directory Statistics
- StatPing - Status Page & Monitoring Server
- SmokePing - Network Latency Monitoring
- VS Code Server - Code Editor
- Logarr - Log Management
- Monitorr - Webfront to display the status of any webapp or service
- Cloud Commander - Web File Manager
- Cloud9 - Cloud IDE
- SMTP To Telegram - Sends all incoming Email messages to Telegram
- UniFi Controller - Controller for Ubiquiti UniFi Network Gear
- Rclone - Mount Cloud/Google Drive
- MergerFS - Merge local and remote file systems
- Nginx - Web Server
- php7 - PHP-FPM
- Watchtower - Automatic Docker Container Updates
- Docker-GC - Automatic Docker Garbage Collection
- Traefik Certificate Dumper - Extract Traefik SSL Certs
- Cloudflare DDNS - Dynamic IP Updater
- Cloudflare Companion - Automatic CNAME creation for services
Follow the guides linked at the beginning of this readme.
--------- ANYTHING THAT HAS "example" IN THE NAME WILL HAVE TO BE RENAMED APPROPRIATELY ---------
I use bash_aliases to simplify starting and stopping containers/stack. Included in the repo is an example of bash_aliases I use (replace USER with your Linux username). Here are some example alias commands:
- dcup2 - Start Docker Traefik 2 stack
- dcdown2 - Stop Docker Traefik 2 stack
- dcrec2 - Start or recreate a specific service
- dcstop2 - Stop a specific service
- dcrestart2 - Restart a specific service
- dclogs2 - See real-time logs for the corresponding stack or service
- dcpull2 - Pull new images for the corresponding stack or service