Skip to content

Commit

Permalink
* Started moving partial stack to seed/cloud box.
Browse files Browse the repository at this point in the history
* Created an appdata folder and moved all app folders into it (to tidy things up a bit).
* Moved htpasswd from shared folder to secrets. Edited middlewares-basic-auth. This changes the way htpasswd is called in docker-compose.
* Created a folder called "archives". Moved all Traefik v1 stuff into it.
* Changed $DOMAINNAME to $DOMAINNAME0
* Moved t2_proxy and socket_proxy subnets in docker compose file instead of outside the compose file (SimpleHomelab#119). Therefore, it is not necessary to create these networks external before starting the stack. Improved portability.
* Removed some environmental variables in paths to simplify things (eg. $SECRETSDIR is now $DOCKERDIR/secrets).
* Changed volumes for apps (eg. radarr, sonarr, etc.) to reduce unnecessary rewrites - https://trash-guides.info/Misc/how-to-set-up-hardlinks-and-atomic-moves/.
* Switched backed to tecnativa's socket proxy (fluencelabs socket proxy not updated for months).
* Updated thomseddon/traefik-forward-auth (OAuth) environmental variables to use PROVIDERS_GOOGLE_CLIENT and PROVIDERS_GOOGLE_CLIENT_SECRET.
* Removed exposing ports to docker host. This was not needed on my cloud/seed box all apps could talk to each other using their internal static IPs.
* Removed exposing socket-proxy port. All apps connected to socket_proxy network can connect to the proxy using internal hostname.
* Changed Organizr image to organizr/organizr.
* Added $TZ to linuxserver/mariadb - statping MySQL did not work without it.
* Put mariadb, influxdb, and redis on "default" network and added dependent services to the network (eg. authelia, statping, PMA, Guacamole, etc.)
* Obsoleted Emby - Between Plex and Jellyfin all my needs are covered.
* Added readarr (nightly) - still alpha
* Added descriptions at the top for various docker-compose files.
* Added secrets_example folder and added some example secrets.
* Updated README.md and CHANGELOG.md.
* Added Rclone and MergerFS with Google Drive.
* Added systemd startup scripts for Rclone (rclone-drive.service and rclone-crypt.service)  and MergerFS (merge-media.service) based on https://github.com/animosity22/homescripts.
* Added media-services.txt, which list the services to stop using dcup2/dcstop2 $(cat media-services.txt)
* Changed restart on some containers dependent on MergerFS media folder to "no". Moved starting those containers to a bash script upon successful GDrive mount.
* Added a script to monitor the status of Rclone and MergerFS mount (check-mounts.sh). If one of the mount fails then media folder dependent services are automatically stopped and an email notification is sent.
* Added script to automatically/periodically move files from "local" to "remote" (Google Drive) for MergerFS (upload-media.sh).
* Added a script to move/convert unencrypted media files on Google Drive to encrypted (drive-to-crypt.sh). The script is set to run at a daily average of 2.75 MB/s, which equates to about 474 GB per day (~237 GB download, encrypt, and ~237 GB reupload). Google Drive Business has a maximum of 750 GB per day.
* Removed watchtower to avoid automatic reboot of containers that use Rclone/MergerFS mount.
  • Loading branch information
SimpleHomelab committed Feb 14, 2021
1 parent 6342017 commit ec9b3b2
Show file tree
Hide file tree
Showing 59 changed files with 1,145 additions and 682 deletions.
127 changes: 79 additions & 48 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,59 +1,90 @@
*
*/

!.gitignore
!README.md
!CHANGELOG.md
!LICENSE
!.bash_aliases.example
!docker-compose-t1.yml
!docker-compose-t1-vpn.yml
!docker-compose-t1-obsolete.yml
!docker-compose-t1-swarm.yml
!.env.example

!docker-compose-t2.yml
!docker-compose-t2-vpn.yml
!docker-compose-t2-obsolete.yml
!docker-compose-t2-synology.yml
!docker-compose-t2-web.yml
!.env.example
!README.md
!CHANGELOG.md
!LICENSE
!traefik1
traefik1/*
!traefik1/*.example
!traefik1/rules
traefik1/rules/*
!traefik1/rules/*.example
!docker-compose-t2-nuc.yml

!shared
shared/*
!shared/*.example
!picard
picard/*
!picard/*.example
!traefik2
traefik2/*
!traefik2/*.example
!traefik2/rules
traefik2/rules/*
!traefik2/rules/*.example
!traefik2/rules/tls-opts.yml
!authelia
authelia/*
!authelia/*.example
!php
php/*
!php/php7
php/php7/*
!php/php7/*.example
!php/php7/conf.d
php/php7/conf.d/*
!php/php7/conf.d/*.example
!nginx
nginx/*
!nginx/*.example
!nginx/conf.d
nginx/conf.d/*
!nginx/conf.d/*.example
!nginx/sites
nginx/sites/*
!nginx/sites/*.example
!nginx/common
nginx/common/*
!nginx/common/*.example

!secrets_example
!secrets_example/*

!scripts
scripts/*
!scripts/*.example
!scripts/media-services.txt
!scripts/systemd
scripts/systemd/*
!scripts/systemd/*.example

!archives
archives/*
!archives/docker-compose-t1.yml
!archives/docker-compose-t1-vpn.yml
!archives/docker-compose-t1-obsolete.yml
!archives/docker-compose-t1-swarm.yml
!archives/traefik1
archives/traefik1/*
!archives/traefik1/*.example
!archives/traefik1/rules
archives/traefik1/rules/*
!archives/traefik1/rules/*.example
!archives/traefik1-swarm
archives/traefik1-swarm/*

!appdata
appdata/*

!appdata/picard
appdata/picard/*
!appdata/picard/*.example

!appdata/traefik2
appdata/traefik2/*
!appdata/traefik2/*.example
!appdata/traefik2/rules
appdata/traefik2/rules/*
!appdata/traefik2/rules/*.example
!appdata/traefik2/rules/tls-opts.yml

!appdata/authelia
appdata/authelia/*
!appdata/authelia/*.example

!appdata/rclone
appdata/rclone/*
!appdata/rclone/*.example

!appdata/php
appdata/php/*
!appdata/php/php7
appdata/php/php7/*
!appdata/php/php7/*.example
!appdata/php/php7/conf.d
appdata/php/php7/conf.d/*
!appdata/php/php7/conf.d/*.example

!appdata/nginx
appdata/nginx/*
!appdata/nginx/*.example
!appdata/nginx/conf.d
appdata/nginx/conf.d/*
!appdata/nginx/conf.d/*.example
!appdata/nginx/sites
appdata/nginx/sites/*
!appdata/nginx/sites/*.example
!appdata/nginx/common
appdata/nginx/common/*
!appdata/nginx/common/*.example
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
# Changelog

- Only showing high-level changes. Smaller changes are too many to list.
- Only showing high-level changes. Smaller changes are too many to list. See commits.

## Planned:

- Add projectsend, embystat, nextcloud, nut-upsd, HealthChecks, FileRun, fail2ban, ofelia
- improvements from https://github.com/jamescurtin/traefik-proxy
- implement secrets and remove variables from .env
- add prometheus, glances to influxdb, speedtest to influxdb
- Merge smarthomebeginner.com docker-compose (docker-compose-t2-web.yml) to cloud/seedbox.
- Web GUI for rclone
- Switch to Hotio.dev's cloudflareddns,

## January 6, 2020

- Moved server to Proxmox on a dedicated cloud/seedbox.
- Extensive tidying up of the setup.
- Moved all container data to the new "appdata" folder.
- Added Google Drive using rclone and mergerfs.
- Removed Emby. Added Readarr and Tiny Media Manager

## October 15, 2020

Expand Down
144 changes: 74 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,129 +46,133 @@ The following posts have been combined and updated for Traefik v2 (linked above)

- docker-compose-t1-swarm.yml

## What apps are included in this stack?

We will try to keep this repo up-to-date. For now, here are the apps currently included in our stack:

### FRONTENDS

In paranthesis, the system on which it runs.
## MY SETUP

- NUC - Intel NUC Home Server with Pop OS
- MAIN - Ryzen 7 3800x Proxmox Server with Ubuntu 20.04
- NUC - Intel NUC Home Server with Pop OS (future Proxmox)
- SYNOLOGY - Synology DS918+ NAS
- WEB - Digital Ocean Virtual Private Server with Ubuntu 20.04
- OBSOLETE - Not used anymore

See the corresponding Docker Compose file for the compose snippet.
## What apps are included in this stack?

The apps I use are scattered around in five different docker-compose files (on five hosts listed above). Some apps are used in more than one host and some on only one.

- Traefik - Reverse Proxy (NUC and WEB)
- Docker Socket Proxy - Secure Proxy for Docker API (NUC, SYNOLOGY, and WEB)
### FRONTENDS

- Traefik - Reverse Proxy
- Docker Socket Proxy - Secure Proxy for Docker API
- Traefik Custom Error Pages (OBSOLETE)
- OAuth - Google OAuth 2 Forward Authentication (NUC and WEB)
- Authelia - Private Forward Authentication (NUC and WEB)
- Portainer - Container Management (SYNOLOGY and WEB)
- Organizr - Unified Frontend (NUC)
- Heimdall - Unified Frontend Alternative (NUC)
- Autoindex - Plain text Index to All Files (NUC)
- 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

### SMART HOME

- Home Assistant Core - Home Automation (NUC)
- Home Assistant Core - Home Automation
- HA-Dockermon - Manage Docker containers in Home Assistant (OBSOLETE)
- Mosquitto - MQTT Broker (SYNOLOGY)
- MotionEye - Video Surveillance (NUC)
- Mosquitto - MQTT Broker
- MotionEye - Video Surveillance
- ZoneMinder - Video Surveillance (OBSOLETE)
- MiFlora - MiFlora MQTT Daemon (MiFlora Plant Sensors) (OBSOLETE)

### DATABASE

- MariaDB - MySQL Database (SYNOLOGY and WEB)
- phpMyAdmin - Database management (NUC and WEB)
- InfluxDB - Database for sensor data (SYNOLOGY)
- MariaDB - MySQL Database
- phpMyAdmin - Database management
- InfluxDB - Database for sensor data
- Postgres - Database (OBSOLETE)
- Grafana - Graphical data visualization for InfluxDB data (NUC)
- Grafana - Graphical data visualization for InfluxDB data
- Varken - Monitor Plex, Sonarr, Radarr, and Other Data (OBSOLETE)
- Redis - Key value store (SYNOLOGY and WEB)
- Redis Commander - Redis management (OBSOLETE)
- Redis - Key value store
- Redis Commander - Redis management

### DOWNLOADERS

- jDownloader - Download management (NUC)
- TransmissionBT with VPN - Torrent Downloader with [IPVanish](https://www.smarthomebeginner.com/go/ipvanish) VPN. (NUC)
- SABnzbd - Binary newsgrabber, NZB downloader (NUC)
- jDownloader - Download management
- TransmissionBT with VPN - Torrent Downloader with [IPVanish](https://www.smarthomebeginner.com/go/ipvanish) VPN.
- SABnzbd - Binary newsgrabber, NZB downloader
- qBittorrent with VPN - Torrent downloader (OBSOLETE)

### INDEXERS

- NZBHydra2 - NZB meta search (NUC)
- Jackett - Torrent proxy (NUC)
- NZBHydra2 - NZB meta search
- Jackett - Torrent proxy

### PVRS

- Lidarr - Music Management (NUC)
- Radarr - Movie management (NUC)
- Sonarr - TV Shows management (NUC)
- LazyLibrarian - Books Management (NUC)
- Lidarr - Music Management
- Radarr - Movie management
- Sonarr - TV Shows management
- LazyLibrarian - Books Management
- Readarr - Books Management

### MEDIA SERVER

- AirSonic - Music Server (NUC)
- Calibre - Ebook/Audiobook Server (NUC)
- Calibre-Web - Ebook/Audiobook Reader (NUC)
- Plex - Media Server (NUC and SYNOLOGY)
- Emby - Media Server (NUC)
- Jellyfin - Media Server (NUC)
- Ombi - Media Requests (NUC)
- Tautulli - Previously PlexPy. Plex statistics and monitoring (NUC)
- Plex-Sync - For Syncing watched status between plex servers (NUC)
- PhotoShow - Personal Photo Gallery and viewer (NUC)
- AirSonic - Music Server
- Calibre - Ebook/Audiobook Server
- Calibre-Web - Ebook/Audiobook Reader
- Plex - Media Server
- Emby - Media Server (OBSOLETE)
- Jellyfin - Media Server
- Ombi - Media Requests (OBSOLETE)
- 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 (OBSOLETE)
- xTeve- IPTV proxy for Plex (OBSOLETE)

### MEDIA FILE MANAGEMENT

- Bazarr - Subtitle Management (NUC)
- Picard - Music Library Tagging and Management (NUC)
- Handbrake - Video Conversion, Transcoding, and Compression (NUC)
- MKVToolNix - Video Editing, Remuxing (changing media container while keeping original source quality) (NUC)
- MakeMKV - Video Editing (Ripping from Disks) (NUC)
- FileBot - File renamer (NUC)
- 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

### UTILITIES

- Firefox - Web Broswer (NUC)
- Duplicati - Backup App (NUC)
- Glances - System Information (NUC, SYNOLOGY, and WEB)
- APCUPSD - APC UPS Management (NUC)
- Guacamole - Remote desktop, SSH, on Telnet on any HTML5 Browser (NUC)
- Guacamole Daemon - Needed for Guacamole (NUC)
- Dozzle - Docker logs viewer (NUC and WEB)
- qDirStat - Directory Statistics (NUC)
- StatPing - Status Page & Monitoring Server (NUC)
- 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 (OBSOLETE)
- VS Code Server - Code Editor (NUC and WEB)
- VS Code Server - Code Editor
- Logarr - Log Management (OBSOLETE)
- Monitorr - Webfront to display the status of any webapp or service (OBSOLETE)
- Cloud Commander - Web File Manager (OBSOLETE)
- Cloud9 - Cloud IDE (OBSOLETE)
- SMTP To Telegram - Sends all incoming Email messages to Telegram (NUC)
- UniFi Controller - Controller for Ubiquiti UniFi Network Gear (WEB)
- SMTP To Telegram - Sends all incoming Email messages to Telegram (OBSOLETE)
- UniFi Controller - Controller for Ubiquiti UniFi Network Gear
- Rclone - Mount Cloud/Google Drive (OBSOLETE)
- MergerFS - Merge local and remote file systems (OBSOLETE)

### WEB

- Nginx - Web Server (WEB)
- php7 - PHP-FPM (WEB)
- Nginx - Web Server
- php7 - PHP-FPM

### MAINTENANCE

- Watchtower - Automatic Docker Container Updates (NUC, SYNOLOGY, and WEB)
- Docker-GC - Automatic Docker Garbage Collection (NUC, SYNOLOGY, and WEB)
- Traefik Certificate Dumper - Extract Traefik SSL Certs (NUC and WEB)
- Cloudflare DDNS - Dynamic IP Updater (SYNOLOGY)
- Cloudflare Companion - Automatic CNAME creation for services (NUC)
- Watchtower - Automatic Docker Container Updates (OBSOLETE)
- 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

# Usage

--------- ANYTHING THAT HAS "example" IN THE NAME WILL HAVE TO RENAMED APPROPRIATELY ---------

## Installation

First, install Docker and Docker Compose, as described in our <a href="https://www.smarthomebeginner.com/docker-home-media-server-2018-basic/">Docker Media Server guide</a>.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
9 changes: 9 additions & 0 deletions appdata/rclone/rclone-logrotate.conf.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/home/USER/docker/appdata/rclone/logs/* {
daily
rotate 4
size 10M
notifempty
missingok
compress
delaycompress
}
14 changes: 14 additions & 0 deletions appdata/rclone/rclone.conf.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[shb-drive]
type = drive
scope = drive
token = {"access_token":"blah_blah_blah","expiry":"2021-02-12T22:37:02.490073796-05:00"}
root_folder_id = blah_blah_blah
client_id = blah_blah_blah
client_secret = blah_blah_blah

[shb-crypt]
type = crypt
remote = shb-drive:crypt
password = blah_blah_blah
password2 = blah_blah_blah

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit ec9b3b2

Please sign in to comment.