diff --git a/docker-compose.d/Documentation/bookstack.yml b/docker-compose.d/Documentation/bookstack.yml new file mode 100644 index 0000000..4dc0704 --- /dev/null +++ b/docker-compose.d/Documentation/bookstack.yml @@ -0,0 +1,54 @@ +services: + bookstack: + image: lscr.io/linuxserver/bookstack + container_name: bookstack + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Chicago + - APP_URL=https://bookstack.mintyserver.net + - DB_HOST=bookstack_db + - DB_PORT=3306 + - DB_USER=bookstack + - DB_PASS=${PASS} + - DB_DATABASE=bookstackapp + volumes: + - bookstack:/config + restart: unless-stopped + depends_on: + - bookstack_db + networks: + - caddy + - bookstack + + bookstack_db: + image: lscr.io/linuxserver/mariadb + container_name: bookstack_db + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Chicago + - MYSQL_ROOT_PASSWORD=${PASS} + - MYSQL_DATABASE=bookstackapp + - MYSQL_USER=bookstack + - MYSQL_PASSWORD=${PASS} + volumes: + - bookstack_db:/config + restart: unless-stopped + networks: + - bookstack + +networks: + caddy: + name: caddy + external: true + bookstack: + name: bookstack + +volumes: + bookstack: + name: bookstack + external: true + bookstack_db: + name: bookstack_db + external: true diff --git a/docker-compose.d/Documentation/gitea.yml b/docker-compose.d/Documentation/gitea.yml new file mode 100644 index 0000000..a9fc9a3 --- /dev/null +++ b/docker-compose.d/Documentation/gitea.yml @@ -0,0 +1,25 @@ +services: + gitea: + container_name: gitea + image: gitea/gitea:latest + environment: + - GITEA__service__DISABLE_REGISTRATION=true + - USER_UID=1000 + - USER_GID=1000 + volumes: + - gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped + networks: + - caddy + +networks: + caddy: + name: caddy + external: true + +volumes: + gitea: + name: gitea + external: true diff --git a/docker-compose.d/Documentation/vaultwarden.yml b/docker-compose.d/Documentation/vaultwarden.yml new file mode 100644 index 0000000..9cd3b83 --- /dev/null +++ b/docker-compose.d/Documentation/vaultwarden.yml @@ -0,0 +1,24 @@ +services: + vaultwarden: + image: vaultwarden/server:latest + container_name: vaultwarden + restart: unless-stopped + environment: + DOMAIN: "https://vault.mintyserver.net" + WEBSOCKET_ENABLED: true + SIGNUPS_ALLOWED: false + ADMIN_TOKEN: ${PASS} + volumes: + - vaultwarden:/data + networks: + - caddy + +networks: + caddy: + name: caddy + external: true + +volumes: + vaultwarden: + name: vaultwarden + external: true diff --git a/docker-compose.d/Media/arr.yml b/docker-compose.d/Media/arr.yml new file mode 100644 index 0000000..c4d304a --- /dev/null +++ b/docker-compose.d/Media/arr.yml @@ -0,0 +1,48 @@ +services: + prowlarr: + image: lscr.io/linuxserver/prowlarr:latest + container_name: prowlarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + volumes: + - prowlarr:/config + ports: + - 9696:9696 + restart: unless-stopped + networks: + - arr + - qbit + + sonarr: + image: lscr.io/linuxserver/sonarr:latest + container_name: sonarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + volumes: + - sonarr:/config + - /mnt/massdrive/media:/mnt/media + ports: + - 8989:8989 + restart: unless-stopped + networks: + - arr + - qbit + +networks: + arr: + name: arr + qbit: + name: qbit + external: true + +volumes: + prowlarr: + name: prowlarr + external: true + sonarr: + name: sonarr + external: true diff --git a/docker-compose.d/Media/jellyfin.yml b/docker-compose.d/Media/jellyfin.yml new file mode 100644 index 0000000..22f9322 --- /dev/null +++ b/docker-compose.d/Media/jellyfin.yml @@ -0,0 +1,32 @@ +services: + jellyfin: + image: lscr.io/linuxserver/jellyfin:latest + container_name: jellyfin + devices: + - /dev/dri:/dev/dri + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Chicago + volumes: + - jellyfin:/config + - /mnt/massdrive/media:/data + ports: + - 8096:8096 + restart: unless-stopped + networks: + - caddy + - shoko + +networks: + caddy: + name: caddy + external: true + shoko: + name: shoko + external: true + +volumes: + jellyfin: + name: jellyfin + external: true diff --git a/docker-compose.d/Media/shoko.yml b/docker-compose.d/Media/shoko.yml new file mode 100644 index 0000000..3da6a59 --- /dev/null +++ b/docker-compose.d/Media/shoko.yml @@ -0,0 +1,27 @@ +services: + shoko: + shm_size: 256m + container_name: shoko + image: shokoanime/server:daily + restart: always + environment: + - "PUID=1000" + - "PGID=1000" + - "TZ=Etc/UTC" + ports: + - "8111:8111" + volumes: + - shoko:/home/shoko/.shoko + - /mnt/massdrive/media:/mnt/media + networks: + - shoko + +networks: + shoko: + name: shoko + external: true + +volumes: + shoko: + name: shoko + external: true diff --git a/docker-compose.d/Networking/caddy.yml b/docker-compose.d/Networking/caddy.yml new file mode 100644 index 0000000..9391ffb --- /dev/null +++ b/docker-compose.d/Networking/caddy.yml @@ -0,0 +1,37 @@ +services: + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + cap_add: + - NET_ADMIN + ports: + - 80:80 + - 443:443 + - 443:443/udp + volumes: + - caddy_set:/etc/caddy + - caddy_srv:/srv + - caddy_data:/data + - caddy_config:/config + networks: + - caddy + +networks: + caddy: + name: caddy + external: true + +volumes: + caddy_config: + name: caddy_config + external: true + caddy_data: + name: caddy_data + external: true + caddy_srv: + name: caddy_srv + external: true + caddy_set: + name: caddy_set + external: true diff --git a/docker-compose.d/Networking/gluetun.yml b/docker-compose.d/Networking/gluetun.yml new file mode 100644 index 0000000..517f312 --- /dev/null +++ b/docker-compose.d/Networking/gluetun.yml @@ -0,0 +1,31 @@ +services: + gluetun: + image: ghcr.io/qdm12/gluetun + cap_add: + - NET_ADMIN + container_name: gluetun + environment: + - VPN_SERVICE_PROVIDER=mullvad + - VPN_TYPE=wireguard + - WIREGUARD_PRIVATE_KEY=${MULLKEY} + - WIREGUARD_ADDRESSES=10.73.138.162/32 + - SERVER_CITIES=Chicago IL + volumes: + - gluetun:/gluetun + ports: + - 8181:8181 + - 6881:6881 + - 6881:6881/udp + restart: unless-stopped + networks: + - mullvad + +networks: + mullvad: + name: mullvad + external: true + +volumes: + gluetun: + name: gluetun + external: true diff --git a/docker-compose.d/Networking/technitium.yml b/docker-compose.d/Networking/technitium.yml new file mode 100644 index 0000000..0f2f972 --- /dev/null +++ b/docker-compose.d/Networking/technitium.yml @@ -0,0 +1,17 @@ +services: + technitium: + container_name: technitium + image: technitium/dns-server:latest + network_mode: "host" + environment: + - DNS_SERVER_DOMAIN=technitium + - DNS_SERVER_ADMIN_PASSWORD=${PASS} + volumes: + - technitium:/etc/dns + restart: unless-stopped + +volumes: + technitium: + name: technitium + external: true + diff --git a/docker-compose.d/Tools/ariang.yml b/docker-compose.d/Tools/ariang.yml new file mode 100644 index 0000000..ff28045 --- /dev/null +++ b/docker-compose.d/Tools/ariang.yml @@ -0,0 +1,27 @@ +services: + ariang: + image: hurlenko/aria2-ariang + container_name: aria + restart: unless-stopped + volumes: + - /mnt/nextcloud:/aria2/data + - ariang:/aria2/conf + environment: + - PUID=1000 + - PGID=1000 + - RPC_SECRET=${PASS} + - BASIC_AUTH_USERNAME=poslop + - BASIC_AUTH_PASSWORD=${PASS} + - ARIA2RPCPORT=443 + networks: + - caddy + +volumes: + ariang: + name: ariang + external: true + +networks: + caddy: + name: caddy + external: true diff --git a/docker-compose.d/Tools/monerod.yml b/docker-compose.d/Tools/monerod.yml new file mode 100644 index 0000000..92ffb1c --- /dev/null +++ b/docker-compose.d/Tools/monerod.yml @@ -0,0 +1,27 @@ +services: + monerod: + image: sethsimmons/simple-monerod:latest + restart: unless-stopped + container_name: monerod + volumes: + - bitmonero:/home/monero/.bitmonero:rw + ports: + - 18080:18080 + - 18089:18089 + - 18083:18083 + command: + - "--add-priority-node=p2pmd.xmrvsbeast.com:18080" + - "--out-peers=32" + - "--in-peers=64" + - "--disable-dns-checkpoints" + - "--rpc-restricted-bind-ip=0.0.0.0" + - "--rpc-restricted-bind-port=18089" + - "--no-igd" + - "--enable-dns-blocklist" + - "--prune-blockchain" + - "--zmq-pub=tcp://0.0.0.0:18083" + +volumes: + bitmonero: + name: bitmonero + external: true diff --git a/docker-compose.d/Tools/nextcloud-aio.yml b/docker-compose.d/Tools/nextcloud-aio.yml new file mode 100644 index 0000000..87294f4 --- /dev/null +++ b/docker-compose.d/Tools/nextcloud-aio.yml @@ -0,0 +1,21 @@ +services: + nextcloud: + container_name: nextcloud-aio-mastercontainer + init: true + restart: unless-stopped + image: nextcloud/all-in-one:latest + volumes: + - nextcloud_aio_mastercontainer:/mnt/docker-aio-config + - /var/run/docker.sock:/var/run/docker.sock:ro + ports: + - 8080:8080 + environment: + - APACHE_PORT=11000 + - APACHE_IP_BINDING=0.0.0.0 + - NEXTCLOUD_MOUNT=/mnt/nextcloud/ + - NEXTCLOUD_MEMORY_LIMIT=4096M + +volumes: + nextcloud_aio_mastercontainer: + name: nextcloud_aio_mastercontainer + external: true diff --git a/docker-compose.d/Tools/p2pool.yml b/docker-compose.d/Tools/p2pool.yml new file mode 100644 index 0000000..f110049 --- /dev/null +++ b/docker-compose.d/Tools/p2pool.yml @@ -0,0 +1,23 @@ +services: + p2pool: + image: sethsimmons/p2pool:latest + restart: unless-stopped + container_name: p2pool + tty: true + stdin_open: true + volumes: + - p2pool-data:/home/p2pool + - /dev/hugepages:/dev/hugepages:rw + ports: + - 3333:3333 + - 37889:37889 + command: >- + --wallet "48Whozrwq4jDA6JZ3vJw3Z22VFCCdi4MnLDH5WfHX33w8ehHZ3hRsJC6JBFmgau8BjbXzfL6Um1GdGNfzzbqueDGPhSusji" + --stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889" --rpc-port "18089" + --host "monerod" + --loglevel 1 + +volumes: + p2pool-data: + name: p2pool-data + external: true diff --git a/docker-compose.d/Tools/searxng.yml b/docker-compose.d/Tools/searxng.yml new file mode 100644 index 0000000..b958f47 --- /dev/null +++ b/docker-compose.d/Tools/searxng.yml @@ -0,0 +1,21 @@ +services: + searxng: + image: searxng/searxng:latest + container_name: searxng + environment: + - BASE_URL=https://searxng.mintyserver.net + volumes: + - searxng:/etc/searxng + restart: unless-stopped + networks: + - caddy + +networks: + caddy: + name: caddy + external: true + +volumes: + searxng: + name: searxng + external: true diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 18af700..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,383 +0,0 @@ -networks: - caddy: - name: caddy - qbit: - name: qbit - shoko: - name: shoko - arr: - name: arr - bookstack: - name: bookstack - -services: - bookstack: - image: lscr.io/linuxserver/bookstack - container_name: bookstack - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - - APP_URL=https://bookstack.mintyserver.net - - DB_HOST=bookstack_db - - DB_PORT=3306 - - DB_USER=bookstack - - DB_PASS=${PASS} - - DB_DATABASE=bookstackapp - volumes: - - bookstack:/config - restart: unless-stopped - depends_on: - - bookstack_db - networks: - - caddy - - bookstack - - bookstack_db: - image: lscr.io/linuxserver/mariadb - container_name: bookstack_db - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - - MYSQL_ROOT_PASSWORD=${PASS} - - MYSQL_DATABASE=bookstackapp - - MYSQL_USER=bookstack - - MYSQL_PASSWORD=${PASS} - volumes: - - bookstack_db:/config - restart: unless-stopped - networks: - - bookstack - - - maigret: - image: soxoj/maigret:latest - container_name: maigret - volumes: - - /mnt/nextcloud/poslop/Maigret:/app/reports - - gluetun: - image: ghcr.io/qdm12/gluetun - cap_add: - - NET_ADMIN - container_name: gluetun - environment: - - VPN_SERVICE_PROVIDER=mullvad - - VPN_TYPE=wireguard - - WIREGUARD_PRIVATE_KEY=${MULLKEY} - - WIREGUARD_ADDRESSES=10.64.21.169/32 - - SERVER_CITIES=Chicago IL - volumes: - - gluetun:/gluetun - ports: - - 8181:8181 - - 6881:6881 - - 6881:6881/udp - restart: unless-stopped - networks: - - qbit - - caddy: - image: caddy:latest - container_name: caddy - restart: unless-stopped - cap_add: - - NET_ADMIN - ports: - - 80:80 - - 443:443 - - 443:443/udp - volumes: - - caddy_set:/etc/caddy - - caddy_srv:/srv - - caddy_data:/data - - caddy_config:/config - networks: - - caddy - - - technitium: - container_name: technitium - image: technitium/dns-server:latest - network_mode: "host" - environment: - - DNS_SERVER_DOMAIN=technitium - - DNS_SERVER_ADMIN_PASSWORD=${PASS} - volumes: - - technitium:/etc/dns - restart: unless-stopped - - prowlarr: - image: lscr.io/linuxserver/prowlarr:latest - container_name: prowlarr - environment: - - PUID=1000 - - PGID=1000 - - TZ=Etc/UTC - volumes: - - prowlarr:/config - ports: - - 9696:9696 - restart: unless-stopped - networks: - - arr - - qbit - - sonarr: - image: lscr.io/linuxserver/sonarr:latest - container_name: sonarr - environment: - - PUID=1000 - - PGID=1000 - - TZ=Etc/UTC - volumes: - - sonarr:/config - - /mnt/massdrive/media:/mnt/media - ports: - - 8989:8989 - restart: unless-stopped - networks: - - arr - - qbit - - qbittorrent: - image: lscr.io/linuxserver/qbittorrent:latest - container_name: qbittorrent - environment: - - PUID=1000 - - PGID=1000 - - TZ=Etc/UTC - - WEBUI_PORT=8181 - network_mode: "service:gluetun" - volumes: - - qbittorrent:/config - - /mnt/nextcloud:/mnt/files - restart: unless-stopped - depends_on: - gluetun: - condition: service_healthy - - shoko: - shm_size: 256m - container_name: shoko - image: shokoanime/server:daily - restart: always - environment: - - "PUID=1000" - - "PGID=1000" - - "TZ=Etc/UTC" - ports: - - "8111:8111" - volumes: - - shoko:/home/shoko/.shoko - - /mnt/massdrive/media:/mnt/media - networks: - - shoko - - - vaultwarden: - image: vaultwarden/server:latest - container_name: vaultwarden - restart: unless-stopped - environment: - DOMAIN: "https://vault.mintyserver.net" - WEBSOCKET_ENABLED: true - SIGNUPS_ALLOWED: false - ADMIN_TOKEN: ${PASS} - volumes: - - vaultwarden:/data - networks: - - caddy - ports: - - 8089:80 - - - monerod: - image: sethsimmons/simple-monerod:latest - restart: unless-stopped - container_name: monerod - volumes: - - bitmonero:/home/monero/.bitmonero:rw - ports: - - 18080:18080 - - 18089:18089 - - 18083:18083 - command: - - "--add-priority-node=p2pmd.xmrvsbeast.com:18080" - - "--out-peers=32" - - "--in-peers=64" - - "--disable-dns-checkpoints" - - "--rpc-restricted-bind-ip=0.0.0.0" - - "--rpc-restricted-bind-port=18089" - - "--no-igd" - - "--enable-dns-blocklist" - - "--prune-blockchain" - - "--zmq-pub=tcp://0.0.0.0:18083" - - p2pool: - image: sethsimmons/p2pool:latest - restart: unless-stopped - container_name: p2pool - tty: true - stdin_open: true - volumes: - - p2pool-data:/home/p2pool - - /dev/hugepages:/dev/hugepages:rw - ports: - - 3333:3333 - - 37889:37889 - command: >- - --wallet "48Whozrwq4jDA6JZ3vJw3Z22VFCCdi4MnLDH5WfHX33w8ehHZ3hRsJC6JBFmgau8BjbXzfL6Um1GdGNfzzbqueDGPhSusji" - --stratum "0.0.0.0:3333" --p2p "0.0.0.0:37889" --rpc-port "18089" - --host "monerod" - --loglevel 1 - - - ariang: - image: hurlenko/aria2-ariang - container_name: aria - restart: unless-stopped - volumes: - - /mnt/nextcloud:/aria2/data - - ariang:/aria2/conf - environment: - - PUID=1000 - - PGID=1000 - - RPC_SECRET=${PASS} - - BASIC_AUTH_USERNAME=poslop - - BASIC_AUTH_PASSWORD=${PASS} - - ARIA2RPCPORT=443 - networks: - - caddy - - searxng: - image: searxng/searxng:latest - container_name: searxng - environment: - - BASE_URL=https://searxng.mintyserver.net - volumes: - - searxng:/etc/searxng - restart: unless-stopped - networks: - - caddy - - puffer: - image: pufferpanel/pufferpanel:latest - container_name: puffer - restart: always - volumes: - - puffer-config:/etc/pufferpanel - - /var/lib/pufferpanel:/var/lib/pufferpanel - - /var/run/docker.sock:/var/run/docker.sock - networks: - - caddy - - gitea: - image: gitea/gitea:latest - container_name: gitea - environment: - - GITEA__service__DISABLE_REGISTRATION=true - - USER_UID=1000 - - USER_GID=1000 - restart: always - volumes: - - gitea:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - ports: - - "3030:3000" - networks: - - caddy - - jellyfin: - image: lscr.io/linuxserver/jellyfin:latest - container_name: jellyfin - devices: - - /dev/dri:/dev/dri - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - volumes: - - jellyfin:/config - - /mnt/massdrive/media:/data - ports: - - 8096:8096 - restart: unless-stopped - networks: - - caddy - - shoko - - nextcloud: - container_name: nextcloud-aio-mastercontainer - init: true - restart: unless-stopped - image: nextcloud/all-in-one:latest - volumes: - - nextcloud_aio_mastercontainer:/mnt/docker-aio-config - - /var/run/docker.sock:/var/run/docker.sock:ro - ports: - - 8080:8080 - environment: - - APACHE_PORT=11000 - - APACHE_IP_BINDING=0.0.0.0 - - NEXTCLOUD_MOUNT=/mnt/nextcloud/ - - NEXTCLOUD_MEMORY_LIMIT=4096M - - watchtower: - image: containrrr/watchtower - container_name: watchtower - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - -volumes: - caddy_config: - name: caddy_config - caddy_data: - name: caddy_data - caddy_srv: - name: caddy_srv - caddy_set: - name: caddy_set - vaultwarden: - name: vaultwarden - external: true - qbittorrent: - name: qbittorrent - external: true - shoko: - name: shoko - external: true - ariang: - name: ariang - puffer-config: - name: puffer-config - searxng: - name: searxng - external: true - jellyfin: - name: jellyfin - gitea: - name: gitea - technitium: - name: technitium - external: true - sonarr: - name: sonarr - prowlarr: - name: prowlarr - external: true - nextcloud_aio_mastercontainer: - name: nextcloud_aio_mastercontainer - bitmonero: - name: bitmonero - p2pool-data: - name: p2pool-data - gluetun: - name: gluetun - bookstack: - name: bookstack - bookstack_db: - name: booksstack_db diff --git a/scripts/run-all.sh b/scripts/run-all.sh new file mode 100755 index 0000000..787bc41 --- /dev/null +++ b/scripts/run-all.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Define the path to the .env file (root-level) +ENV_FILE="/mnt/docker/.env" + +# Base directory where the service Compose files are located +COMPOSE_DIR="/mnt/docker/docker-compose.d" + +# List of service directories under docker-compose.d +services=( + "Documentation/bookstack.yml" + "Documentation/gitea.yml" + "Documentation/vaultwarden.yml" + "Media/arr.yml" + "Media/jellyfin.yml" + "Media/shoko.yml" + "Networking/gluetun.yml" + "Networking/technitium.yml" + "Networking/caddy.yml" + "Tools/searxng.yml" + "Tools/monerod.yml" + "Tools/p2pool.yml" + "Tools/ariang.yml" + "Tools/nextcloud-aio.yml" +) + +# Start building the docker compose command with multiple -f flags +COMPOSE_COMMAND="docker compose --env-file \"$ENV_FILE\"" + +# Loop through each service and append the -f flag for each compose file +for service in "${services[@]}"; do + COMPOSE_COMMAND+=" -f \"$COMPOSE_DIR/$service\"" +done + +# Add the up command to the final docker compose command +COMPOSE_COMMAND+=" up -d" + +# Execute the composed command +eval $COMPOSE_COMMAND + +echo "All services have been started."