Initial docker compose files

This commit is contained in:
Ksan 2025-06-12 00:09:45 +02:00
commit 194b674c7d
7 changed files with 219 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
.env
todo
certs/
traefik/config/

21
crafty/compose.yaml Normal file
View File

@ -0,0 +1,21 @@
---
services:
crafty:
container_name: crafty_container
image: registry.gitlab.com/crafty-controller/crafty-4:latest
restart: always
environment:
- TZ=Etc/UTC
ports:
- "8443:8443" # HTTPS
# - "8123:8123" # DYNMAP
- "19132:19132/udp" # BEDROCK
- "25500-25600:25500-25600" # MC SERV PORT RANGE
volumes:
- ./docker/backups:/crafty/backups
- ./docker/logs:/crafty/logs
- ./docker/servers:/crafty/servers
- ./docker/config:/crafty/app/config
- ./docker/import:/crafty/import

41
ddns/compose.yaml Normal file
View File

@ -0,0 +1,41 @@
---
services:
cloudflare-ddns:
image: oznu/cloudflare-ddns:latest
container_name: cloudflare-ddns
environment:
- API_KEY=${API_KEY}
- ZONE=${DOMAIN}
- PROXIED=false
restart: always
ddns-git:
image: oznu/cloudflare-ddns:latest
container_name: ddns-git
environment:
- API_KEY=${API_KEY}
- ZONE=${DOMAIN}
- SUBDOMAIN=git
- PROXIED=false
restart: always
ddns-crafty:
image: oznu/cloudflare-ddns:latest
container_name: ddns-crafty
environment:
- API_KEY=${API_KEY}
- ZONE=${DOMAIN}
- SUBDOMAIN=crafty
- PROXIED=false
restart: always
ddns-nextcloud:
image: oznu/cloudflare-ddns:latest
container_name: ddns-nextcloud
environment:
- API_KEY=${API_KEY}
- ZONE=${DOMAIN}
- SUBDOMAIN=cloud
- PROXIED=false
restart: always

61
gitea/compose.yaml Normal file
View File

@ -0,0 +1,61 @@
---
services:
server:
image: gitea/gitea:1.23.8
container_name: gitea-server
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}
- GITEA__database__NAME=${POSTGRES_DB:?POSTGRES_DB not set}
- GITEA__database__USER=${POSTGRES_USER:?POSTGRES_USER not set}
- GITEA__database__PASSWD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD not set}
- GITEA__server__SSH_PORT=2221
- GITEA__server__ROOT_URL=https://git.${DOMAIN}
networks:
- frontend
- backend
volumes:
- /mnt/hdd1/data/docker/volumes/gitea-data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "2221:22"
depends_on:
- db
# <--
labels:
- traefik.enable=true
- traefik.http.services.gitea.loadbalancer.server.port=3000
- traefik.http.services.gitea.loadbalancer.server.scheme=http
- traefik.http.routers.gitea-https.entrypoints=websecure
- traefik.http.routers.gitea-https.rule=Host(`git.${DOMAIN}`)
- traefik.http.routers.gitea-https.tls=true
- traefik.http.routers.gitea-https.tls.certresolver=cloudflare
restart: always
db:
image: postgres:14
container_name: gitea-db
environment:
- POSTGRES_USER=${POSTGRES_USER:?POSTGRES_USER not set}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD not set}
- POSTGRES_DB=${POSTGRES_DB:?POSTGRES_DB not set}
networks:
- backend
volumes:
- /mnt/hdd1/data/docker/volumes/gitea-db:/var/lib/postgresql/data
restart: always
volumes:
gitea-data:
driver: local
gitea-db:
driver: local
networks:
frontend:
external: true
backend:
external: true

50
nextcloud/compose.yaml Normal file
View File

@ -0,0 +1,50 @@
---
volumes:
nextcloud-main:
nextcloud-db:
services:
nextcloud-app:
image: docker.io/library/nextcloud:31.0.5-apache
container_name: nextcloud-app
volumes:
- /mnt/hdd1/nextcloud-data:/var/www/html/data
- nextcloud-main:/var/www/html
labels:
- traefik.enable=true
- traefik.http.routers.nextcloud.rule=Host(`cloud.${DOMAIN}`)
- traefik.http.routers.nextcloud.entrypoints=websecure
- traefik.http.routers.nextcloud.tls=true
- traefik.http.routers.nextcloud.tls.certresolver=cloudflare
- traefik.http.middlewares.nextcloud-headers.headers.customrequestheaders.X-Forwarded-Proto=https
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_HOST=nextcloud-db
networks:
- frontend
- backend
restart: unless-stopped
nextcloud-db:
image: postgres:14
container_name: nextcloud-db
networks:
- backend
volumes:
- nextcloud-db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
restart: unless-stopped
networks:
frontend:
external: true
backend:
external: true

20
test/docker-compose.yaml Normal file
View File

@ -0,0 +1,20 @@
version: '3.7'
services:
nginx:
image: nginx:latest # Use the latest official Nginx image
container_name: nginx_test_site
networks:
- frontend
labels:
- traefik.enable=true
- traefik.http.routers.nginx-http.rule=Host(`${DOMAIN}`) || Host(`www.${DOMAIN}`)
- traefik.http.routers.nginx-http.entrypoints=web
- traefik.http.routers.nginx-https.tls=true
- traefik.http.routers.nginx-https.tls.certresolver=cloudflare
- traefik.http.routers.nginx-https.entrypoints=websecure
- traefik.http.routers.nginx-https.rule=Host(`${DOMAIN}`) || Host(`www.${DOMAIN}`)
restart: always
networks:
frontend:
external: true

22
traefik/compose.yaml Normal file
View File

@ -0,0 +1,22 @@
---
services:
traefik:
image: docker.io/library/traefik:v3.4.0
container_name: traefik
ports:
- 80:80
- 443:443
#- 8080:8080
volumes:
- /run/docker.sock:/run/docker.sock:ro
- ./config/:/etc/traefik/:ro
- ./certs/:/var/traefik/certs/:rw
environment:
- CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}
networks:
- frontend
restart: always
networks:
frontend:
external: true