add compose files
This commit is contained in:
parent
3af0ca22d3
commit
947d8fc764
12 changed files with 450 additions and 0 deletions
64
stateful/conduit-compose.yml
Normal file
64
stateful/conduit-compose.yml
Normal file
|
@ -0,0 +1,64 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
conduit:
|
||||
|
||||
image: matrixconduit/matrix-conduit:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./containers_storage/conduit/:/var/lib/matrix-conduit/
|
||||
networks:
|
||||
- proxy-net
|
||||
ports:
|
||||
- "6167:6167"
|
||||
environment:
|
||||
CONDUIT_SERVER_NAME: matrix.slowte.ch
|
||||
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
|
||||
CONDUIT_DATABASE_BACKEND: rocksdb
|
||||
CONDUIT_PORT: 6167
|
||||
CONDUIT_MAX_REQUEST_SIZE: 20_000_000
|
||||
CONDUIT_ALLOW_REGISTRATION: 'false'
|
||||
CONDUIT_ALLOW_FEDERATION: 'true'
|
||||
CONDUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
|
||||
CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
|
||||
CONDUIT_MAX_CONCURRENT_REQUESTS: 100
|
||||
CONDUIT_ADDRESS: 0.0.0.0
|
||||
CONDUIT_CONFIG: ''
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy-net"
|
||||
- "traefik.http.routers.conduit.rule=Host(`matrix.slowte.ch`)"
|
||||
- "traefik.http.services.conduit.loadbalancer.server.port=6167"
|
||||
- "traefik.http.routers.conduit.tls=true"
|
||||
- "traefik.http.routers.conduit.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.conduit.middlewares=cors-headers@docker"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
|
||||
|
||||
conduit-nginx:
|
||||
|
||||
image: nginx:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./containers_storage/conduit-nginx/matrix.conf:/etc/nginx/conf.d/matrix.conf
|
||||
- ./containers_storage/conduit-nginx/www:/var/www/
|
||||
networks:
|
||||
- proxy-net
|
||||
ports:
|
||||
- "6168:80"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy-net"
|
||||
- "traefik.http.routers.conduit-nginx.rule=Host(`matrix.slowte.ch`) && PathPrefix(`/.well-known/matrix`)"
|
||||
- "traefik.http.services.conduit-nginx.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.conduit-nginx.tls=true"
|
||||
- "traefik.http.routers.conduit-nginx.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.conduit-nginx.middlewares=cors-headers@docker"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
||||
- "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
|
53
stateful/forgejo-compose.yml
Normal file
53
stateful/forgejo-compose.yml
Normal file
|
@ -0,0 +1,53 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
forgejo-net:
|
||||
external: false
|
||||
|
||||
services:
|
||||
|
||||
forgejo:
|
||||
|
||||
image: "codeberg.org/forgejo/forgejo:1.21"
|
||||
container_name: "forgejo"
|
||||
environment:
|
||||
- FORGEJO__database__DB_TYPE=postgres
|
||||
- FORGEJO__database__HOST=forgejo-db:5432
|
||||
- FORGEJO__database__NAME=forgejo
|
||||
- FORGEJO__database__USER=forgejo
|
||||
- FORGEJO__database__PASSWD=forgejo
|
||||
- FORGEJO__server__SSH_PORT=1883
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy-net
|
||||
- forgejo-net
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "222:22"
|
||||
volumes:
|
||||
- ./containers_storage/forgejo:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
depends_on:
|
||||
- forgejo-db
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=proxy-net
|
||||
- traefik.http.routers.forgejo.rule=Host(`forge.slowte.ch`)
|
||||
- traefik.http.services.forgejo.loadbalancer.server.port=3000
|
||||
- traefik.http.routers.forgejo.tls=true
|
||||
- traefik.http.routers.forgejo.tls.certresolver=letsencrypt
|
||||
|
||||
forgejo-db:
|
||||
|
||||
image: postgres:14
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=forgejo
|
||||
- POSTGRES_PASSWORD=forgejo
|
||||
- POSTGRES_DB=forgejo
|
||||
networks:
|
||||
- forgejo-net
|
||||
volumes:
|
||||
- ./containers_storage/forgejo-postgres:/var/lib/postgresql/data
|
50
stateful/nocodb-compose.yml
Normal file
50
stateful/nocodb-compose.yml
Normal file
|
@ -0,0 +1,50 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
nocodb-net:
|
||||
external: false
|
||||
|
||||
services:
|
||||
|
||||
nocodb:
|
||||
|
||||
depends_on:
|
||||
root_db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- nocodb-net
|
||||
- proxy-net
|
||||
environment:
|
||||
NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
|
||||
image: "nocodb/nocodb:latest"
|
||||
ports:
|
||||
- "3005:8080"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- "./containers_storage/nocode:/usr/app/data"
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=proxy-net
|
||||
- traefik.http.routers.nocodb.rule=Host(`data.slowte.ch`)
|
||||
- traefik.http.services.nocodb.loadbalancer.server.port=8080
|
||||
- traefik.http.routers.nocodb.tls=true
|
||||
- traefik.http.routers.nocodb.tls.certresolver=letsencrypt
|
||||
|
||||
root_db:
|
||||
|
||||
environment:
|
||||
POSTGRES_DB: root_db
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_USER: postgres
|
||||
networks:
|
||||
- nocodb-net
|
||||
healthcheck:
|
||||
interval: 10s
|
||||
retries: 10
|
||||
test: "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""
|
||||
timeout: 2s
|
||||
image: postgres:15
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- "./containers_storage/nocode-db:/var/lib/postgresql/data"
|
24
stateful/pihole-compose.yml
Normal file
24
stateful/pihole-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
pihole:
|
||||
|
||||
container_name: pihole
|
||||
image: pihole/pihole:latest
|
||||
ports:
|
||||
- "53:53/tcp"
|
||||
- "53:53/udp"
|
||||
- "3002:80/tcp"
|
||||
environment:
|
||||
TZ: 'Europe/Zurich'
|
||||
WEBPASSWORD: '${PIHOLE_PASSWORD}'
|
||||
volumes:
|
||||
- './containers_storage/pihole/etc:/etc/pihole'
|
||||
- './containers_storage/pihole/dnsmasq.d:/etc/dnsmasq.d'
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy-net
|
55
stateful/teammapper-compose.yml
Normal file
55
stateful/teammapper-compose.yml
Normal file
|
@ -0,0 +1,55 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
teammapper-net:
|
||||
external: false
|
||||
|
||||
services:
|
||||
teammapper:
|
||||
image: ghcr.io/b310-digital/teammapper:latest
|
||||
environment:
|
||||
MODE: PROD
|
||||
BINDING: "0.0.0.0"
|
||||
POSTGRES_DATABASE: teammapper-db
|
||||
POSTGRES_HOST: teammapper-postgres
|
||||
POSTGRES_PASSWORD: pass
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_SSL: false
|
||||
POSTGRES_SSL_REJECT_UNAUTHORIZED: false
|
||||
POSTGRES_USER: team
|
||||
POSTGRES_QUERY_TIMEOUT: 100000
|
||||
POSTGRES_STATEMENT_TIMEOUT: 100000
|
||||
DELETE_AFTER_DAYS: 30
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy-net
|
||||
- teammapper-net
|
||||
ports:
|
||||
- 3003:3000
|
||||
depends_on:
|
||||
- teammapper-postgres
|
||||
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=proxy-net
|
||||
- traefik.http.routers.teammapper.rule=Host(`think.slowte.ch`)
|
||||
- traefik.http.services.teammapper.loadbalancer.server.port=3000
|
||||
- traefik.http.routers.teammapper.tls=true
|
||||
- traefik.http.routers.teammapper.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.teammapper.middlewares=auth
|
||||
- traefik.http.middlewares.auth.basicauth.users=${TEAMMAPPER_BASICAUTH}
|
||||
|
||||
teammapper-postgres:
|
||||
image: postgres:12-alpine
|
||||
environment:
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
POSTGRES_DB: teammapper-db
|
||||
POSTGRES_PASSWORD: pass
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_USER: team
|
||||
volumes:
|
||||
- './containers_storage/teammapper-postgres:/var/lib/postgresql/data/pgdata'
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- teammapper-net
|
21
stateful/traefik-compose.yml
Normal file
21
stateful/traefik-compose.yml
Normal file
|
@ -0,0 +1,21 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
traefik:
|
||||
|
||||
image: "traefik:latest"
|
||||
container_name: "traefik"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy-net
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./containers_storage/traefik:/etc/traefik
|
29
stateful/vaultwarden-compose.yml
Normal file
29
stateful/vaultwarden-compose.yml
Normal file
|
@ -0,0 +1,29 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
vaultwarden:
|
||||
|
||||
image: "vaultwarden/server:latest"
|
||||
container_name: "vaultwarden"
|
||||
environment:
|
||||
- ADMIN_TOKEN=${ADMIN_TOKEN}
|
||||
- SIGNUPS_ALLOWED=false
|
||||
- DOMAIN=https://vault.slowte.ch
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy-net
|
||||
ports:
|
||||
- "3001:80"
|
||||
volumes:
|
||||
- ./containers_storage/vaultwarden:/data:rw
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=proxy-net
|
||||
- traefik.http.routers.vaultwarden.rule=Host(`vault.slowte.ch`)
|
||||
- traefik.http.services.vaultwarden.loadbalancer.server.port=80
|
||||
- traefik.http.routers.vaultwarden.tls=true
|
||||
- traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt
|
17
stateless/dlnextcloud-compose.yml
Normal file
17
stateless/dlnextcloud-compose.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
services:
|
||||
|
||||
dlnextcloud:
|
||||
|
||||
container_name: dlnextcloud
|
||||
network_mode: "host"
|
||||
build: https://forge.slowte.ch/selfhosted/dlnextcloud.git
|
||||
image: dlnextcloud
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NC_PASSWORD=${NC_PASSWORD}
|
||||
- NC_MUSIC_DIR_URL=https://cloud.slowte.ch/remote.php/dav/files/mediaserver/audio
|
||||
- NC_RADIO_DIR_URL=https://cloud.slowte.ch/remote.php/dav/files/mediaserver/radio
|
||||
- NC_USERNAME=mediaserver
|
||||
- GERBERA_IP=192.168.0.107
|
||||
- GERBERA_PORT=49152
|
||||
privileged: true
|
37
stateless/leantime-compose.yml
Normal file
37
stateless/leantime-compose.yml
Normal file
|
@ -0,0 +1,37 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
leantime-net:
|
||||
external: false
|
||||
|
||||
services:
|
||||
|
||||
leantime:
|
||||
|
||||
container_name: leantime
|
||||
image: leantime/leantime:latest
|
||||
restart: unless-stopped
|
||||
env_file: ./containers_storage/leantime/.env
|
||||
networks:
|
||||
- leantime-net
|
||||
- proxy-net
|
||||
volumes:
|
||||
- ./containers_storage/leantime/public_userfiles:/var/www/html/public/userfiles
|
||||
- ./containers_storage/leantime/userfiles:/var/www/html/userfiles
|
||||
ports:
|
||||
- "8002:80"
|
||||
depends_on:
|
||||
- leantime-mysql
|
||||
|
||||
leantime-mysql:
|
||||
|
||||
container_name: leantime-mysql
|
||||
image: mysql:8.0
|
||||
volumes:
|
||||
- ./containers_storage/leantime-mysql:/var/lib/mysql
|
||||
restart: unless-stopped
|
||||
env_file: ./containers_storage/leantime/.env
|
||||
networks:
|
||||
- leantime-net
|
||||
command: --character-set-server=UTF8MB4 --collation-server=UTF8MB4_unicode_ci
|
25
stateless/n8n-compose.yml
Normal file
25
stateless/n8n-compose.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
n8n:
|
||||
|
||||
container_name: n8n
|
||||
image: docker.n8n.io/n8nio/n8n
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8001:5678"
|
||||
volumes:
|
||||
- ./containers_storage/n8n:/home/node/.n8n
|
||||
networks:
|
||||
- proxy-net
|
||||
environment:
|
||||
- N8N_HOST=flows.slowte.ch
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=https
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://flows.slowte.ch/
|
||||
- GENERIC_TIMEZONE=Europe/Zurich
|
30
stateless/ntfy-compose.yml
Normal file
30
stateless/ntfy-compose.yml
Normal file
|
@ -0,0 +1,30 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
|
||||
ntfy:
|
||||
|
||||
container_name: ntfy
|
||||
image: binwiederhier/ntfy
|
||||
networks:
|
||||
- proxy-net
|
||||
command:
|
||||
- serve
|
||||
environment:
|
||||
- TZ=CET
|
||||
volumes:
|
||||
- ./containers_storage/ntfy/cache:/var/cache/ntfy
|
||||
- ./containers_storage/ntfy/lib:/var/lib/ntfy
|
||||
- ./containers_storage/ntfy/etc:/etc/ntfy
|
||||
ports:
|
||||
- "8003:80"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
|
||||
interval: 60s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
restart: unless-stopped
|
45
stateless/woodpecker-compose.yml
Normal file
45
stateless/woodpecker-compose.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
networks:
|
||||
|
||||
proxy-net:
|
||||
external: true
|
||||
woodpecker-net:
|
||||
external: false
|
||||
|
||||
services:
|
||||
|
||||
woodpecker:
|
||||
|
||||
container_name: woodpecker
|
||||
image: woodpeckerci/woodpecker-server:latest
|
||||
networks:
|
||||
- woodpecker-net
|
||||
- proxy-net
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 8000:8000
|
||||
volumes:
|
||||
- ./containers_storage/woodpecker:/var/lib/woodpecker/
|
||||
environment:
|
||||
- WOODPECKER_OPEN=true
|
||||
- WOODPECKER_HOST=https://ci.slowte.ch
|
||||
- WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
|
||||
- WOODPECKER_GITEA=true
|
||||
- WOODPECKER_GITEA_URL=https://forge.slowte.ch
|
||||
- WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT}
|
||||
- WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_SECRET}
|
||||
|
||||
woodpecker-worker:
|
||||
|
||||
container_name: woodpecker-worker
|
||||
image: woodpeckerci/woodpecker-agent:latest
|
||||
command: agent
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- woodpecker-net
|
||||
depends_on:
|
||||
- woodpecker
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- WOODPECKER_SERVER=woodpecker:9000
|
||||
- WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
|
Loading…
Reference in a new issue