initial commit
This commit is contained in:
commit
ae6a6cf5c8
3 changed files with 351 additions and 0 deletions
65
.env_template
Normal file
65
.env_template
Normal file
|
@ -0,0 +1,65 @@
|
|||
|
||||
#SYSINFO
|
||||
# Time zone - get identifier here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
TZ=
|
||||
# UID & GID - get by running 'id' command as user who should own files
|
||||
UID=
|
||||
GID=
|
||||
|
||||
#KASM VNC
|
||||
# kasm vnc viewer user/pass for calibre
|
||||
KASM_USER=
|
||||
KASM_PASS=
|
||||
|
||||
#SAMBA
|
||||
#samba user/pass - user must exist on machine
|
||||
SMB_USER=
|
||||
SMB_PASS=
|
||||
|
||||
#VPN
|
||||
#vpn config for gluetun
|
||||
WG_PRIV_KEY=
|
||||
WG_PRESHARED_KEY=
|
||||
WG_ADDR=
|
||||
WG_COUNTRIES=
|
||||
VPN_PORTS=
|
||||
|
||||
#PATHS
|
||||
# Data Path - this is the parent directory where all of your persistent container data will be stored
|
||||
DATA_PATH=
|
||||
# Media Path - this is the directory where all of your media will be stored
|
||||
MEDIA_PATH=
|
||||
# Temp path - this is where torrents will be downloaded to, and where transcoding cache will reside
|
||||
TEMP_PATH=
|
||||
|
||||
#URLS
|
||||
JELLYFIN_SERVER=
|
||||
AIRSONIC_SERVER=
|
||||
|
||||
#PORTS
|
||||
#These are the ports services will be available at. I've left my reccomendations here
|
||||
AIRSONIC_PORT=4040
|
||||
AIRSONIC_REFIX_PORT=4041
|
||||
|
||||
CALIBRE_WEB_PORT=8083
|
||||
|
||||
CALIBRE_PORT=8020
|
||||
|
||||
QBT_PUBLIC_PORT=8182
|
||||
QBT_PRIVATE_PORT=8181
|
||||
|
||||
JELLYFIN_PORT=8096
|
||||
JELLYFIN_VUE_PORT=8097
|
||||
|
||||
EMUJS_BACKEND_PORT=3007
|
||||
EMUJS_PORT=307
|
||||
|
||||
BAZARR_PORT=6767
|
||||
LIDARR_PORT=8686
|
||||
PROWLARR_PORT=9696
|
||||
RADARR_PORT=7878
|
||||
SONARR_PORT=8989
|
||||
TDARR_HTTP_PORT=8265
|
||||
TDARR_SERVER_PORT=8266
|
||||
|
||||
OMBI_PORT=3579
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.env
|
285
docker-compose.yml
Normal file
285
docker-compose.yml
Normal file
|
@ -0,0 +1,285 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
|
||||
portainer_agent: #Portainer is a web UI for managing your docker containers. This container is just the agent which you need to pair with the portainer-ce host container https://www.portainer.io/
|
||||
image: portainer/agent:2.19.3
|
||||
container_name: portainer_agent
|
||||
ports:
|
||||
- "9001:9001"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
restart: always
|
||||
|
||||
airsonic-advanced: #subsonic music streaming platform https://docs.linuxserver.io/images/docker-airsonic-advanced/
|
||||
image: lscr.io/linuxserver/airsonic-advanced:latest
|
||||
container_name: airsonic-advanced
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
- JAVA_OPTS=-Dserver.use-forward-headers=true -Dserver.forward-headers-strategy=native
|
||||
volumes:
|
||||
- ${DATA_PATH}/airsonic-advanced/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${DATA_PATH}/airsonic-advanced/playlists:/playlists
|
||||
ports:
|
||||
- ${AIRSONIC_PORT}:4040
|
||||
restart: unless-stopped
|
||||
|
||||
airsonic-refix: #modernized frontend for airsonic https://github.com/tamland/airsonic-refix
|
||||
image: tamland/airsonic-refix:latest
|
||||
container_name: airsonic-refix
|
||||
environment:
|
||||
- SERVER_URL=${AIRSONIC_SERVER}
|
||||
ports:
|
||||
- ${AIRSONIC_REFIX_PORT}:80
|
||||
restart: unless-stopped
|
||||
|
||||
calibre-web: #Ebook hosting platform and online reader https://docs.linuxserver.io/images/docker-calibre-web/
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
container_name: calibre-web
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/calibre-web/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
ports:
|
||||
- ${CALIBRE_WEB_PORT}:8083
|
||||
restart: unless-stopped
|
||||
|
||||
calibre: #VNC client to manage Calibre library remotely https://docs.linuxserver.io/images/docker-calibre/
|
||||
image: lscr.io/linuxserver/calibre:latest
|
||||
container_name: calibre
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
- CUSTOM_USER=${KASM_USER}
|
||||
- PASSWORD=${KASM_PASS}
|
||||
volumes:
|
||||
- ${DATA_PATH}/calibre/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
ports:
|
||||
- ${CALIBRE_PORT}:8080
|
||||
restart: unless-stopped
|
||||
|
||||
samba: # samba remote file access https://github.com/deftwork/samba
|
||||
image: elswork/samba:latest
|
||||
container_name: samba
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
ports:
|
||||
- "139:139"
|
||||
- "445:445"
|
||||
volumes:
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${TEMP_PATH}/transcodecache:/transcodecache
|
||||
command: '-u "${UID}:${GID}:${SMB_USER}:${SMB_USER}:${SMB_PASS}" -s "Media:/mnt/Media:rw:${SMB_USER}" -s "TranscodeCache:/transcodecache:rw:${SMB_USER}"'
|
||||
restart: unless-stopped
|
||||
|
||||
gluetun: # pipe container traffic through vpn https://hub.docker.com/r/qmcgaw/gluetun
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- VPN_SERVICE_PROVIDER=airvpn
|
||||
- VPN_TYPE=wireguard
|
||||
- WIREGUARD_PRIVATE_KEY=${WG_PRIV_KEY}
|
||||
- WIREGUARD_PRESHARED_KEY=${WG_PRESHARED_KEY}
|
||||
- WIREGUARD_ADDRESSES=${WG_ADDR}
|
||||
- SERVER_COUNTRIES=${WG_COUNTRIES}
|
||||
- FIREWALL_VPN_INPUT_PORTS=${VPN_PORTS}
|
||||
ports:
|
||||
- ${QBT_PRIVATE_PORT}:8181
|
||||
- ${QBT_PUBLIC_PORT}:8182
|
||||
restart: unless-stopped
|
||||
|
||||
qbittorrent-private: # qbittorrent with webui, with network piped through gluetun https://docs.linuxserver.io/images/docker-qbittorrent/
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent-private
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=8181
|
||||
volumes:
|
||||
- ${DATA_PATH}/gluetun/qbtprivate:/config
|
||||
- ${TEMP_PATH}/torrents/downloads:/downloads
|
||||
network_mode: "service:gluetun"
|
||||
restart: unless-stopped
|
||||
|
||||
qbittorrent-public: # qbittorrent with webui, with network piped through gluetun. Second container allows for different settings based on different torrent services https://docs.linuxserver.io/images/docker-qbittorrent/
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent-public
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=8182
|
||||
volumes:
|
||||
- ${DATA_PATH}/gluetun/qbtpublic:/config
|
||||
- ${TEMP_PATH}/torrents/downloads:/downloads:rw
|
||||
network_mode: "service:gluetun"
|
||||
restart: unless-stopped
|
||||
|
||||
jellyfin: # movie and tv streaming platform https://docs.linuxserver.io/images/docker-jellyfin/
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl="https://${JELLYFIN_SERVER}"
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/jellyfin/config:/config
|
||||
- ${DATA_PATH}/jellyfin/dist:/usr/share/jellyfin/web:ro
|
||||
- ${MEDIA_PATH}:/mnt/Media:ro
|
||||
ports:
|
||||
- ${JELLYFIN_PORT}:8096
|
||||
- 8920:8920
|
||||
- 1900:1900/udp
|
||||
- 7359:7359/udp
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
restart: unless-stopped
|
||||
|
||||
jellyfin-vue: #reimagined jellyfin frontent https://github.com/jellyfin/jellyfin-vue
|
||||
image: ghcr.io/jellyfin/jellyfin-vue:unstable
|
||||
container_name: jellyfin-vue
|
||||
environment:
|
||||
- DEFAULT_SERVERS=${JELLYFIN_SERVER}
|
||||
ports:
|
||||
- ${JELLYFIN_VUE_PORT}:80
|
||||
restart: unless-stopped
|
||||
|
||||
emulatorjs: # play many older video game systems via a web-based emulator https://emulatorjs.org/
|
||||
image: lscr.io/linuxserver/emulatorjs:latest
|
||||
container_name: emulatorjs
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/emulatorjs/config:/config
|
||||
- ${MEDIA_PATH}/Emulators:/data
|
||||
ports:
|
||||
- ${EMUJS_BACKEND_PORT}:3000
|
||||
- ${EMUJS_PORT}:80
|
||||
restart: unless-stopped
|
||||
|
||||
bazarr: # automatic subtitle management for media server https://docs.linuxserver.io/images/docker-bazarr/
|
||||
image: lscr.io/linuxserver/bazarr:latest
|
||||
container_name: bazarr
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/bazarr/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
ports:
|
||||
- ${BAZARR_PORT}:6767
|
||||
restart: unless-stopped
|
||||
|
||||
lidarr: # music library management for media server https://docs.linuxserver.io/images/docker-lidarr/
|
||||
image: lscr.io/linuxserver/lidarr:latest
|
||||
container_name: lidarr
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/lidarr/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${TEMP_PATH}/torrents/downloads:/drives/downloads
|
||||
ports:
|
||||
- ${LIDARR_PORT}:8686
|
||||
restart: unless-stopped
|
||||
|
||||
prowlarr: # torrent tracker manager/updater https://docs.linuxserver.io/images/docker-prowlarr/
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: prowlarr
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/prowlarr/config:/config
|
||||
ports:
|
||||
- ${PROWLARR_PORT}:9696
|
||||
restart: unless-stopped
|
||||
|
||||
radarr: #movie library management for media server https://docs.linuxserver.io/images/docker-radarr/
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: radarr
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/radarr/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${TEMP_PATH}/torrents/downloads:/drives/downloads
|
||||
ports:
|
||||
- ${RADARR_PORT}:7878
|
||||
restart: unless-stopped
|
||||
|
||||
sonarr: #TV library management for media server https://docs.linuxserver.io/images/docker-sonarr/
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: sonarr
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/sonarr/config:/config
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${TEMP_PATH}/torrents/downloads:/drives/downloads
|
||||
ports:
|
||||
- ${SONARR_PORT}:8989
|
||||
restart: unless-stopped
|
||||
|
||||
tdarr: #transcode video files according to ruleset to save storage space https://hub.docker.com/r/haveagitgat/tdarr/
|
||||
image: ghcr.io/haveagitgat/tdarr:latest
|
||||
container_name: tdarr
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- UMASK_SET=002
|
||||
- serverIP=0.0.0.0
|
||||
- serverPort=8266
|
||||
- webUIPort=8265
|
||||
- internalNode=true
|
||||
- inContainer=true
|
||||
- nodeName=MyInternalNode
|
||||
volumes:
|
||||
- ${DATA_PATH}/tdarr/server:/app/server
|
||||
- ${DATA_PATH}/tdarr/configs:/app/configs
|
||||
- ${DATA_PATH}/tdarr/logs:/app/logs
|
||||
- ${MEDIA_PATH}:/mnt/Media
|
||||
- ${TEMP_PATH}/transcodecache:/temp
|
||||
ports:
|
||||
- ${TDARR_HTTP_PORT}:8265
|
||||
- ${TDARR_SERVER_PORT}:8266
|
||||
restart: unless-stopped
|
||||
|
||||
ombi: # automatically manage requests for media server https://docs.linuxserver.io/images/docker-ombi/
|
||||
image: lscr.io/linuxserver/ombi:latest
|
||||
container_name: ombi
|
||||
environment:
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${DATA_PATH}/ombi/config:/config
|
||||
ports:
|
||||
- ${OMBI_PORT}:3579
|
||||
restart: unless-stopped
|
Loading…
Add table
Reference in a new issue