From 2e6e949ddcfdb104f158528a8f2d7de5da2595f0 Mon Sep 17 00:00:00 2001 From: Coby Powers Date: Sat, 1 Apr 2023 20:06:33 -0500 Subject: [PATCH] Initial commit --- .gitignore | 4 + compose.yml | 232 +++++++++++++++++++++++++++++++++++++++++++++++++++ template.yml | 17 ++++ 3 files changed, 253 insertions(+) create mode 100644 .gitignore create mode 100644 compose.yml create mode 100644 template.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62ed097 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +certs/ +data/ +env/ +sql/ diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..afeba69 --- /dev/null +++ b/compose.yml @@ -0,0 +1,232 @@ +services: + watchtower: # Watchtower (automatically updates base images) + container_name: watchtower + image: containrrr/watchtower:latest + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - service_network + portainer: + container_name: portainer + image: portainer/portainer-ce:latest + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./data/portainer:/data + networks: + - service_network + expose: + - 9000 + npm: # Nginx Proxy Manager (handles proxies) + container_name: npm + image: jc21/nginx-proxy-manager:latest + restart: always + env_file: ./env/npm.env + volumes: + - ./data/npm:/data + - ./data/letsencrypt:/etc/letsencrypt + networks: + - service_network + - hidden_network + ports: + - 80:80 + - 81:81 + - 443:443 + nextcloud: # Nextcloud (hosts file server) + container_name: nextcloud + image: nextcloud:latest + restart: unless-stopped + env_file: ./env/nextcloud.env + volumes: + - ./data/nextcloud:/var/www/html + - /mnt/storage/nextcloud:/var/www/html/data + networks: + - service_network + - nextcloud_network + expose: + - 80 + depends_on: + - nextcloud-db + - nextcloud-cache + nextcloud-db: + container_name: nextcloud-db + image: mariadb:10.6 + restart: always + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW + env_file: ./env/nextcloud-db.env + volumes: + - ./data/nextcloud-db:/var/lib/mysql + networks: + - nextcloud_network + nextcloud-cache: + container_name: nextcloud-cache + image: redis:alpine + restart: always + networks: + - nextcloud_network + pterodactyl: # Pterodactyl (hosts game servers) + container_name: pterodactyl + image: ghcr.io/pterodactyl/panel:latest + restart: unless-stopped + env_file: ./env/pterodactyl.env + volumes: + - ./data/pterodactyl:/app/var + networks: + - service_network + - pterodactyl_network + expose: + - 80 + depends_on: + - pterodactyl-db + - pterodactyl-cache + pterodactyl-db: + container_name: pterodactyl-db + image: mariadb:10.5 + restart: always + command: --default-authentication-plugin=mysql_native_password + env_file: ./env/pterodactyl-db.env + volumes: + - ./data/pterodactyl-db:/var/lib/mysql + networks: + - pterodactyl_network + pterodactyl-cache: + container_name: pterodactyl-cache + image: redis:alpine + restart: always + networks: + - pterodactyl_network + photoprism: # Photoprism (manages photo and video library) + container_name: photoprism + image: photoprism/photoprism:latest + restart: unless-stopped + env_file: ./env/photoprism.env + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + devices: + - /dev/dri/card0:/dev/dri/card0 + - /dev/dri/renderD128:/dev/dri/renderD128 + working_dir: "/photoprism" + volumes: + - ./data/photoprism:/photoprism/storage + - /mnt/storage/photoprism/import:/photoprism/import + - /mnt/storage/photoprism/originals:/photoprism/originals + networks: + - service_network + - photoprism_network + expose: + - 2342 + depends_on: + - photoprism-db + photoprism-db: + container_name: photoprism-db + image: mariadb:10.10 + restart: always + command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120 + env_file: ./env/photoprism-db.env + volumes: + - ./data/photoprism-db:/var/lib/mysql + networks: + - photoprism_network + jellyfin: # Jellyfin (manages movies, shows, & books) + container_name: jellyfin + image: jellyfin/jellyfin:latest + restart: unless-stopped + user: 1001:0 + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + devices: + - /dev/dri/card0:/dev/dri/card0 + - /dev/dri/renderD128:/dev/dri/renderD128 + volumes: + - ./data/jellyfin/config:/config + - ./data/jellyfin/cache:/cache + - /mnt/storage/media/movies:/movies + - /mnt/storage/media/shows:/shows + - /mnt/storage/media/books:/books + networks: + service_network: + exposed_service_network: + ipv4_address: 192.168.1.104 + gitea: # Gitea (hosts git server) + container_name: gitea + image: gitea/gitea:latest + restart: unless-stopped + env_file: ./env/gitea.env + volumes: + - /mnt/storage/gitea:/data + networks: + - service_network + - gitea_network + expose: + - 3000 + depends_on: + - gitea-db + gitea-db: + container_name: gitea-db + image: mysql:8 + restart: always + env_file: ./env/gitea-db.env + volumes: + - ./data/gitea-db:/var/lib/mysql + networks: + - gitea_network + homer: # Homer (displays all self-hosted services) + container_name: homer + image: b4bz/homer:latest + restart: unless-stopped + user: 1001:0 + env_file: ./env/homer.env + volumes: + - ./data/homer:/www/assets + networks: + - service_network + expose: + - 8080 + uptime-kuma: # Uptime Kuma (displays uptime for all self-hosted services) + container_name: uptime-kuma + image: louislam/uptime-kuma:latest + restart: unless-stopped + volumes: + - ./data/uptime-kuma:/app/data + networks: + - service_network + expose: + - 3001 + depends_on: + - npm + + +networks: + nextcloud_network: + name: nextcloud_network + pterodactyl_network: + name: pterodactyl_network + photoprism_network: + name: photoprism_network + gitea_network: + name: gitea_network + hidden_network: + name: hidden_network + external: true + service_network: + name: service_network + ipam: + config: + - subnet: 172.1.0.0/24 + gateway: 172.1.0.1 + exposed_service_network: + name: exposed_service_network + driver: macvlan + driver_opts: + parent: enp5s0 + ipam: + config: + - subnet: 192.168.1.0/24 + gateway: 192.168.1.1 diff --git a/template.yml b/template.yml new file mode 100644 index 0000000..b841fc9 --- /dev/null +++ b/template.yml @@ -0,0 +1,17 @@ +services: + service: + container_name: + image: + restart: + command: + user: + env_file: + environment: + deploy: + devices: + working_dir: + volumes: + networks: + ports: + expose: + depends_on: