Compare commits

...

28 Commits

Author SHA1 Message Date
25a3121748 Merge pull request 'dev' (#7) from dev into main
Reviewed-on: #7
2025-05-16 14:05:34 -05:00
poslop
42cdbeeb02 redme 2025-05-16 14:04:00 -05:00
poslop
1351d9d0a0 acutal 2025-05-10 16:42:19 -05:00
poslop
dc98c7080a paste bin 2025-03-14 21:13:45 -05:00
poslop
3515d1f2d2 Merge branch 'main' of https://git.archfox.org/poslop/DockerConfigs 2025-02-17 16:41:56 -06:00
poslop
3ec7edfc87 ddns added and like mre stuff idk 2025-02-17 16:40:34 -06:00
poslop
754acd3544 idk what i did tbh 2025-01-14 10:29:32 -06:00
poslop
cc9bad6569 Changed domain 2024-12-29 23:30:22 -06:00
poslop
3a69c4b3f8 installed piped 2024-11-18 13:29:10 -06:00
poslop
9c4534330c Merge pull request 'added openwebui' (#6) from dev into main
Reviewed-on: https://git.mintyserver.net/poslop/DockerConfigs/pulls/6
2024-11-15 19:52:24 -06:00
poslop
7a3c868e98 added openwebui 2024-11-15 19:47:19 -06:00
poslop
6e813a5e99 Merge pull request 'dev' (#5) from dev into main
Reviewed-on: https://git.mintyserver.net/poslop/DockerConfigs/pulls/5
2024-11-02 19:15:41 -05:00
poslop
fc9802bbde added omada controller 2024-11-02 19:14:26 -05:00
poslop
bcdb981807 installed pteradactyl 2024-11-02 19:14:02 -05:00
poslop
a2dcfaf4a4 installed pteradactyl 2024-11-02 16:10:42 -05:00
poslop
0eb4b91639 Update README.md 2024-10-29 15:04:02 -05:00
poslop
212833ca3c Merge pull request 'dev' (#4) from dev into main
Reviewed-on: https://git.mintyserver.net/poslop/DockerConfigs/pulls/4
2024-10-29 15:02:53 -05:00
poslop
4c34f4a17f Merge branch 'main' into dev 2024-10-29 15:01:50 -05:00
poslop
40bce017b4 cleaned some compose files 2024-10-29 14:59:49 -05:00
poslop
e64814cebb removed stacks and using normal docker but with seperated compose files 2024-10-29 13:51:35 -05:00
poslop
0e5da4b9f1 convert arr to stack 2024-10-14 13:24:51 -05:00
poslop
e7952e97f8 convert technitium to stack 2024-10-11 15:27:12 -05:00
poslop
296c755f83 convert jellyfin to stack 2024-10-11 13:53:29 -05:00
poslop
37c1448334 convert searxng to stack 2024-10-11 13:05:34 -05:00
poslop
c50d2ce03a convert vault to stack 2024-10-11 12:46:41 -05:00
poslop
c03b641fd8 convert gitea to stack 2024-10-11 12:15:32 -05:00
poslop
c2bf5cc443 bookstack 2024-10-11 11:58:24 -05:00
poslop
33c45bf785 prep for seperating compose into srevices 2024-09-26 14:20:01 -05:00
24 changed files with 759 additions and 385 deletions

View File

@@ -3,6 +3,6 @@ This repository is for documenting my homelab. Most documentation is found in t
I use docker for all of my services that I run with a docker compose file. I use ssh through a peer to peer vpn service called [Tailscale](https://tailscale.com/). Tailscale has functionality to store ssh keys and makes managing them very simple and easy with github accounts.
The homelab is run off of a dedicated server running a headless instance of Arch Linux. Arch linux is my Distro of preference however if I were to run a server that is required for reliability I would most likely prefer RedHat or similar for a stable environment over rolling release Arch.
The homelab is run off of a dedicated server running a headless instance of Arch Linux. Arch linux is my Distro of preference however if I were to run a server that is required for reliability I would most likely prefer RedHat or similar for a stable environment over rolling release Arch but so far Arch has been fine.
Caddy is currently used to share my publicly facing services with a subdomain of mintyserver.net eg https://git.mintyserver.net. Not all services are reverse proxied such as my pihole as they are only needed to be accessed by me and therefore only accessible via local or vpn connections.
Caddy is currently used to share my publicly facing services with a subdomain of archox.org eg https://git.archox.org. Not all services are reverse proxied such as my DNS server as they are only needed to be accessed by me and therefore only accessible via local or vpn connections.

View File

@@ -0,0 +1,55 @@
services:
bookstack:
image: lscr.io/linuxserver/bookstack
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
- APP_URL=https://bookstack.archfox.org
- APP_KEY=${BOOKKEY}
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=${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

View File

@@ -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

View File

@@ -0,0 +1,24 @@
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.archfox.org"
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

View File

@@ -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

View File

@@ -0,0 +1,31 @@
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:
external: true

View File

@@ -0,0 +1,27 @@
services:
shoko:
shm_size: 256m
container_name: shoko
image: shokoanime/server:latest
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

View File

@@ -0,0 +1,43 @@
services:
caddy:
image: ghcr.io/caddybuilds/caddy-cloudflare: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
environment:
- CLOUDFLARE_API_TOKEN=${CF_CADDY_KEY}
extra_hosts:
- "host.docker.internal:host-gateway"
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
caddy_html:
external: true

View File

@@ -0,0 +1,14 @@
services:
cloudflare-ddns:
container_name: ddns
image: favonia/cloudflare-ddns:latest
network_mode: host
restart: always
user: "1000:1000"
read_only: true
cap_drop: [all]
security_opt: [no-new-privileges:true]
environment:
- CLOUDFLARE_API_TOKEN=${CFKEY}
- DOMAINS=archfox.org, jelly.archfox.org, searxng.archfox.org, bookstack.archfox.org, vault.archfox.org, git.archfox.org, nextcloud.archfox.org, aria.archfox.org, wings.archfox.org, panel.archfox.org, omada.archfox.org, mc.archfox.org, ai.archfox.org, p.archfox.org, actual.archfox.org
- PROXIED=false

View File

@@ -0,0 +1,23 @@
services:
omada:
container_name: omada
image: mbentley/omada-controller:latest
restart: unless-stopped
ulimits:
nofile:
soft: 4096
hard: 8192
stop_grace_period: 60s
network_mode: host
environment:
- TZ=America/Chicago
volumes:
- omada-data:/opt/tplink/EAPController/data
- omada-logs:/opt/tplink/EAPController/logs
volumes:
omada-data:
external: true
omada-logs:
external: true

View File

@@ -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

View File

@@ -0,0 +1,27 @@
services:
actual_server:
container_name: actual
image: docker.io/actualbudget/actual-server:latest
environment:
- ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=100
- ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=100
- ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=100
volumes:
- actual-data:/data
networks:
- caddy
healthcheck:
test: ['CMD-SHELL', 'node src/scripts/health-check.js']
interval: 60s
timeout: 10s
retries: 3
start_period: 20s
restart: unless-stopped
volumes:
actual-data:
external: true
networks:
caddy:
external: true

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,21 @@
services:
open-webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
environment:
- OLLAMA_BASE_URL=http://poslop-w:11434
volumes:
- open-webui:/app/backend/data
networks:
- caddy
volumes:
open-webui:
external: true
networks:
caddy:
name: caddy
external: true

View File

@@ -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 "452KRkV1ekYiMh1iy6g3TWbBUGjcJLZH8NYbcd8uaso7Z65CxHsjCmshNaRikDWnRy84kkDZxSfw7DXitNQvhpPW3rmRasA"
--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

View File

@@ -0,0 +1,45 @@
services:
pastedb:
container_name: pastedb
image: mariadb:10.11
volumes:
- pastedb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: pastefy
MYSQL_DATABASE: pastefy
MYSQL_USER: pastefy
MYSQL_PASSWORD: pastefy
networks:
- pastefy
pastefy:
container_name: pastefy
depends_on:
- pastedb
image: interaapps/pastefy:latest
environment:
HTTP_SERVER_PORT: 80
HTTP_SERVER_CORS: "*"
DATABASE_DRIVER: mysql
DATABASE_NAME: pastefy
DATABASE_USER: pastefy
DATABASE_PASSWORD: pastefy
DATABASE_HOST: pastedb
DATABASE_PORT: 3306
SERVER_NAME: "https://p.archfox.org"
networks:
- caddy
- pastefy
volumes:
pastedb:
external: true
networks:
pastefy:
name: pastefy
caddy:
name: caddy
external: true

View File

@@ -0,0 +1,130 @@
###
# Minimal Configuration File
#
# This configuration strips services to the absolute bare essentials to function.
# Very useful for reverse proxy configurations where a user would override networking anyways.
###
services:
##
# -- Panel Cron --
# These are required for schedules and other misc tasks to
# function correctly.
##
tcron:
command: p:cron
container_name: tcron
env_file: ${TPATH}conf.d/panel.env
image: ccarney16/pterodactyl-panel:${PANEL_VERSION:-latest}
profiles: [ panel ]
restart: always
volumes:
- tpanel:/data
networks:
- pterodactyl
##
# -- Pterodactyl Daemon --
# This service provides the wings runtime.
##
twings:
container_name: twings
environment:
- TZ=${DAEMON_TIMEZONE:-UTC}
image: docker.io/ccarney16/pterodactyl-daemon:${DAEMON_VERSION:-latest}
privileged: true
profiles: [ daemon ]
restart: always
volumes:
- ${DAEMON_DATA_DIRECTORY:-/var/lib/pterodactyl}:${DAEMON_DATA_DIRECTORY:-/var/lib/pterodactyl}
- ${DOCKER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock
- /tmp/pterodactyl/:/tmp/pterodactyl/
- ${TPATH}conf.d/daemon:/etc/pterodactyl
working_dir: ${DAEMON_DATA_DIRECTORY:-/var/lib/pterodactyl}
networks:
- pterodactyl_nw
- caddy
##
# -- MariaDB --
# Required for the control panel to work.
# Stores Server/User information
##
tdb:
image: docker.io/library/mariadb:10.11
container_name: tdb
env_file: ${TPATH}conf.d/mariadb.env
networks:
- pterodactyl
profiles: [ panel ]
restart: always
volumes:
- tdb:/var/lib/mysql
##
# -- Pterodactyl Panel --
# This is the container that provides the main web interface.
##
tpanel:
env_file: ${TPATH}conf.d/panel.env
image: docker.io/ccarney16/pterodactyl-panel:${PANEL_VERSION:-latest}
container_name: tpanel
profiles: [ panel ]
ports:
- 4848:80
restart: always
volumes:
- tpanel:/data
depends_on:
tdb:
condition: service_started
tredis:
condition: service_started
networks:
- pterodactyl
- caddy
##
# -- Redis --
##
tredis:
container_name: tredis
cpu_count: 2
image: docker.io/library/redis:alpine
mem_limit: 128m
networks:
- pterodactyl
profiles: [ panel ]
restart: always
##
# -- Panel Worker --
##
tworker:
container_name: tworker
command: p:worker
env_file: ${TPATH}conf.d/panel.env
image: docker.io/ccarney16/pterodactyl-panel:${PANEL_VERSION:-latest}
profiles: [ panel ]
restart: always
volumes:
- tpanel:/data
networks:
- pterodactyl
volumes:
tpanel:
name: tpanel
external: true
tdb:
name: tdb
external: true
networks:
caddy:
external: true
pterodactyl:
external: true
pterodactyl_nw:
external: true

View File

@@ -0,0 +1,54 @@
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- DOCKER_MODS=ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest
- 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
gluetun:
image: qmcgaw/gluetun:v3
cap_add:
- NET_ADMIN
container_name: gluetun
environment:
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${MULLKEY}
- WIREGUARD_ADDRESSES=10.75.99.140/32
- SERVER_COUNTRIES=USA
- SERVER_CITIES=Chicago IL
#- DNS_ADDRESS=10.64.0.1
volumes:
- gluetun:/gluetun
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 8181:8181
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
networks:
- qbit
volumes:
qbittorrent:
external: true
gluetun:
external: true
networks:
qbit:
external: true

View File

@@ -0,0 +1,21 @@
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
environment:
- BASE_URL=https://searxng.archfox.org
volumes:
- searxng:/etc/searxng
restart: unless-stopped
networks:
- caddy
networks:
caddy:
name: caddy
external: true
volumes:
searxng:
name: searxng
external: true

View File

@@ -0,0 +1,6 @@
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock

View File

@@ -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

48
scripts/run-all.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/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/technitium.yml"
"Networking/caddy.yml"
"Networking/omada.yml"
"Networking/ddns.yml"
"Tools/searxng.yml"
"Tools/monerod.yml"
"Tools/p2pool.yml"
"Tools/ariang.yml"
"Tools/nextcloud-aio.yml"
"Tools/qbit.yml"
"Tools/open-webui.yml"
"Tools/watchtower.yml"
"Tools/pastefy.yml"
"Tools/actual.yml"
"pterodactyl/docker-compose.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+=" --profile panel --profile daemon up -d"
# Execute the composed command
eval $COMPOSE_COMMAND
echo "All services have been started."