Initial commit

This commit is contained in:
2023-04-01 20:06:33 -05:00
parent 6ad2ed0f32
commit 2e6e949ddc
3 changed files with 253 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
certs/
data/
env/
sql/

232
compose.yml Normal file
View File

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

17
template.yml Normal file
View File

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