diff --git a/bazarr/docker-compose.yml b/bazarr/docker-compose.yml index 41ef6c2..ff3ea66 100644 --- a/bazarr/docker-compose.yml +++ b/bazarr/docker-compose.yml @@ -10,24 +10,25 @@ services: volumes: # - /path/to/bazarr/config:/config # - /path/to/movies:/movies #optional - # - /path/to/tv:/tv #optional + # - nfs_data/film:/movies #optional + - nfs_tv_data:/tv #optional - '/srv/bazarr:/config' - - "nfs_data:/shares" + # - "nfs_data:/shares" ports: - 6767:6767 restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.routers.bazarr.tls=true" - - "traefik.http.routers.bazarr.entrypoints=websecure" - - "traefik.http.routers.bazarr.rule=Host(`bazarr.$DOMAIN_NAME`)" - - "traefik.http.routers.bazarr.tls.certresolver=letsencr" - - "traefik.http.services.bazarr.loadbalancer.server.port=6767" + # labels: + # - "traefik.enable=true" + # - "traefik.http.routers.bazarr.tls=true" + # - "traefik.http.routers.bazarr.entrypoints=websecure" + # - "traefik.http.routers.bazarr.rule=Host(`bazarr.$DOMAIN_NAME`)" + # - "traefik.http.routers.bazarr.tls.certresolver=letsencr" + # - "traefik.http.services.bazarr.loadbalancer.server.port=6767" volumes: - nfs_data: + nfs_tv_data: external: true networks: diff --git a/ddclient/docker-compose.yml b/ddclient/docker-compose.yml new file mode 100644 index 0000000..58deafe --- /dev/null +++ b/ddclient/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3" + +services: + ddclient: + image: lscr.io/linuxserver/ddclient:latest + container_name: ddclient + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + volumes: + - /etc/ddclient:/config + restart: unless-stopped + labels: + - "traefik.enable=true" + +networks: + traefik: + external: true \ No newline at end of file diff --git a/ghost/docker-compose.yml b/ghost/docker-compose.yml index 495b302..34317b9 100644 --- a/ghost/docker-compose.yml +++ b/ghost/docker-compose.yml @@ -2,6 +2,9 @@ version: "3" services: ghost: image: ghost:latest + # build: + # context: ./nginx + # dockerfile: Dockerfile volumes: - /srv/ghost:/var/lib/ghost/content environment: @@ -13,9 +16,11 @@ services: # database__connection__user: root # database__connection__password: RJbhYNaCEB3fu8cbtkteetxTR5LtZjnPsqATGgPZ # database__connection__database: ghost + volumes: + - /home/ghost/content:/var/lib/ghost/content/data networks: - traefik - - default + # - default # depends_on: # - ghost_db restart: unless-stopped @@ -26,6 +31,7 @@ services: - "traefik.http.routers.ghost.entrypoints=websecure" - "traefik.http.routers.ghost.rule=Host(`read.$DOMAIN_NAME`)" - "traefik.http.routers.ghost.tls.certresolver=letsencr" + - "traefik.http.services.ghost.loadbalancer.server.port=2368" # ghost_db: # image: mysql:8 diff --git a/ghost/nginx/default.conf b/ghost/nginx/default.conf index 90879f1..aea9aa8 100644 --- a/ghost/nginx/default.conf +++ b/ghost/nginx/default.conf @@ -1,15 +1,66 @@ -server { - listen 80; - listen [::]:80; - server_name read.knast.cc; -} +# server { +# listen 80; +# listen [::]:80; +# server_name read.knast.cc; +# } -server { - server_name read.knast.cc; - location / { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-Proto https; - proxy_pass http://ghost:2368; - } -} \ No newline at end of file +# server { +# server_name read.knast.cc; +# location / { + # proxy_set_header Host $host; + # proxy_set_header X-Real-IP $remote_addr; + # proxy_set_header X-Forwarded-Proto https; + # proxy_pass http://ghost:2368; + # } +# } + + +# server { +# listen 80; +# listen [::]:80; +# # listen 443 ssl http2 default_server; +# # listen [::]:443 http2 ssl; +# # server_name read.knast.cc; +# # ssl on; +# # ssl_certificate /etc/nginx/yourhost.xyz.crt; +# # ssl_certificate_key /etc/nginx/yourhost.xyz.key; +# # ssl_protocols TLSv1.2; + +# location / { + +# proxy_set_header X-Real-IP $remote_addr; +# proxy_set_header Host $host; +# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +# proxy_set_header X-Forwarded-Proto $scheme; +# proxy_connect_timeout 90; +# proxy_send_timeout 90; +# proxy_read_timeout 90; +# proxy_buffering off; +# proxy_cache_valid 200 30m; +# proxy_cache_valid 404 1m; + +# client_max_body_size 10m; +# client_body_buffer_size 128k; + + +# proxy_pass http://ghost:2368; +# } + +# # Cache Ghost Images +# location ~ "/assets/images/(.*)-([a-z0-9]{10})\.(?:png|jpe?g|tiff)(.*)$" { +# expires max; +# add_header Cache-Control public; +# add_header Vary Accept; +# proxy_pass http://ghost:2368/$uri$webp_suffix; +# access_log off; +# } + +# # Cache Ghost css and js +# location ~* \.(?:css|js) { +# expires max; +# add_header Cache-Control public; +# proxy_pass http://ghost:2368/$uri; +# access_log off; +# } + +# } \ No newline at end of file diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml index 72e3c96..0400c9f 100644 --- a/gitea/docker-compose.yml +++ b/gitea/docker-compose.yml @@ -54,6 +54,19 @@ services: options: max-size: "1m" + runner: + image: gitea/act_runner:latest + environment: + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "https://gitea.knast.cc" + GITEA_RUNNER_REGISTRATION_TOKEN: "F27ZMdzwY0wunOmmkK9O4kwZFGeyORykFHZtJA9F" + GITEA_RUNNER_NAME: "BOB_THE_BUILDER" + GITEA_RUNNER_LABELS: "ALL" + volumes: + - /srv/gitea_runner/config/config.yaml:/config.yaml + - /srv/gitea_runner/data:/data + - /var/run/docker.sock:/var/run/docker.sock + networks: traefik: external: true diff --git a/gitlab/docker-compose.yml b/gitlab/docker-compose.yml index b63fb6f..6d5650d 100644 --- a/gitlab/docker-compose.yml +++ b/gitlab/docker-compose.yml @@ -18,7 +18,7 @@ services: labels: - "traefik.enable=true" - "traefik.http.routers.gitlab.entrypoints=websecure" - - "traefik.http.routers.gitlab.rule=Host(`gitlab.$DOMAIN_NAME`, `registry.gitlab.$DOMAIN_NAME`)" + - "traefik.http.routers.gitlab.rule=Host(`gitlab.$DOMAIN_NAME`)" - "traefik.http.routers.gitlab.tls.certresolver=letsencr" - "traefik.http.services.gitlab.loadbalancer.server.port=80" volumes: diff --git a/immich/.env b/immich/.env index a0555b1..e9e1448 100644 --- a/immich/.env +++ b/immich/.env @@ -1,107 +1,131 @@ -################################################################################### -# Database -################################################################################### -# NOTE: The following four database variables support Docker secrets by adding a *_FILE suffix to the variable name -# See the docker-compose documentation on secrets for additional details: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets -DB_HOSTNAME=immich_postgres -DB_USERNAME=postgres +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=/srv/immich/uploads +# The location where your database files are stored +DB_DATA_LOCATION=/srv/immich/pgdata + +# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +# TZ=Etc/UTC + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password DB_PASSWORD=postgres_kaf9asfjkas8asfhjasf333 + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres DB_DATABASE_NAME=immich -# Optional Database settings: -# DB_PORT=5432 - -################################################################################### -# Redis -################################################################################### - -REDIS_HOSTNAME=immich_redis - -# REDIS_URL will be used to pass custom options to ioredis. -# Example for Sentinel -# {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"} -# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyNjM3OX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiwicG9ydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0= - -# Optional Redis settings: - -# Note: these parameters are not automatically passed to the Redis Container -# to do so, please edit the docker-compose.yml file as well. Redis is not configured -# via environment variables, only redis.conf or the command line - -# REDIS_PORT=6379 -# REDIS_DBINDEX=0 -# REDIS_USERNAME= -# REDIS_PASSWORD= -# REDIS_SOCKET= - -################################################################################### -# Upload File Location -# -# This is the location where uploaded files are stored. -################################################################################### - -UPLOAD_LOCATION=/srv/immich/uploads -################################################################################### -# Typesense -################################################################################### -TYPESENSE_API_KEY=a897scf-ac8c3aghjfghk-567cvhdf3odjkfg -# TYPESENSE_ENABLED=false -# TYPESENSE_URL uses base64 encoding for the nodes json. -# Example JSON that was used: -# [ -# { 'host': 'typesense-1.example.net', 'port': '443', 'protocol': 'https' }, -# { 'host': 'typesense-2.example.net', 'port': '443', 'protocol': 'https' }, -# { 'host': 'typesense-3.example.net', 'port': '443', 'protocol': 'https' }, -# ] -# TYPESENSE_URL=ha://WwogICAgeyAnaG9zdCc6ICd0eXBlc2Vuc2UtMS5leGFtcGxlLm5ldCcsICdwb3J0JzogJzQ0MycsICdwcm90b2NvbCc6ICdodHRwcycgfSwKICAgIHsgJ2hvc3QnOiAndHlwZXNlbnNlLTIuZXhhbXBsZS5uZXQnLCAncG9ydCc6ICc0NDMnLCAncHJvdG9jb2wnOiAnaHR0cHMnIH0sCiAgICB7ICdob3N0JzogJ3R5cGVzZW5zZS0zLmV4YW1wbGUubmV0JywgJ3BvcnQnOiAnNDQzJywgJ3Byb3RvY29sJzogJ2h0dHBzJyB9LApd +# ################################################################################### +# # Database +# ################################################################################### -################################################################################### -# Reverse Geocoding -# -# Reverse geocoding is done locally which has a small impact on memory usage -# This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable -# This ranges from 0-3 with 3 being the most precise -# 3 - Cities > 500 population: ~200MB RAM -# 2 - Cities > 1000 population: ~150MB RAM -# 1 - Cities > 5000 population: ~80MB RAM -# 0 - Cities > 15000 population: ~40MB RAM -#################################################################################### +# # NOTE: The following four database variables support Docker secrets by adding a *_FILE suffix to the variable name +# # See the docker-compose documentation on secrets for additional details: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets +# DB_HOSTNAME=immich_postgres +# DB_USERNAME=postgres +# DB_PASSWORD=postgres_kaf9asfjkas8asfhjasf333 +# DB_DATABASE_NAME=immich -# DISABLE_REVERSE_GEOCODING=false -# REVERSE_GEOCODING_PRECISION=3 +# # Optional Database settings: +# # DB_PORT=5432 -#################################################################################### -# WEB - Optional -# -# Custom message on the login page, should be written in HTML form. -# For example: -# PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.

Email: demo@demo.de
Password: demo" -#################################################################################### +# ################################################################################### +# # Redis +# ################################################################################### -PUBLIC_LOGIN_PAGE_MESSAGE=Look +# REDIS_HOSTNAME=immich_redis -#################################################################################### -# Alternative Service Addresses - Optional -# -# This is an advanced feature for users who may be running their immich services on different hosts. -# It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers. -# Note: immich-microservices is bound to 3002, but no references are made -#################################################################################### +# # REDIS_URL will be used to pass custom options to ioredis. +# # Example for Sentinel +# # {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"} +# # REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyNjM3OX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiwicG9ydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0= -IMMICH_WEB_URL=http://immich-web:3000 -IMMICH_SERVER_URL=http://immich-server:3001 -IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 +# # Optional Redis settings: -#################################################################################### -# Alternative API's External Address - Optional -# -# This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery. -# You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash. -# NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api -# Examples: http://localhost:3001, http://immich-api.example.com, etc -#################################################################################### +# # Note: these parameters are not automatically passed to the Redis Container +# # to do so, please edit the docker-compose.yml file as well. Redis is not configured +# # via environment variables, only redis.conf or the command line -IMMICH_API_URL_EXTERNAL=https://imm.knast.cc \ No newline at end of file +# # REDIS_PORT=6379 +# # REDIS_DBINDEX=0 +# # REDIS_USERNAME= +# # REDIS_PASSWORD= +# # REDIS_SOCKET= + +# ################################################################################### +# # Upload File Location +# # +# # This is the location where uploaded files are stored. +# ################################################################################### + +# UPLOAD_LOCATION=/srv/immich/uploads + + +# ################################################################################### +# # Typesense +# ################################################################################### +# TYPESENSE_API_KEY=a897scf-ac8c3aghjfghafwfgr44k-567cvhdf3odjkfg +# # TYPESENSE_ENABLED=false +# # TYPESENSE_URL uses base64 encoding for the nodes json. +# # Example JSON that was used: +# # [ +# # { 'host': 'typesense-1.example.net', 'port': '443', 'protocol': 'https' }, +# # { 'host': 'typesense-2.example.net', 'port': '443', 'protocol': 'https' }, +# # { 'host': 'typesense-3.example.net', 'port': '443', 'protocol': 'https' }, +# # ] +# # TYPESENSE_URL=ha://WwogICAgeyAnaG9zdCc6ICd0eXBlc2Vuc2UtMS5leGFtcGxlLm5ldCcsICdwb3J0JzogJzQ0MycsICdwcm90b2NvbCc6ICdodHRwcycgfSwKICAgIHsgJ2hvc3QnOiAndHlwZXNlbnNlLTIuZXhhbXBsZS5uZXQnLCAncG9ydCc6ICc0NDMnLCAncHJvdG9jb2wnOiAnaHR0cHMnIH0sCiAgICB7ICdob3N0JzogJ3R5cGVzZW5zZS0zLmV4YW1wbGUubmV0JywgJ3BvcnQnOiAnNDQzJywgJ3Byb3RvY29sJzogJ2h0dHBzJyB9LApd + +# ################################################################################### +# # Reverse Geocoding +# # +# # Reverse geocoding is done locally which has a small impact on memory usage +# # This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable +# # This ranges from 0-3 with 3 being the most precise +# # 3 - Cities > 500 population: ~200MB RAM +# # 2 - Cities > 1000 population: ~150MB RAM +# # 1 - Cities > 5000 population: ~80MB RAM +# # 0 - Cities > 15000 population: ~40MB RAM +# #################################################################################### + +# # DISABLE_REVERSE_GEOCODING=false +# # REVERSE_GEOCODING_PRECISION=3 + +# #################################################################################### +# # WEB - Optional +# # +# # Custom message on the login page, should be written in HTML form. +# # For example: +# # PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.

Email: demo@demo.de
Password: demo" +# #################################################################################### + +# PUBLIC_LOGIN_PAGE_MESSAGE=Look + +# #################################################################################### +# # Alternative Service Addresses - Optional +# # +# # This is an advanced feature for users who may be running their immich services on different hosts. +# # It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers. +# # Note: immich-microservices is bound to 3002, but no references are made +# #################################################################################### + +# IMMICH_WEB_URL=http://immich-web:3000 +# IMMICH_SERVER_URL=http://immich-server:3001 +# IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 + +# #################################################################################### +# # Alternative API's External Address - Optional +# # +# # This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery. +# # You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash. +# # NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api +# # Examples: http://localhost:3001, http://immich-api.example.com, etc +# #################################################################################### + +# IMMICH_API_URL_EXTERNAL=https://imm.knast.cc \ No newline at end of file diff --git a/immich/docker-compose.yml b/immich/docker-compose.yml index 1b41247..54548aa 100644 --- a/immich/docker-compose.yml +++ b/immich/docker-compose.yml @@ -1,5 +1,88 @@ version: "3.8" + +# +# WARNING: Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# +# The compose file on main may not be compatible with the latest release. +# + +# name: immich + +# services: + # immich-server: + # container_name: immich_server + # networks: + # - traefik + # image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # # extends: + # # file: hwaccel.transcoding.yml + # # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + # volumes: + # - ${UPLOAD_LOCATION}:/usr/src/app/upload + # - /etc/localtime:/etc/localtime:ro + # env_file: + # - .env + # ports: + # - 2283:3001 + # depends_on: + # - redis + # - database + # restart: always + + # immich-machine-learning: + # networks: + # - traefik + # container_name: immich_machine_learning + # # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. + # # Example tag: ${IMMICH_VERSION:-release}-cuda + # image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # # file: hwaccel.ml.yml + # # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable + # volumes: + # - /srv/immich/model-cache:/cache + # env_file: + # - .env + # restart: always + + # redis: + # networks: + # - traefik + # container_name: redis + # image: redis:latest + # command: ["redis-server", "--bind", "redis", "--port", "6379"] + # # image: docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e + # # healthcheck: + # # test: redis-cli ping || exit 1 + # restart: always + + # database: + # networks: + # - traefik + # container_name: database + # image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 + # environment: + # POSTGRES_PASSWORD: ${DB_PASSWORD} + # POSTGRES_USER: ${DB_USERNAME} + # POSTGRES_DB: ${DB_DATABASE_NAME} + # POSTGRES_INITDB_ARGS: '--data-checksums' + # volumes: + # - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + # # healthcheck: + # # test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 + # # interval: 5m + # # start_interval: 30s + # # 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"] + # restart: always + +# volumes: +# model-cache: + + services: immich-server: networks: @@ -14,7 +97,7 @@ services: depends_on: - redis - database - - typesense + # - typesense restart: always immich-microservices: @@ -30,7 +113,7 @@ services: depends_on: - redis - database - - typesense + # - typesense restart: always immich-machine-learning: @@ -61,19 +144,19 @@ services: - "traefik.http.routers.imm.tls.certresolver=letsencr" # - "traefik.http.services.imm.loadbalancer.server.port=32400" - typesense: - networks: - - traefik - container_name: immich_typesense - image: typesense/typesense:0.24.0 - environment: - - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - - TYPESENSE_DATA_DIR=/data - logging: - driver: none - volumes: - - /srv/immich/tsdata:/data - restart: always + # typesense: + # networks: + # - traefik + # container_name: immich_typesense + # image: typesense/typesense:0.24.0 + # environment: + # - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} + # - TYPESENSE_DATA_DIR=/data + # logging: + # driver: none + # volumes: + # - /srv/immich/tsdata:/data + # restart: always redis: container_name: immich_redis @@ -115,10 +198,76 @@ services: - immich-server restart: always -# volumes: -# pgdata: -# model-cache: -# tsdata: + +# OFFICIAL + + +# services: +# immich: +# image: ghcr.io/imagegenius/immich:latest +# container_name: immich +# networks: +# - traefik +# labels: +# - traefik.enable=true +# - "traefik.http.routers.imm.entrypoints=websecure" +# - "traefik.http.routers.imm.rule=Host(`imm.$DOMAIN_NAME`)" +# - "traefik.http.routers.imm.tls.certresolver=letsencr" +# - "traefik.http.services.imm.loadbalancer.server.port=7878" +# environment: +# - PUID=1000 +# - PGID=1000 +# - TZ=Etc/UTC +# - DB_HOSTNAME=database +# - DB_USERNAME=postgres +# - DB_PASSWORD=a897scf-ac8c3aghjfghafwfgr44k-567cvhdf3odjkfg +# - DB_DATABASE_NAME=immich +# - REDIS_HOSTNAME=redis +# # - DB_PORT=5432 #optional +# # - REDIS_PORT=6379 #optional +# # - REDIS_PASSWORD= #optional +# # - MACHINE_LEARNING_HOST=0.0.0.0 #optional +# # - MACHINE_LEARNING_PORT=3003 #optional +# # - MACHINE_LEARNING_WORKERS=1 #optional +# # - MACHINE_LEARNING_WORKER_TIMEOUT=120 #optional +# volumes: +# - /srv/immich/config:/config +# - /srv/immich/uploads:/photos +# # - path_to_libraries:/libraries #optional +# ports: +# - 7878:8080 +# restart: unless-stopped + +# # This container requires an external application to be run separately. +# # By default, ports for the databases are opened, be careful when deploying it +# # Redis: +# redis: +# networks: +# - traefik +# image: redis +# ports: +# - 6379:6379 +# container_name: redis + +# # PostgreSQL 14: +# database: +# image: tensorchord/pgvecto-rs:pg14-v0.2.0 +# ports: +# - 5432:5432 +# container_name: database +# networks: +# - traefik +# environment: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: a897scf-ac8c3aghjfghafwfgr44k-567cvhdf3odjkfg +# POSTGRES_DB: immich +# volumes: +# - /srv/immich/pgdata:/var/lib/postgresql/data + +# # volumes: +# # pgdata: +# # model-cache: +# # tsdata: networks: traefik: diff --git a/plex/docker-compose.yml b/plex/docker-compose.yml index 16b0ef0..2e5cc57 100644 --- a/plex/docker-compose.yml +++ b/plex/docker-compose.yml @@ -33,6 +33,7 @@ services: - traefik.enable=true - "traefik.http.routers.plex.entrypoints=websecure" - "traefik.http.routers.plex.rule=Host(`plex.$DOMAIN_NAME`)" + - "traefik.http.routers.plex.tls=true" - "traefik.http.routers.plex.tls.certresolver=letsencr" - "traefik.http.services.plex.loadbalancer.server.port=32400" diff --git a/sonarr/.env b/sonarr/.env new file mode 100644 index 0000000..be9448c --- /dev/null +++ b/sonarr/.env @@ -0,0 +1,2 @@ +DOMAIN_NAME=knast.cc +DEFAULT_NETWORK=traefik diff --git a/sonarr/docker-compose.yml b/sonarr/docker-compose.yml new file mode 100644 index 0000000..f1db4e9 --- /dev/null +++ b/sonarr/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.6' +services: + sonarr: + image: lscr.io/linuxserver/sonarr:latest + container_name: sonarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + volumes: + - /srv/sonarr:/config + - nfs_tv_data:/tv + # - /path/to/downloadclient-downloads:/downloads #optional + ports: + - 8989:8989 + restart: unless-stopped + + +volumes: + nfs_tv_data: + external: true + +networks: + traefik: + external: true \ No newline at end of file diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml index 78be7cc..30e64a5 100644 --- a/traefik/docker-compose.yml +++ b/traefik/docker-compose.yml @@ -3,28 +3,31 @@ version: "3" services: traefik: - image: "traefik:v2.3" + # image: "traefik:v2.4" + image: "traefik:v3.1" container_name: "traefik" hostname: "traefik" + networks: + - traefik env_file: - .env ports: - "80:80" - "443:443" - - "8080:8080" + # - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./traefik.yml:/traefik.yml:ro" - /var/log/traefik/:/opt/traefik/logs - - /etc/letsencrypt/:/etc/letsencrypt/ - command: - - --api.insecure=false + - /srv/traefik/letsencrypt:/etc/letsencrypt + # command: + # - --api.insecure=false # - --api.insecure=true restart: unless-stopped labels: - "traefik.enable=true" - - "traefik.port=8080" + # - "traefik.port=8080" # - "traefik.http.routers.traefiks.entrypoints=websecure" # - "traefik.http.routers.traefiks.rule=Host(`monitor.$DOMAIN_NAME`)" # - "traefik.http.routers.traefiks.tls.certresolver=letsencr" diff --git a/traefik/traefik.yml b/traefik/traefik.yml index 20dd3ba..3f4e2d9 100644 --- a/traefik/traefik.yml +++ b/traefik/traefik.yml @@ -27,8 +27,7 @@ providers: certificatesResolvers: letsencr: acme: - storage: 'acme.json' - # storage: '/letsencrypt/acme.json' + storage: '/etc/letsencrypt/acme.json' email: stokogsten@gmail.com httpChallenge: entryPoint: web