diff --git a/docker-compose.d/Documentation/bookstack-stack.yml b/docker-compose.d/Documentation/bookstack.yml similarity index 79% rename from docker-compose.d/Documentation/bookstack-stack.yml rename to docker-compose.d/Documentation/bookstack.yml index 60857bf..4dc0704 100644 --- a/docker-compose.d/Documentation/bookstack-stack.yml +++ b/docker-compose.d/Documentation/bookstack.yml @@ -1,6 +1,7 @@ services: bookstack: image: lscr.io/linuxserver/bookstack + container_name: bookstack environment: - PUID=1000 - PGID=1000 @@ -9,32 +10,31 @@ services: - DB_HOST=bookstack_db - DB_PORT=3306 - DB_USER=bookstack - - DB_PASS=/run/secrets/PASS + - DB_PASS=${PASS} - DB_DATABASE=bookstackapp volumes: - bookstack:/config + restart: unless-stopped depends_on: - bookstack_db - secrets: - - PASS 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=/run/secrets/PASS + - MYSQL_ROOT_PASSWORD=${PASS} - MYSQL_DATABASE=bookstackapp - MYSQL_USER=bookstack - - MYSQL_PASSWORD=/run/secrets/PASS + - MYSQL_PASSWORD=${PASS} volumes: - bookstack_db:/config - secrets: - - PASS + restart: unless-stopped networks: - bookstack @@ -48,9 +48,7 @@ networks: volumes: bookstack: name: bookstack + external: true bookstack_db: name: bookstack_db - -secrets: - PASS: external: true diff --git a/docker-compose.d/Documentation/gitea-stack.yml b/docker-compose.d/Documentation/gitea.yml similarity index 84% rename from docker-compose.d/Documentation/gitea-stack.yml rename to docker-compose.d/Documentation/gitea.yml index 2fd2c97..a9fc9a3 100644 --- a/docker-compose.d/Documentation/gitea-stack.yml +++ b/docker-compose.d/Documentation/gitea.yml @@ -1,5 +1,6 @@ services: gitea: + container_name: gitea image: gitea/gitea:latest environment: - GITEA__service__DISABLE_REGISTRATION=true @@ -9,6 +10,7 @@ services: - gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro + restart: unless-stopped networks: - caddy @@ -20,3 +22,4 @@ networks: volumes: gitea: name: gitea + external: true diff --git a/docker-compose.d/Documentation/vaultwarden-stack.yml b/docker-compose.d/Documentation/vaultwarden.yml similarity index 51% rename from docker-compose.d/Documentation/vaultwarden-stack.yml rename to docker-compose.d/Documentation/vaultwarden.yml index 54121c0..9cd3b83 100644 --- a/docker-compose.d/Documentation/vaultwarden-stack.yml +++ b/docker-compose.d/Documentation/vaultwarden.yml @@ -1,17 +1,17 @@ services: vaultwarden: image: vaultwarden/server:latest - environment: - - DOMAIN=https://vault.mintyserver.net - - WEBSOCKET_ENABLED=true - - SIGNUPS_ALLOWED=false - - ADMIN_TOKEN=/run/secrets/PASS + 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: + networks: - caddy - secrets: - - PASS networks: caddy: @@ -21,7 +21,4 @@ networks: volumes: vaultwarden: name: vaultwarden - -secrets: - PASS: external: true diff --git a/docker-compose.d/Media/arr-stack.yml b/docker-compose.d/Media/arr.yml similarity index 81% rename from docker-compose.d/Media/arr-stack.yml rename to docker-compose.d/Media/arr.yml index 84479aa..bd195f6 100644 --- a/docker-compose.d/Media/arr-stack.yml +++ b/docker-compose.d/Media/arr.yml @@ -1,6 +1,7 @@ services: prowlarr: image: lscr.io/linuxserver/prowlarr:latest + container_name: prowlarr environment: - PUID=1000 - PGID=1000 @@ -9,12 +10,14 @@ services: - 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 @@ -24,6 +27,7 @@ services: - /mnt/massdrive/media:/mnt/media ports: - 8989:8989 + restart: unless-stopped networks: - arr - qbit @@ -39,5 +43,7 @@ networks: volumes: prowlarr: name: prowlarr + external: true sonarr: name: sonarr + external: true diff --git a/docker-compose.d/Media/jellyfin-stack.yml b/docker-compose.d/Media/jellyfin.yml similarity index 75% rename from docker-compose.d/Media/jellyfin-stack.yml rename to docker-compose.d/Media/jellyfin.yml index 3d4fd98..22f9322 100644 --- a/docker-compose.d/Media/jellyfin-stack.yml +++ b/docker-compose.d/Media/jellyfin.yml @@ -1,15 +1,19 @@ services: jellyfin: image: lscr.io/linuxserver/jellyfin:latest - devices: + container_name: jellyfin + devices: - /dev/dri:/dev/dri - environment: + environment: - PUID=1000 - PGID=1000 - TZ=America/Chicago volumes: - jellyfin:/config - /mnt/massdrive/media:/data + ports: + - 8096:8096 + restart: unless-stopped networks: - caddy - shoko @@ -25,3 +29,4 @@ networks: 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-stack.yml b/docker-compose.d/Networking/technitium-stack.yml deleted file mode 100644 index 5dc8072..0000000 --- a/docker-compose.d/Networking/technitium-stack.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - technitium: - image: technitium/dns-server:latest - environment: - - DNS_SERVER_DOMAIN=technitium - - DNS_SERVER_ADMIN_PASSWORD=/run/secrets/PASS - volumes: - - technitium:/etc/dns - secrets: - - PASS - networks: - - host - -volumes: - technitium: - name: technitium - -secrets: - PASS: - external: true - -networks: - host: - name: host - 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-stack.yml b/docker-compose.d/Tools/searxng.yml similarity index 70% rename from docker-compose.d/Tools/searxng-stack.yml rename to docker-compose.d/Tools/searxng.yml index 6f15791..b958f47 100644 --- a/docker-compose.d/Tools/searxng-stack.yml +++ b/docker-compose.d/Tools/searxng.yml @@ -1,11 +1,13 @@ services: searxng: image: searxng/searxng:latest - environment: + container_name: searxng + environment: - BASE_URL=https://searxng.mintyserver.net volumes: - searxng:/etc/searxng - networks: + restart: unless-stopped + networks: - caddy networks: @@ -16,3 +18,4 @@ networks: volumes: searxng: name: searxng + external: true diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0f9044b..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,190 +0,0 @@ -networks: - caddy: - name: caddy - external: true - qbit: - name: qbit - shoko: - name: shoko - external: true - -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.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 - - 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 - - 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 - - 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 - qbittorrent: - name: qbittorrent - external: true - shoko: - name: shoko - external: true - ariang: - name: ariang - nextcloud_aio_mastercontainer: - name: nextcloud_aio_mastercontainer - bitmonero: - name: bitmonero - p2pool-data: - name: p2pool-data - gluetun: - name: gluetun 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."