Add my homelab setup, converted to docker compose files

This commit is contained in:
Isaac Shoebottom 2024-05-28 16:55:33 -03:00
commit eecd123c53
17 changed files with 314 additions and 0 deletions

16
blog/docker-compose.yml Executable file
View File

@ -0,0 +1,16 @@
version: "3.3"
services:
static-web-server:
image: joseluisq/static-web-server:latest
container_name: blog
ports:
- 8081:80
restart: unless-stopped
environment:
# Note: those envs are customizable but also optional
- SERVER_ROOT=/var/public
- SERVER_CONFIG_FILE=/etc/config.toml
volumes:
- /home/isaac/www/blog.shoebottom.ca/public:/var/public
- /docker/appdata/static-web-server/blog.toml:/etc/config.toml

View File

@ -0,0 +1,10 @@
version: '2'
services:
cloudflare-ddns:
container_name: cloudflare-ddns
image: oznu/cloudflare-ddns:latest
restart: always
environment:
- API_KEY=rrsII0uMDMCjOjkpwicQJRh9JjiGIWvZpCLmCUzN
- ZONE=shoebottom.ca
- PROXIED=true

41
cobalt/docker-compose.yml Executable file
View File

@ -0,0 +1,41 @@
version: '3.5'
services:
cobalt-api:
image: ghcr.io/imputnet/cobalt:latest
restart: unless-stopped
container_name: cobalt-api
init: true
ports:
- 9000:9000/tcp
# if you're using a reverse proxy, uncomment the next line and remove the one above (9000:9000/tcp):
#- 127.0.0.1:9000:9000
environment:
# replace https://api.cobalt.tools/ with your instance's target url in same format
API_URL: "https://cobalt-api.shoebottom.ca/"
# replace eu-nl with your instance's distinctive name
API_NAME: "ca-nb-irs"
# if you want to use cookies when fetching data from services, uncomment the next line and the lines under volume
# COOKIE_PATH: "/cookies.json"
# see docs/run-an-instance.md for more information
# if you want to use cookies when fetching data from services, uncomment volumes and next line
#volumes:
#- ./cookies.json:/cookies.json
cobalt-web:
image: ghcr.io/imputnet/cobalt:latest
restart: unless-stopped
container_name: cobalt-web
init: true
ports:
- 9001:9001/tcp
# if you're using a reverse proxy, uncomment the next line and remove the one above (9001:9001/tcp):
#- 127.0.0.1:9001:9001
environment:
# replace https://cobalt.tools/ with your instance's target url in same format
WEB_URL: "https://cobalt.shoebottom.ca/"
# replace https://api.cobalt.tools/ with preferred api instance url
API_URL: "https://cobalt-api.shoebottom.ca/"

21
conduit/docker-compose.yml Executable file
View File

@ -0,0 +1,21 @@
version: '3'
services:
conduit:
container_name: conduit
image: matrixconduit/matrix-conduit:latest
restart: unless-stopped
ports:
- 6167:6167
volumes:
- /docker/appdata/conduit/db:/var/lib/matrix-conduit/
- /docker/appdata/conduit/conduit.toml:/etc/conduit/conduit.toml
environment:
CONDUIT_CONFIG: /etc/conduit/conduit.toml
turn:
container_name: coturn-server
image: docker.io/coturn/coturn:latest
restart: unless-stopped
network_mode: "host"
volumes:
- /docker/appdata/conduit/coturn.conf:/etc/coturn/turnserver.conf

1
copy.sh Executable file
View File

@ -0,0 +1 @@
sudo cp -R /docker/appdata/yacht/config/compose/* .

12
gitea/docker-compose.yml Executable file
View File

@ -0,0 +1,12 @@
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
volumes:
- /docker/appdata/gitea/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3001:3000"
- "2221:22"

14
handbrake/docker-compose.yml Executable file
View File

@ -0,0 +1,14 @@
version: '3'
services:
handbrake:
container_name: handbrake
image: jlesage/handbrake:latest
restart: on-failure
ports:
- "5800:5800"
volumes:
- "/home/isaac:/storage:ro"
- "/docker/appdata/handbrake/config:/config:rw"
- "/docker/appdata/handbrake/trash:/trash:rw"
- "/docker/appdata/handbrake/watch:/watch:rw"
- "/docker/appdata/handbrake/output:/output:rw"

23
homepage/docker-compose.yml Executable file
View File

@ -0,0 +1,23 @@
version: "3.3"
services:
static-web-server:
image: joseluisq/static-web-server:latest
container_name: homepage
ports:
- 8080:80
restart: unless-stopped
environment:
# Note: those envs are customizable but also optional
- SERVER_ROOT=/var/public
- SERVER_CONFIG_FILE=/etc/config.toml
volumes:
- /home/isaac/www/shoebottom.ca:/var/public
- /home/isaac/Media/Music-LQ:/var/public/music-lq
- /home/isaac/Media/Music:/var/public/music
- /home/isaac/Media/Music-HQ:/var/public/music-hq
- /home/isaac/Media/Movies:/var/public/movies
- /home/isaac/Media/TV:/var/public/tv
- /home/isaac/Media/Anime:/var/public/anime
- /home/isaac/Media/Host:/var/public/host
- /docker/appdata/static-web-server/homepage.toml:/etc/config.toml

View File

@ -0,0 +1,7 @@
version: '3'
services:
jellyfin-vue:
image: ghcr.io/jellyfin/jellyfin-vue:unstable
ports:
- 8083:80
restart: 'unless-stopped'

17
jellyfin/docker-compose.yml Executable file
View File

@ -0,0 +1,17 @@
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
network_mode: 'host'
restart: 'unless-stopped'
environment:
- JELLYFIN_CACHE_DIR=/var/cache/jellyfin
- JELLYFIN_CONFIG_DIR=/etc/jellyfin
- JELLYFIN_DATA_DIR=/var/lib/jellyfin
- JELLYFIN_LOG_DIR=/var/log/jellyfin
volumes:
- /docker/appdata/jellyfin/etc:/etc/jellyfin
- /docker/appdata/jellyfin/cache:/var/cache/jellyfin
- /docker/appdata/jellyfin/lib:/var/lib/jellyfin
- /docker/appdata/jellyfin/log:/var/log/jellyfin
- /home/isaac/Media:/media

12
nginxpm/docker-compose.yml Executable file
View File

@ -0,0 +1,12 @@
version: '3.8'
services:
nginxpm:
container_name: nginx-proxy-manager
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
environment:
DISABLE_IPV6: 'true'
network_mode: host
volumes:
- /docker/appdata/nginxpm/data:/data
- /docker/appdata/nginxpm/letsencrypt:/etc/letsencrypt

13
owncast/docker-compose.yml Executable file
View File

@ -0,0 +1,13 @@
version: "3.4"
services:
owncast:
image: owncast/owncast:latest
container_name: "owncast"
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- "8082:8080"
- "1935:1935"
volumes:
- /docker/appdata/owncast/data:/app/data

28
pihole/docker-compose.yml Executable file
View File

@ -0,0 +1,28 @@
version: "3"
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: cbcrowe/pihole-unbound:latest
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
- "31415:80/tcp"
environment:
TZ: 'America/Moncton'
WEBPASSWORD: 'Txx6jwOf213s51afeE'
FTLCONF_LOCAL_IPV4: '192.168.2.128'
PIHOLE_DNS_: "127.0.0.1#5335"
DNSSEC: "true"
DNSMASQ_LISTENING: "single"
# Volumes store your data between container upgrades
volumes:
- '/docker/appdata/pihole/data:/etc/pihole'
- '/docker/appdata/pihole/dnsmasq:/etc/dnsmasq.d'
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add:
- NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
restart: unless-stopped

26
plex-wrapped/docker-compose.yml Executable file
View File

@ -0,0 +1,26 @@
version: '3'
services:
wrapperr:
ports:
- 8282:8282
container_name: wrapperr
image: ghcr.io/aunefyren/wrapperr:latest
restart: unless-stopped
volumes:
- '/docker/appdata/wrapperr/config:/app/config'
tautulli:
image: ghcr.io/tautulli/tautulli:latest
container_name: tautulli
restart: unless-stopped
volumes:
- '/docker/appdata/tautulli/config:/config'
environment:
- TZ=America/Moncton
ports:
- 8181:8181
networks:
plex-wrapped:
driver: bridge
ipam:
driver: default

13
plex/docker-compose.yml Executable file
View File

@ -0,0 +1,13 @@
version: '2'
services:
plex:
container_name: plex
image: plexinc/pms-docker:latest
restart: unless-stopped
network_mode: host
environment:
- TZ=America/Moncton
volumes:
- /docker/appdata/plex/data:/config
- /tmp/:/transcode
- /home/isaac/Media:/data

View File

@ -0,0 +1,49 @@
version: "3.7"
services:
redis:
container_name: redis
image: cgr.dev/chainguard/valkey:latest
command: --save 30 1 --loglevel warning
restart: unless-stopped
volumes:
- valkey-data:/data
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
ports:
- 8383:8080
volumes:
- /docker/appdata/searxng/config:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=https://searx.shoebottom.ca/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
valkey-data:

11
yacht/docker-compose.yml Executable file
View File

@ -0,0 +1,11 @@
version: "3"
services:
yacht:
container_name: yacht
restart: unless-stopped
network_mode: host
volumes:
- /docker/appdata/yacht/config:/config
- /var/run/docker.sock:/var/run/docker.sock
image: selfhostedpro/yacht