From eecd123c53c361dbfb03750e8585d2a2dbaadb7c Mon Sep 17 00:00:00 2001 From: Isaac Shoebottom Date: Tue, 28 May 2024 16:55:33 -0300 Subject: [PATCH] Add my homelab setup, converted to docker compose files --- blog/docker-compose.yml | 16 ++++++++++ cloudflare-ddns/docker-compose.yml | 10 ++++++ cobalt/docker-compose.yml | 41 +++++++++++++++++++++++++ conduit/docker-compose.yml | 21 +++++++++++++ copy.sh | 1 + gitea/docker-compose.yml | 12 ++++++++ handbrake/docker-compose.yml | 14 +++++++++ homepage/docker-compose.yml | 23 ++++++++++++++ jellyfin-vue/docker-compose.yml | 7 +++++ jellyfin/docker-compose.yml | 17 +++++++++++ nginxpm/docker-compose.yml | 12 ++++++++ owncast/docker-compose.yml | 13 ++++++++ pihole/docker-compose.yml | 28 +++++++++++++++++ plex-wrapped/docker-compose.yml | 26 ++++++++++++++++ plex/docker-compose.yml | 13 ++++++++ searxng-docker/docker-compose.yml | 49 ++++++++++++++++++++++++++++++ yacht/docker-compose.yml | 11 +++++++ 17 files changed, 314 insertions(+) create mode 100755 blog/docker-compose.yml create mode 100755 cloudflare-ddns/docker-compose.yml create mode 100755 cobalt/docker-compose.yml create mode 100755 conduit/docker-compose.yml create mode 100755 copy.sh create mode 100755 gitea/docker-compose.yml create mode 100755 handbrake/docker-compose.yml create mode 100755 homepage/docker-compose.yml create mode 100755 jellyfin-vue/docker-compose.yml create mode 100755 jellyfin/docker-compose.yml create mode 100755 nginxpm/docker-compose.yml create mode 100755 owncast/docker-compose.yml create mode 100755 pihole/docker-compose.yml create mode 100755 plex-wrapped/docker-compose.yml create mode 100755 plex/docker-compose.yml create mode 100755 searxng-docker/docker-compose.yml create mode 100755 yacht/docker-compose.yml diff --git a/blog/docker-compose.yml b/blog/docker-compose.yml new file mode 100755 index 0000000..2c3b659 --- /dev/null +++ b/blog/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/cloudflare-ddns/docker-compose.yml b/cloudflare-ddns/docker-compose.yml new file mode 100755 index 0000000..449ab33 --- /dev/null +++ b/cloudflare-ddns/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/cobalt/docker-compose.yml b/cobalt/docker-compose.yml new file mode 100755 index 0000000..39b2516 --- /dev/null +++ b/cobalt/docker-compose.yml @@ -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/" \ No newline at end of file diff --git a/conduit/docker-compose.yml b/conduit/docker-compose.yml new file mode 100755 index 0000000..2845aeb --- /dev/null +++ b/conduit/docker-compose.yml @@ -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 + diff --git a/copy.sh b/copy.sh new file mode 100755 index 0000000..44ab2d8 --- /dev/null +++ b/copy.sh @@ -0,0 +1 @@ +sudo cp -R /docker/appdata/yacht/config/compose/* . diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml new file mode 100755 index 0000000..cccabd9 --- /dev/null +++ b/gitea/docker-compose.yml @@ -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" \ No newline at end of file diff --git a/handbrake/docker-compose.yml b/handbrake/docker-compose.yml new file mode 100755 index 0000000..bc01db0 --- /dev/null +++ b/handbrake/docker-compose.yml @@ -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" \ No newline at end of file diff --git a/homepage/docker-compose.yml b/homepage/docker-compose.yml new file mode 100755 index 0000000..febc3da --- /dev/null +++ b/homepage/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/jellyfin-vue/docker-compose.yml b/jellyfin-vue/docker-compose.yml new file mode 100755 index 0000000..b64c6e9 --- /dev/null +++ b/jellyfin-vue/docker-compose.yml @@ -0,0 +1,7 @@ +version: '3' +services: + jellyfin-vue: + image: ghcr.io/jellyfin/jellyfin-vue:unstable + ports: + - 8083:80 + restart: 'unless-stopped' \ No newline at end of file diff --git a/jellyfin/docker-compose.yml b/jellyfin/docker-compose.yml new file mode 100755 index 0000000..e1a59dd --- /dev/null +++ b/jellyfin/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/nginxpm/docker-compose.yml b/nginxpm/docker-compose.yml new file mode 100755 index 0000000..7c0e975 --- /dev/null +++ b/nginxpm/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/owncast/docker-compose.yml b/owncast/docker-compose.yml new file mode 100755 index 0000000..d51f063 --- /dev/null +++ b/owncast/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/pihole/docker-compose.yml b/pihole/docker-compose.yml new file mode 100755 index 0000000..4148b17 --- /dev/null +++ b/pihole/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/plex-wrapped/docker-compose.yml b/plex-wrapped/docker-compose.yml new file mode 100755 index 0000000..9f64eff --- /dev/null +++ b/plex-wrapped/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/plex/docker-compose.yml b/plex/docker-compose.yml new file mode 100755 index 0000000..3d623fd --- /dev/null +++ b/plex/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/searxng-docker/docker-compose.yml b/searxng-docker/docker-compose.yml new file mode 100755 index 0000000..ffa2a09 --- /dev/null +++ b/searxng-docker/docker-compose.yml @@ -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: \ No newline at end of file diff --git a/yacht/docker-compose.yml b/yacht/docker-compose.yml new file mode 100755 index 0000000..e311e6c --- /dev/null +++ b/yacht/docker-compose.yml @@ -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 +