diff --git a/.gitignore b/.gitignore index ed21ecd..29ea3ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ .env -config/ -nginx/ -nextcloud +config/ \ No newline at end of file diff --git a/arr/.env.example b/arr/.env.example new file mode 100644 index 0000000..063b7fe --- /dev/null +++ b/arr/.env.example @@ -0,0 +1,7 @@ +DOMAIN=example.com +UID=1000 +GID=1000 +TZ=Etc/UTC +CONFIG_LOCATION=./config +DATA_LOCATION=./data +EMAIL=example@mail.com \ No newline at end of file diff --git a/arr/docker-compose.yml b/arr/docker-compose.yml new file mode 100644 index 0000000..049b242 --- /dev/null +++ b/arr/docker-compose.yml @@ -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 diff --git a/dashboard/.env.example b/dashboard/.env.example new file mode 100644 index 0000000..063b7fe --- /dev/null +++ b/dashboard/.env.example @@ -0,0 +1,7 @@ +DOMAIN=example.com +UID=1000 +GID=1000 +TZ=Etc/UTC +CONFIG_LOCATION=./config +DATA_LOCATION=./data +EMAIL=example@mail.com \ No newline at end of file diff --git a/dashboard/docker-compose.yml b/dashboard/docker-compose.yml new file mode 100644 index 0000000..d4cef3a --- /dev/null +++ b/dashboard/docker-compose.yml @@ -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 diff --git a/db/.env.example b/db/.env.example new file mode 100644 index 0000000..cf1ecf9 --- /dev/null +++ b/db/.env.example @@ -0,0 +1 @@ +DBPASS=password \ No newline at end of file diff --git a/db/docker-compose.yml b/db/docker-compose.yml new file mode 100644 index 0000000..ef711e6 --- /dev/null +++ b/db/docker-compose.yml @@ -0,0 +1,19 @@ +services: + redis: + image: redis:alpine + container_name: redis-dbcache + restart: unless-stopped + db: + image: mysql:latest + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${DBPASS} + volumes: + - db:/var/lib/mysql + - ./docker/provision/mysql/init:/docker-entrypoint-initdb.d +volumes: + db: +networks: + default: + name: nginx-proxy + external: true diff --git a/docker/provision/mysql/init/01-databases.sql b/db/docker/provision/mysql/init/01-databases.sql similarity index 100% rename from docker/provision/mysql/init/01-databases.sql rename to db/docker/provision/mysql/init/01-databases.sql diff --git a/mail/docker-compose.yml b/mail/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/nextcloud/.env.example b/nextcloud/.env.example new file mode 100644 index 0000000..c442fca --- /dev/null +++ b/nextcloud/.env.example @@ -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 \ No newline at end of file diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml new file mode 100644 index 0000000..71862c3 --- /dev/null +++ b/nextcloud/docker-compose.yml @@ -0,0 +1,27 @@ +services: + nextcloud: + depends_on: + - db + 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 +networks: + default: + name: nginx-proxy + external: true diff --git a/nginx-proxy/nginx/.gitignore b/nginx-proxy/nginx/.gitignore new file mode 100644 index 0000000..df91287 --- /dev/null +++ b/nginx-proxy/nginx/.gitignore @@ -0,0 +1 @@ +certs/ diff --git a/nginx-proxy/nginx/vhost.d/default b/nginx-proxy/nginx/vhost.d/default new file mode 100644 index 0000000..5e59aa4 --- /dev/null +++ b/nginx-proxy/nginx/vhost.d/default @@ -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 diff --git a/plex/.env.example b/plex/.env.example new file mode 100644 index 0000000..324e134 --- /dev/null +++ b/plex/.env.example @@ -0,0 +1,8 @@ +PLEX_CLAIM= +DOMAIN=example.com +UID=1000 +GID=1000 +TZ=Etc/UTC +CONFIG_LOCATION=./config +DATA_LOCATION=./data +EMAIL=example@mail.com \ No newline at end of file diff --git a/plex/docker-compose.yml b/plex/docker-compose.yml new file mode 100644 index 0000000..dd3a879 --- /dev/null +++ b/plex/docker-compose.yml @@ -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 diff --git a/radarr/docker-compose.yml b/radarr/docker-compose.yml deleted file mode 100644 index af40840..0000000 --- a/radarr/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -services: - radarr: - image: lscr.io/linuxserver/radarr:latest - container_name: radarr - env_file: - - path: ./.env - required: true - environment: - - PUID=${UID} - - PGID=${GID} - - TZ=${TZ} - - VIRTUAL_HOST=radarr.${DOMAIN},radar.${DOMAIN} - - LETSENCRYPT_HOST=radarr.${DOMAIN},radar.${DOMAIN} - - LETSENCRYPT_EMAIL=${EMAIL} - volumes: - - ${CONFIG_LOCATION}/radarr:/config - - ${DATA_LOCATION}/Movies:/movies - - /media/seedbox:/downloads - expose: - - "7878" - ports: - - 7878:7878 - restart: unless-stopped -networks: - default: - name: nginx-proxy - external: true diff --git a/readers/.env.example b/readers/.env.example new file mode 100644 index 0000000..063b7fe --- /dev/null +++ b/readers/.env.example @@ -0,0 +1,7 @@ +DOMAIN=example.com +UID=1000 +GID=1000 +TZ=Etc/UTC +CONFIG_LOCATION=./config +DATA_LOCATION=./data +EMAIL=example@mail.com \ No newline at end of file diff --git a/readers/docker-compose.yml b/readers/docker-compose.yml new file mode 100644 index 0000000..80a3956 --- /dev/null +++ b/readers/docker-compose.yml @@ -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 + # - :/podcasts + - ${DATA_LOCATION}/Audiobooks/metadata:/metadata + environment: + - TZ=${TZ} + - VIRTUAL_HOST=audiobookshelf.${DOMAIN} +networks: + default: + name: nginx-proxy + external: true diff --git a/wordpress/.env.example b/wordpress/.env.example new file mode 100644 index 0000000..04b6198 --- /dev/null +++ b/wordpress/.env.example @@ -0,0 +1,3 @@ +DOMAIN=example.com +DBPASS=password +EMAIL=example@mail.com \ No newline at end of file diff --git a/wordpress/docker-compose.yml b/wordpress/docker-compose.yml new file mode 100644 index 0000000..43aa6ff --- /dev/null +++ b/wordpress/docker-compose.yml @@ -0,0 +1,22 @@ +services: + 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" + LETSENCRYPT_HOST: "botc.${DOMAIN}, *.phillybotc.com" + LETSENCRYPT_EMAIL: ${EMAIL} + volumes: + - wordpress-botc:/var/www/html +volumes: + wordpress-botc: +networks: + default: + name: nginx-proxy + external: true