Merge pull request #4 from bjageman/split-files

Split files
This commit is contained in:
Braden Jageman 2024-04-28 02:44:26 -04:00 committed by GitHub
commit 4507a04211
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 499 additions and 13 deletions

2
.gitignore vendored
View File

@ -1,4 +1,2 @@
.env
config/
nginx/
nextcloud

View File

@ -1,9 +1,9 @@
# media-server-docker-compose
# Docker Compose for my Media Server
### ENV
```
PLEX_CLAIM=
DOMAIN=
```
* Arr - A collection of all the *arr apps like Radarr and Sonarr
* Dashboard - Replies on Homarr and Dashdot for a top-level dashboard
* Mail - An email service (WIP)
* Nginx-Proxy - Handles reverse proxy and SSL certs
* Plex - The Plex media server with stats
* Readers - Various media readers that can be accessed via the browser
* Wordpress - for making a site

7
arr/.env.example Normal file
View File

@ -0,0 +1,7 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

167
arr/docker-compose.yml Normal file
View File

@ -0,0 +1,167 @@
services:
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=radarr.${DOMAIN},radar.${DOMAIN}
- LETSENCRYPT_HOST=radarr.${DOMAIN},radar.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
- LETSENCRYPT_TEST=true
volumes:
- ${CONFIG_LOCATION}/radarr:/config
- ${DATA_LOCATION}/Movies:/movies
- /media/seedbox:/downloads
expose:
- "7878"
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=sonarr.${DOMAIN},sonar.${DOMAIN}
- LETSENCRYPT_HOST=sonarr.${DOMAIN},sonar.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/sonarr:/config
- ${DATA_LOCATION}/TV:/tv
- /media/seedbox:/downloads
expose:
- "8989"
ports:
- 8989:8989
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=prowlarr.${DOMAIN}
- LETSENCRYPT_HOST=prowlarr.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/prowlarr:/config
expose:
- "9696"
ports:
- 9696:9696
restart: unless-stopped
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- VIRTUAL_HOST=bazarr.${DOMAIN}
- LETSENCRYPT_HOST=bazarr.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/bazarr:/config
- ${DATA_LOCATION}/Movies:/movies #optional
- ${DATA_LOCATION}/TV:/tv #optional
expose:
- "6767"
ports:
- 6767:6767
restart: unless-stopped
overseerr:
image: lscr.io/linuxserver/overseerr:latest
container_name: overseerr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=overseerr.${DOMAIN},overseer.${DOMAIN}
- LETSENCRYPT_HOST=overseerr.${DOMAIN},overseer.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/overseerr:/config
expose:
- "5055"
ports:
- 5055:5055
restart: unless-stopped
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=lidarr.${DOMAIN},lidar.${DOMAIN}
- LETSENCRYPT_HOST=lidarr.${DOMAIN},lidar.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/lidarr:/config
- ${DATA_LOCATION}/Music:/music
- /media/seedbox:/downloads
expose:
- "8686"
ports:
- 8686:8686
restart: unless-stopped
mylar3:
image: lscr.io/linuxserver/mylar3:latest
container_name: mylar3
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=mylar.${DOMAIN},mylar3.${DOMAIN}
- LETSENCRYPT_HOST=mylar.${DOMAIN},mylar3.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/mylar3:/config
- ${DATA_LOCATION}/Comics:/comics
- /media/seedbox:/downloads
ports:
- 8090:8090
restart: unless-stopped
readarr:
image: lscr.io/linuxserver/readarr:develop
container_name: readarr
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=readarr.${DOMAIN},readar.${DOMAIN}
- LETSENCRYPT_HOST=readarr.${DOMAIN},readar.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/readarr:/config
- ${DATA_LOCATION}/Books:/books
- /media/seedbox:/downloads
expose:
- "8787"
ports:
- 8787:8787
restart: unless-stopped
readarraudio:
image: lscr.io/linuxserver/readarr:develop
container_name: readarraudio
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=readarraudio.${DOMAIN},readaraudio.${DOMAIN}
- LETSENCRYPT_HOST=readarraudio.${DOMAIN},readaraudio.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/readarr-audio:/config
- ${DATA_LOCATION}/Audiobooks:/audiobooks
- /media/seedbox:/downloads
restart: unless-stopped
networks:
default:
name: nginx-proxy
external: true

7
dashboard/.env.example Normal file
View File

@ -0,0 +1,7 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

View File

@ -0,0 +1,38 @@
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
- ${CONFIG_LOCATION}/homarr:/app/data/configs
- ${DATA_LOCATION}/homarr/icons:/app/public/icons
- ${DATA_LOCATION}/homarr:/data
environment:
- VIRTUAL_HOST=homarr.${DOMAIN}, ${DOMAIN}, www.${DOMAIN}
- LETSENCRYPT_HOST="homarr.${DOMAIN}, ${DOMAIN}, www.${DOMAIN}"
- LETSENCRYPT_EMAIL=${EMAIL}
expose:
- "7575"
ports:
- '7575:7575'
dashdot:
image: mauricenino/dashdot
container_name: dashdot
restart: unless-stopped
privileged: true
environment:
- VIRTUAL_HOST=dash.${DOMAIN}
- DASHDOT_ENABLE_CPU_TEMPS=true
- DASHDOT_FS_DEVICE_FILTER=sda,sdb,sdc,sdd,sde,sdf
- DASHDOT_FS_VIRTUAL_MOUNTS=tank/storage/media, psb29404@psb29404.seedbox.io:/files
expose:
- "3001"
ports:
- 3001:3001
volumes:
- /:/mnt/host:ro
networks:
default:
name: nginx-proxy
external: true

View File

@ -71,6 +71,7 @@ services:
- ${CONFIG_LOCATION}/plex:/config
- ${DATA_LOCATION}/TV:/tv
- ${DATA_LOCATION}/Movies:/movies
- ${DATA_LOCATION}/Music:/music
expose:
- "32400"
ports:
@ -146,6 +147,25 @@ services:
ports:
- 9696:9696
restart: unless-stopped
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- VIRTUAL_HOST=bazarr.${DOMAIN}
- LETSENCRYPT_HOST=bazarr.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/bazarr:/config
- ${DATA_LOCATION}/Movies:/movies #optional
- ${DATA_LOCATION}/TV:/tv #optional
expose:
- "6767"
ports:
- 6767:6767
restart: unless-stopped
overseerr:
image: lscr.io/linuxserver/overseerr:latest
container_name: overseerr
@ -199,6 +219,26 @@ services:
ports:
- 8090:8090
restart: unless-stopped
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
expose:
- "4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
VIRTUAL_HOST: "navidrome.${DOMAIN}"
LETSENCRYPT_HOST: "navidrome.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
volumes:
- "${DATA_LOCATION}:/data"
- "${DATA_LOCATION}/Music:/music:ro"
ubooquity:
image: lscr.io/linuxserver/ubooquity:latest
container_name: ubooquity

0
mail/docker-compose.yml Normal file
View File

8
nextcloud/.env.example Normal file
View File

@ -0,0 +1,8 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
DBPASS=password
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

View File

@ -0,0 +1,42 @@
services:
redis:
image: redis:alpine
container_name: redis-dbcache
restart: unless-stopped
db:
image: mysql:latest
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${DBPASS}
- MYSQL_PASSWORD=${DBPASS}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=root
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
environment:
PUID: "1000"
PGID: "1000"
TZ: "${TZ}"
VIRTUAL_HOST: "nextcloud.${DOMAIN}"
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: root
MYSQL_PASSWORD: ${DBPASS}
REDIS_HOST: redis
LETSENCRYPT_HOST: nextcloud.${DOMAIN}
LETSENCRYPT_EMAIL: ${EMAIL}
#LETSENCRYPT_TEST: true
volumes:
- ${CONFIG_LOCATION}/nextcloud:/config
- ${DATA_LOCATION}/Cloud/Nextcloud:/data
restart: unless-stopped
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

1
nginx-proxy/.env.example Normal file
View File

@ -0,0 +1 @@
EMAIL=example@mail.com

View File

@ -0,0 +1,26 @@
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/certs:/etc/nginx/certs
- ./nginx/html:/usr/share/nginx/html
- ./nginx/vhost.d:/etc/nginx/vhost.d
- ./client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro
nginx-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-letsencrypt
restart: always
volumes_from:
- nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- DEFAULT_EMAIL=${EMAIL}
networks:
default:
name: nginx-proxy
external: true

1
nginx-proxy/nginx/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
certs/

View File

@ -0,0 +1,10 @@
## Start of configuration add by letsencrypt container
location ^~ /.well-known/acme-challenge/ {
auth_basic off;
auth_request off;
allow all;
root /usr/share/nginx/html;
try_files $uri =404;
break;
}
## End of configuration add by letsencrypt container

View File

@ -3,8 +3,6 @@ DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
DBUSER=example
DBPASS=password
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

40
plex/docker-compose.yml Normal file
View File

@ -0,0 +1,40 @@
services:
plex:
image: plexinc/pms-docker:latest
container_name: plex
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=plex.${DOMAIN}
- VERSION=docker
- PLEX_CLAIM=${PLEX_CLAIM}
volumes:
- ${CONFIG_LOCATION}/plex:/config
- ${DATA_LOCATION}/TV:/tv
- ${DATA_LOCATION}/Movies:/movies
- ${DATA_LOCATION}/Music:/music
expose:
- "32400"
ports:
- 32400:32400
restart: unless-stopped
tautulli:
image: lscr.io/linuxserver/tautulli:latest
container_name: tautulli
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- VIRTUAL_HOST=tautulli.${DOMAIN},plex-stats.${DOMAIN}
- LETSENCRYPT_HOST=tautulli.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/tautulli:/config
ports:
- 8181:8181
restart: unless-stopped
networks:
default:
name: nginx-proxy
external: true

7
readers/.env.example Normal file
View File

@ -0,0 +1,7 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

View File

@ -0,0 +1,59 @@
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
expose:
- "4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
VIRTUAL_HOST: "navidrome.${DOMAIN}"
LETSENCRYPT_HOST: "navidrome.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
volumes:
- "${DATA_LOCATION}:/data"
- "${DATA_LOCATION}/Music:/music:ro"
ubooquity:
image: lscr.io/linuxserver/ubooquity:latest
container_name: ubooquity
environment:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=ubooquity.${DOMAIN}
- VIRTUAL_PORT=2202
# - MAXMEM= #optional
volumes:
- ${CONFIG_LOCATION}/ubooquity:/config
- ${DATA_LOCATION}/Books:/books
- ${DATA_LOCATION}/Comics:/comics
# - /path/to/raw/files:/files
expose:
- "2202"
- "2203"
ports:
- 2202:2202 #:2202/ubooquity
- 2203:2203 #:2203/ubooquity/admin
restart: unless-stopped
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
ports:
- 13378:80
volumes:
- ${CONFIG_LOCATION}/audiobookshelf:/config
- ${DATA_LOCATION}/Audiobooks:/audiobooks
# - </path/to/podcasts>:/podcasts
- ${DATA_LOCATION}/Audiobooks/metadata:/metadata
environment:
- TZ=${TZ}
- VIRTUAL_HOST=audiobookshelf.${DOMAIN}
networks:
default:
name: nginx-proxy
external: true

3
wordpress/.env.example Normal file
View File

@ -0,0 +1,3 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com

View File

@ -0,0 +1,34 @@
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: clocktower
MYSQL_USER: root
MYSQL_PASSWORD: ${DBPASS}
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
wordpress-botc:
depends_on:
- db
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: ${DBPASS}
WORDPRESS_DB_NAME: clocktower
VIRTUAL_HOST: "botc.${DOMAIN}, *.phillybotc.com, phillybotc.com"
LETSENCRYPT_HOST: "botc.${DOMAIN}, *.phillybotc.com, phillybotc.com"
LETSENCRYPT_EMAIL: ${EMAIL}
LETSENCRYPT_TEST: true
volumes:
- wordpress-botc:/var/www/html
volumes:
wordpress-botc:
db:
networks:
default:
name: nginx-proxy
external: true