Mejorando configuracion de stacks usando traefik
This commit is contained in:
@@ -1,12 +0,0 @@
|
|||||||
services:
|
|
||||||
actual_server:
|
|
||||||
image: ghcr.io/actualbudget/actual:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/actual:/data
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.13
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
20
stacks/actual/actual.yml
Normal file
20
stacks/actual/actual.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
actual_server:
|
||||||
|
image: ghcr.io/actualbudget/actual:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/actual:/data
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.actual-web.rule=Host(`actual.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.actual-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.actual-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.actual.rule=Host(`actual.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.actual.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.actual.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.actual.loadbalancer.server.port=5006"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
services:
|
|
||||||
gametabs:
|
|
||||||
image: nginx
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gametabs:/usr/share/nginx/html
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.6
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
20
stacks/gametabs/gametabs.yml
Normal file
20
stacks/gametabs/gametabs.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
gametabs:
|
||||||
|
image: nginx
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gametabs:/usr/share/nginx/html
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.gametabs-web.rule=Host(`gametabs.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.gametabs-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.gametabs-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.gametabs.rule=Host(`gametabs.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.gametabs.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.gametabs.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.gametabs.loadbalancer.server.port=80"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
services:
|
|
||||||
gitea:
|
|
||||||
image: gitea/gitea:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
env_file:
|
|
||||||
- gitea.env
|
|
||||||
networks:
|
|
||||||
gitea_network:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.3
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/data:/data
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
depends_on:
|
|
||||||
- gitea-db
|
|
||||||
|
|
||||||
runner:
|
|
||||||
image: gitea/act_runner:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
env_file:
|
|
||||||
- gitea.env
|
|
||||||
networks:
|
|
||||||
- gitea_network
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/runner/config:/config
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/runner/data:/data
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
depends_on:
|
|
||||||
- gitea
|
|
||||||
|
|
||||||
gitea-db:
|
|
||||||
image: postgres:16
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/db:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- gitea_network
|
|
||||||
env_file:
|
|
||||||
- gitea.env
|
|
||||||
|
|
||||||
networks:
|
|
||||||
gitea_network:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
USER_UID=1000
|
USER_UID=1000
|
||||||
USER_GID=1000
|
USER_GID=1000
|
||||||
|
|
||||||
CONFIG_FILE=/config/config.yaml
|
|
||||||
GITEA_INSTANCE_URL=https://git.skrd.fun
|
|
||||||
GITEA_RUNNER_REGISTRATION_TOKEN=secret
|
GITEA_RUNNER_REGISTRATION_TOKEN=secret
|
||||||
GITEA_RUNNER_NAME=gitea-runner-1
|
|
||||||
|
|
||||||
POSTGRES_PASSWORD=secret
|
POSTGRES_PASSWORD=secret
|
||||||
POSTGRES_DB=gitea
|
POSTGRES_DB=gitea
|
||||||
62
stacks/gitea/gitea.yml
Normal file
62
stacks/gitea/gitea.yml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
USER_UID: ${USER_UID}
|
||||||
|
USER_GID: ${USER_GID}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
- proxy
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.http.routers.gitea-web.rule=Host(`git.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.gitea-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.gitea-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.gitea.rule=Host(`git.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.gitea.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.gitea.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/data:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
depends_on:
|
||||||
|
- gitea-db
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: gitea/act_runner:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
CONFIG_FILE: /config/config.yaml
|
||||||
|
GITEA_INSTANCE_URL: "https://git.skrd.fun"
|
||||||
|
GITEA_RUNNER_NAME: "gitea-runner-1"
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN: "${GITEA_RUNNER_REGISTRATION_TOKEN}"
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/runner/config:/config
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/runner/data:/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
depends_on:
|
||||||
|
- gitea
|
||||||
|
|
||||||
|
gitea-db:
|
||||||
|
image: postgres:16
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/gitea/db:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
|
||||||
|
POSTGRES_DB: "${POSTGRES_DB}"
|
||||||
|
POSTGRES_USER: "${POSTGRES_USER}"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
internal:
|
||||||
|
name: gitea
|
||||||
|
proxy:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
DB_PASSWORD=secret
|
|
||||||
DB_USERNAME=postgres
|
|
||||||
DB_DATABASE_NAME=immich
|
|
||||||
|
|
||||||
POSTGRES_PASSWORD=secret
|
|
||||||
POSTGRES_USER=postgres
|
|
||||||
POSTGRES_DB=immich
|
|
||||||
POSTGRES_INITDB_ARGS='--data-checksums'
|
|
||||||
3
stacks/immich/immich.env.example
Normal file
3
stacks/immich/immich.env.example
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
DB_PASSWORD=secret
|
||||||
|
DB_USERNAME=postgres
|
||||||
|
DB_DATABASE_NAME=immich
|
||||||
@@ -6,11 +6,22 @@ services:
|
|||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/upload:/usr/src/app/upload
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/upload:/usr/src/app/upload
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
networks:
|
networks:
|
||||||
immich_network:
|
- internal
|
||||||
macvlan_192_168_3_0:
|
- proxy
|
||||||
ipv4_address: 192.168.103.12
|
labels:
|
||||||
env_file:
|
- "traefik.enable=true"
|
||||||
- immich.env
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.http.routers.immich-web.rule=Host(`photos.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.immich-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.immich-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.immich.rule=Host(`photos.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.immich.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.immich.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.immich.loadbalancer.server.port=2283"
|
||||||
|
environment:
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD}
|
||||||
|
DB_USERNAME: ${DB_USERNAME}
|
||||||
|
DB_DATABASE_NAME: ${DB_DATABASE_NAME}
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- database
|
- database
|
||||||
@@ -19,7 +30,7 @@ services:
|
|||||||
image: ghcr.io/immich-app/immich-machine-learning:release
|
image: ghcr.io/immich-app/immich-machine-learning:release
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
immich_network:
|
- internal
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/model-cache:/cache
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/model-cache:/cache
|
||||||
|
|
||||||
@@ -27,7 +38,7 @@ services:
|
|||||||
image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b
|
image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
immich_network:
|
- internal
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
@@ -35,9 +46,12 @@ services:
|
|||||||
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
immich_network:
|
- internal
|
||||||
env_file:
|
environment:
|
||||||
- immich.env
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
|
POSTGRES_USER: ${DB_USERNAME}
|
||||||
|
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||||
|
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/postgres:/var/lib/postgresql/data
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/immich/postgres:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -45,9 +59,26 @@ services:
|
|||||||
interval: 5m
|
interval: 5m
|
||||||
start_interval: 30s
|
start_interval: 30s
|
||||||
start_period: 5m
|
start_period: 5m
|
||||||
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
|
command:
|
||||||
|
[
|
||||||
|
"postgres",
|
||||||
|
"-c",
|
||||||
|
"shared_preload_libraries=vectors.so",
|
||||||
|
"-c",
|
||||||
|
'search_path="$$user", public, vectors',
|
||||||
|
"-c",
|
||||||
|
"logging_collector=on",
|
||||||
|
"-c",
|
||||||
|
"max_wal_size=2GB",
|
||||||
|
"-c",
|
||||||
|
"shared_buffers=512MB",
|
||||||
|
"-c",
|
||||||
|
"wal_compression=on",
|
||||||
|
]
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
immich_network:
|
internal:
|
||||||
macvlan_192_168_3_0:
|
name: immich
|
||||||
|
proxy:
|
||||||
|
name: traefik
|
||||||
external: true
|
external: true
|
||||||
@@ -1,8 +1,17 @@
|
|||||||
services:
|
services:
|
||||||
jellyfin:
|
jellyfin:
|
||||||
image: jellyfin/jellyfin
|
image: jellyfin/jellyfin
|
||||||
restart: 'unless-stopped'
|
restart: "unless-stopped"
|
||||||
user: 1000:1000
|
user: 1000:1000
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.jellyfin-web.rule=Host(`jelly.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.jellyfin-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.jellyfin-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.jellyfin.rule=Host(`jelly.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.jellyfin.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.jellyfin.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/jellyfin/config:/config
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/jellyfin/config:/config
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/jellyfin/cache:/cache
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/jellyfin/cache:/cache
|
||||||
@@ -11,9 +20,7 @@ services:
|
|||||||
- /srv/dev-disk-by-uuid-c7a96ee1-c08e-48b1-8afa-79c75380d142/tv:/data/tv
|
- /srv/dev-disk-by-uuid-c7a96ee1-c08e-48b1-8afa-79c75380d142/tv:/data/tv
|
||||||
environment:
|
environment:
|
||||||
- JELLYFIN_PublishedServerUrl=https://jelly.skrd.fun
|
- JELLYFIN_PublishedServerUrl=https://jelly.skrd.fun
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.11
|
|
||||||
networks:
|
networks:
|
||||||
macvlan_192_168_3_0:
|
default:
|
||||||
|
name: traefik
|
||||||
external: true
|
external: true
|
||||||
@@ -3,9 +3,17 @@ services:
|
|||||||
image: git.skrd.fun/skrd/moka:v0.3.9.1
|
image: git.skrd.fun/skrd/moka:v0.3.9.1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- moka.env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- SERVICE=server
|
- SERVICE=server
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.http.routers.moka.rule=Host(`moka.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.moka.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.moka.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.moka.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.moka.middlewares=redirect-to-https@file"
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/moka:/app/storage
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/moka:/app/storage
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -14,22 +22,22 @@ services:
|
|||||||
pgsql:
|
pgsql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
- internal
|
||||||
macvlan_192_168_3_0:
|
- proxy
|
||||||
ipv4_address: 192.168.103.19
|
|
||||||
init: true
|
init: true
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD-SHELL", "curl -fsS http://localhost:8000/up >/dev/null || exit 1" ]
|
test:
|
||||||
|
["CMD-SHELL", "curl -fsS http://localhost:80/up >/dev/null || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
|
||||||
start_period: 20s
|
start_period: 20s
|
||||||
|
|
||||||
schedule:
|
schedule:
|
||||||
image: git.skrd.fun/skrd/moka:v0.3.9.1
|
image: git.skrd.fun/skrd/moka:v0.3.9.1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- moka.env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- SERVICE=schedule
|
- SERVICE=schedule
|
||||||
volumes:
|
volumes:
|
||||||
@@ -40,10 +48,11 @@ services:
|
|||||||
pgsql:
|
pgsql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
- internal
|
||||||
init: true
|
init: true
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD-SHELL", "pgrep -f 'artisan schedule:work' >/dev/null || exit 1" ]
|
test:
|
||||||
|
["CMD-SHELL", "pgrep -f 'artisan schedule:work' >/dev/null || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
@@ -64,10 +73,10 @@ services:
|
|||||||
pgsql:
|
pgsql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
- internal
|
||||||
init: true
|
init: true
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD-SHELL", "pgrep -f 'artisan queue:work' >/dev/null || exit 1" ]
|
test: ["CMD-SHELL", "pgrep -f 'artisan queue:work' >/dev/null || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
@@ -79,9 +88,9 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
- internal
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD-SHELL", "redis-cli -h 127.0.0.1 ping | grep -q PONG" ]
|
test: ["CMD-SHELL", "redis-cli -h 127.0.0.1 ping | grep -q PONG"]
|
||||||
interval: 3s
|
interval: 3s
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
retries: 10
|
retries: 10
|
||||||
@@ -99,13 +108,14 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
- internal
|
||||||
init: true
|
init: true
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [
|
test:
|
||||||
"CMD-SHELL",
|
[
|
||||||
"pg_isready -h 127.0.0.1 -p 5432 -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-postgres}"
|
"CMD-SHELL",
|
||||||
]
|
"pg_isready -h 127.0.0.1 -p 5432 -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-postgres}",
|
||||||
|
]
|
||||||
interval: 3s
|
interval: 3s
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
retries: 10
|
retries: 10
|
||||||
@@ -116,6 +126,8 @@ volumes:
|
|||||||
postgres_data:
|
postgres_data:
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
moka_network:
|
internal:
|
||||||
macvlan_192_168_3_0:
|
name: moka
|
||||||
|
proxy:
|
||||||
|
name: traefik
|
||||||
external: true
|
external: true
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
services:
|
|
||||||
navidrome:
|
|
||||||
image: deluan/navidrome:latest
|
|
||||||
user: 1000:1000
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
ND_BASEURL: "https:://navi.skrd.fun"
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.10
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/navidrome:/data
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/music:/music:ro
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
24
stacks/navidrome/navidrome.yml
Normal file
24
stacks/navidrome/navidrome.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
navidrome:
|
||||||
|
image: deluan/navidrome:latest
|
||||||
|
user: 1000:1000
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
ND_BASEURL: "https:://navi.skrd.fun"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.navidrome-web.rule=Host(`navi.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.navidrome-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.navidrome-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.navidrome.rule=Host(`navi.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.navidrome.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.navidrome.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.navidrome.loadbalancer.server.port=4533"
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/navidrome:/data
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/music:/music:ro
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
services:
|
|
||||||
qbittorrent:
|
|
||||||
image: lscr.io/linuxserver/qbittorrent:latest
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=America/Santiago
|
|
||||||
- WEBUI_PORT=80
|
|
||||||
- TORRENTING_PORT=6881
|
|
||||||
volumes:
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/qbittorrent:/config:/config
|
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/downloads:/downloads
|
|
||||||
restart: unless-stopped
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.4
|
|
||||||
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
28
stacks/qbittorrent/qbittorrent.yml
Normal file
28
stacks/qbittorrent/qbittorrent.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
qbittorrent:
|
||||||
|
image: lscr.io/linuxserver/qbittorrent:latest
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=America/Santiago
|
||||||
|
- WEBUI_PORT=80
|
||||||
|
- TORRENTING_PORT=6881
|
||||||
|
ports:
|
||||||
|
- "6881:6881"
|
||||||
|
volumes:
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/qbittorrent:/config:/config
|
||||||
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/downloads:/downloads
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.qbittorrent-web.rule=Host(`torrent.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.qbittorrent-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.qbittorrent-web.middlewares=redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.qbittorrent.rule=Host(`torrent.skrd.fun`)"
|
||||||
|
- "traefik.http.routers.qbittorrent.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.qbittorrent.tls.certresolver=cf"
|
||||||
|
- "traefik.http.services.qbittorrent.loadbalancer.server.port=80"
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: traefik
|
||||||
|
external: true
|
||||||
16
stacks/traefik/dynamic/komodo.yml
Normal file
16
stacks/traefik/dynamic/komodo.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
http:
|
||||||
|
routers:
|
||||||
|
komodo:
|
||||||
|
rule: Host(`komodo.skrd.fun`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: komodo-svc
|
||||||
|
tls:
|
||||||
|
certResolver: cf
|
||||||
|
middlewares:
|
||||||
|
- local-only
|
||||||
|
services:
|
||||||
|
komodo-svc:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://192.168.102.1:9120"
|
||||||
12
stacks/traefik/dynamic/middlewares.yml
Normal file
12
stacks/traefik/dynamic/middlewares.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
local-only:
|
||||||
|
ipWhiteList:
|
||||||
|
sourceRange:
|
||||||
|
- "192.168.0.0/16"
|
||||||
|
- "10.0.0.0/8"
|
||||||
|
- "127.0.0.1/32"
|
||||||
|
redirect-to-https:
|
||||||
|
redirectScheme:
|
||||||
|
scheme: https
|
||||||
|
permanent: true
|
||||||
42
stacks/traefik/trafik.yml
Normal file
42
stacks/traefik/trafik.yml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:v3.5
|
||||||
|
command:
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
- "--accesslog=true"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/dynamic"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entryPoints.web.address=:80"
|
||||||
|
- "--entryPoints.websecure.address=:443"
|
||||||
|
- "--certificatesresolvers.cf.acme.dnschallenge=true"
|
||||||
|
- "--certificatesresolvers.cf.acme.dnschallenge.provider=cloudflare"
|
||||||
|
- "--certificatesresolvers.cf.acme.email=tls@skrd.fun"
|
||||||
|
- "--certificatesresolvers.cf.acme.storage=/letsencrypt/acme.json"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.dashboard-web.rule=Host(`traefik.skrd.fun`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))"
|
||||||
|
- "traefik.http.routers.dashboard-web.entrypoints=web"
|
||||||
|
- "traefik.http.routers.dashboard-web.middlewares=local-only@file, redirect-to-https@file"
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.skrd.fun`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))"
|
||||||
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.dashboard.tls=true"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=cf"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=local-only@file"
|
||||||
|
volumes:
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
- "/srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/traefik/letsencrypt:/letsencrypt"
|
||||||
|
- "/srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/traefik/dynamic:/dynamic"
|
||||||
|
environment:
|
||||||
|
CF_API_EMAIL: "${CF_API_EMAIL}"
|
||||||
|
CF_DNS_API_TOKEN: "${CF_DNS_API_TOKEN}"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: traefik
|
||||||
@@ -3,15 +3,9 @@ services:
|
|||||||
db:
|
db:
|
||||||
image: mariadb
|
image: mariadb
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
env_file:
|
env_file:
|
||||||
- zenithar.env
|
- zenithar.env
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/zenithar:/var/lib/mysql:Z
|
- /srv/dev-disk-by-uuid-1582b800-1f82-407a-a3aa-3460b3390127/docker/zenithar:/var/lib/mysql:Z
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
ipv4_address: 192.168.103.7
|
|
||||||
|
|
||||||
networks:
|
|
||||||
macvlan_192_168_3_0:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user