diff --git a/efunk/docker-compose/docker-compose.yml b/efunk/docker-compose/docker-compose.yml index 7efab041d0..ebeee5a006 100644 --- a/efunk/docker-compose/docker-compose.yml +++ b/efunk/docker-compose/docker-compose.yml @@ -1,9 +1,9 @@ version: "3.3" networks: - frontend: - ipam: - config: - - subnet: $DOCKER_SUBNET_1 + frontend: + ipam: + config: + - subnet: $DOCKER_SUBNET_1 services: pihole: container_name: pihole @@ -38,9 +38,9 @@ services: volumes: - $DOCKER_CONFIG_PATH/keeweb:/etc/nginx/external restart: unless-stopped -################### + ################### mariadb: - image: lscr.io/linuxserver/mariadb + image: lscr.io/linuxserver/mariadb container_name: mariadb environment: - MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD @@ -53,10 +53,10 @@ services: ports: - ${DB_PORT}:3306 restart: always -################# + ################# nextcloud: # to update, bump the major version one by one, i.e. 30->31->32 ... - image: linuxserver/nextcloud:31.0.0-ls373 #30.0.6-ls370 + image: linuxserver/nextcloud:31.0.0-ls373 #30.0.6-ls370 container_name: nextcloud environment: - PUID=1000 @@ -76,6 +76,27 @@ services: depends_on: - mariadb restart: unless-stopped + + aerofoil: + container_name: aerofoil + image: luketanti/aerofoil:latest + environment: + # For write permission in config directory + - PUID=1000 + - PGID=1000 + - USER_ADMIN_NAME=admin + - USER_ADMIN_PASSWORD=admin + - USER_GUEST_NAME=guest + - USER_GUEST_PASSWORD=guest + # # cache TTLs (seconds): use none/unset for rebuild-only + # - SHOP_SECTIONS_CACHE_TTL_S=none + # - MEDIA_INDEX_TTL_S=none + volumes: + - $SWITCH_PATH:/games + - ./config:/app/config + - ./data:/app/data + ports: + - "8465:8465" # # ownfoil: # container_name: ownfoil @@ -160,7 +181,29 @@ services: - "9000:22" restart: always - + prowlarr: + image: lscr.io/linuxserver/prowlarr + #container_name: prowlarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=$TZ + - AUTO_UPDATE=true #optional + - WATCHTOWER_CLEANUP=true + volumes: + - $DOCKER_CONFIG_PATH/prowlarr:/config + ports: + - 9696:9696 + dns: + - $PIHOLE_DOCKER_SUB_IP_DNS + networks: + - frontend + depends_on: + - pihole + labels: + com.centurylinklabs.watchtower.enable: true + restart: unless-stopped + #################### samba: image: dperson/samba container_name: samba @@ -203,7 +246,7 @@ services: - $DOCKER_CONFIG_PATH/duckdns:/config #optional restart: always -###################### + ###################### jackett: image: linuxserver/jackett container_name: jackett @@ -229,7 +272,7 @@ services: restart: unless-stopped labels: com.centurylinklabs.watchtower.enable: true -#################### + #################### flaresolverr: # DockerHub mirror flaresolverr/flaresolverr:latest image: ghcr.io/flaresolverr/flaresolverr:latest @@ -241,8 +284,11 @@ services: - PUID=$PUID_USER - PGID=$PGID_USER - WATCHTOWER_CLEANUP=true + dns: - - 172.19.0.3 + - $PIHOLE_DOCKER_SUB_IP_DNS + networks: + - frontend depends_on: - pihole ports: @@ -250,44 +296,44 @@ services: restart: unless-stopped labels: com.centurylinklabs.watchtower.enable: true -# + # transmission: - image: haugene/transmission-openvpn - container_name: transmission - cap_add: - - NET_ADMIN - devices: - - /dev/net/tun - ports: - - "9091:9091" - - "8888:8888" - dns: - - $PIHOLE_DOCKER_SUB_IP_DNS - - 8.8.8.8 - - 8.8.4.4 - volumes: - - /etc/localtime:/etc/localtime:ro - - $TORRENT_PATH:/data - logging: - driver: json-file - options: - max-size: 10m - environment: - - CREATE_TUN_DEVICE=true - - WEBPROXY_ENABLED=false - - TRANSMISSION_WEB_UI=transmission-web-control - - TRANSMISSION_INCOMPLETE_DIR=/data/transmission/incomplete - - TRANSMISSION_INCOMPLETE_DIR_ENABLED=true - - TRANSMISSION_BLOCKLIST_ENABLED=true - - TRANSMISSION_BLOCKLIST_URL=$TRANSMISSION_BLOCKLIST_URL - - DISABLE_PORT_UPDATER=true - - OPENVPN_PROVIDER=PIA - - OPENVPN_CONFIG=belgium - - OPENVPN_USERNAME=$PIA_USERNAME - - OPENVPN_PASSWORD=$PIA_PASSWORD - - OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 - - LOCAL_NETWORK=$LOCAL_NETWORK - restart: unless-stopped + image: haugene/transmission-openvpn + container_name: transmission + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun + ports: + - "9091:9091" + - "8888:8888" + dns: + - $PIHOLE_DOCKER_SUB_IP_DNS + - 8.8.8.8 + - 8.8.4.4 + volumes: + - /etc/localtime:/etc/localtime:ro + - $TORRENT_PATH:/data + logging: + driver: json-file + options: + max-size: 10m + environment: + - CREATE_TUN_DEVICE=true + - WEBPROXY_ENABLED=false + - TRANSMISSION_WEB_UI=transmission-web-control + - TRANSMISSION_INCOMPLETE_DIR=/data/transmission/incomplete + - TRANSMISSION_INCOMPLETE_DIR_ENABLED=true + - TRANSMISSION_BLOCKLIST_ENABLED=true + - TRANSMISSION_BLOCKLIST_URL=$TRANSMISSION_BLOCKLIST_URL + - DISABLE_PORT_UPDATER=true + - OPENVPN_PROVIDER=PIA + - OPENVPN_CONFIG=belgium + - OPENVPN_USERNAME=$PIA_USERNAME + - OPENVPN_PASSWORD=$PIA_PASSWORD + - OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 + - LOCAL_NETWORK=$LOCAL_NETWORK + restart: unless-stopped homer: image: b4bz/homer:latest @@ -311,8 +357,8 @@ services: #traefik.http.services.home.loadbalancer.server.port: 80 depends_on: - pihole -# -#### wireguard + # + #### wireguard wireguard: image: linuxserver/wireguard container_name: wireguard @@ -338,7 +384,7 @@ services: networks: - frontend #sysctls: - #- net.ipv4.conf.all.src_valid_mark=1 + #- net.ipv4.conf.all.src_valid_mark=1 depends_on: - duckdns - pihole @@ -366,34 +412,34 @@ services: networks: - frontend environment: - PHOTOPRISM_ADMIN_PASSWORD: $PHOTOPRISM_ADMIN_PASSWORD # INITIAL PASSWORD FOR "admin" USER, MINIMUM 8 CHARACTERS - PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) - PHOTOPRISM_SITE_URL: "http://$SERVER_URL:2342/" # public server URL incl http:// or https:// and /path, :port is optional - PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) - PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) - PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic - PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) - PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features - PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup - PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server - PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API - PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow - PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) - PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) - PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW files - PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW files (reduces performance) - PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) - PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) - PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + PHOTOPRISM_ADMIN_PASSWORD: $PHOTOPRISM_ADMIN_PASSWORD # INITIAL PASSWORD FOR "admin" USER, MINIMUM 8 CHARACTERS + PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: "http://$SERVER_URL:2342/" # public server URL incl http:// or https:// and /path, :port is optional + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW files + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW files (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server - PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance - PHOTOPRISM_DATABASE_SERVER: $SERVER_URL:3307 # MariaDB or MySQL database server (hostname:port) - PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name - PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name - PHOTOPRISM_DATABASE_PASSWORD: $PHOTOPRISM_MARIADB_PASSWORD # MariaDB or MySQL database user password + PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: $SERVER_URL:3307 # MariaDB or MySQL database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name + PHOTOPRISM_DATABASE_PASSWORD: $PHOTOPRISM_MARIADB_PASSWORD # MariaDB or MySQL database user password PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" - PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description - PHOTOPRISM_SITE_AUTHOR: "" # meta site author + PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description + PHOTOPRISM_SITE_AUTHOR: "" # meta site author ## Run/install on first startup (options: update gpu tensorflow davfs clitools clean): # PHOTOPRISM_INIT: "gpu tensorflow" ## Hardware Video Transcoding (for sponsors only due to high maintenance and support costs): @@ -407,7 +453,7 @@ services: # user: "1000:1000" ## Share hardware devices with FFmpeg and TensorFlow (optional): devices: - - "/dev/dri:/dev/dri" # Intel QSV + - "/dev/dri:/dev/dri" # Intel QSV # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA # - "/dev/nvidiactl:/dev/nvidiactl" # - "/dev/nvidia-modeset:/dev/nvidia-modeset" @@ -419,10 +465,10 @@ services: ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory volumes: # "/host/folder:/photoprism/folder" # Example - - "photoprism-originals:/photoprism/originals" # Original media files (DO NOT REMOVE) + - "photoprism-originals:/photoprism/originals" # Original media files (DO NOT REMOVE) # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals - - "$PHOTOPRISM_STORAGE_DIR:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + - "$PHOTOPRISM_STORAGE_DIR:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) ## Database Server (recommended) ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql @@ -464,16 +510,16 @@ services: - $DOCKER_CONFIG_PATH/mealie_v1/data/:/app/data mealie: - # image: ghcr.io/mealie-recipes/mealie:v2.7.1 # - image: ghcr.io/mealie-recipes/mealie:latest # + # image: ghcr.io/mealie-recipes/mealie:v2.7.1 # + image: ghcr.io/mealie-recipes/mealie:latest # container_name: mealie restart: always ports: - - "9925:9000" # + - "9925:9000" # deploy: resources: limits: - memory: 1000M # + memory: 1000M # volumes: - $DOCKER_CONFIG_PATH/mealie/data/:/app/data environment: @@ -541,9 +587,6 @@ services: networks: - frontend - - - filebrowser: image: filebrowser/filebrowser:s6 container_name: filebrowser @@ -566,41 +609,41 @@ services: restart: unless-stopped labels: com.centurylinklabs.watchtower.enable: true -# + # -# SWAG from duckdns -#################### -# swag: -# image: ghcr.io/linuxserver/swag -# container_name: swag -# cap_add: -# - NET_ADMIN -# dns: -# - $PIHOLE_DOCKER_SUB_IP_DNS -# networks: -# - frontend -# environment: -# - PUID=$PUID_USER -# - PGID=$PGID_USER -# - TZ=Europe/Brussels -# - URL=$DUCKDNS_DOMAIN.duckdns.org -# - SUBDOMAINS=wildcard -# - VALIDATION=duckdns -# #- DNSPLUGIN=cloudflare -# #- CERTPROVIDER= #optional -# #- DNSPLUGIN= #optional -# - DUCKDNSTOKEN=$DUCKDNS_TOKEN -# #- EMAIL= #optional -# - ONLY_SUBDOMAINS=false #optional -# #- EXTRA_DOMAINS=brownfunk.lan #optional -# - STAGING=false #optional -# volumes: -# - $DOCKER_CONFIG_PATH/swag:/config -# ports: -# - 443:443 -# - 555:80 -# restart: unless-stopped -# # + # SWAG from duckdns + #################### + # swag: + # image: ghcr.io/linuxserver/swag + # container_name: swag + # cap_add: + # - NET_ADMIN + # dns: + # - $PIHOLE_DOCKER_SUB_IP_DNS + # networks: + # - frontend + # environment: + # - PUID=$PUID_USER + # - PGID=$PGID_USER + # - TZ=Europe/Brussels + # - URL=$DUCKDNS_DOMAIN.duckdns.org + # - SUBDOMAINS=wildcard + # - VALIDATION=duckdns + # #- DNSPLUGIN=cloudflare + # #- CERTPROVIDER= #optional + # #- DNSPLUGIN= #optional + # - DUCKDNSTOKEN=$DUCKDNS_TOKEN + # #- EMAIL= #optional + # - ONLY_SUBDOMAINS=false #optional + # #- EXTRA_DOMAINS=brownfunk.lan #optional + # - STAGING=false #optional + # volumes: + # - $DOCKER_CONFIG_PATH/swag:/config + # ports: + # - 443:443 + # - 555:80 + # restart: unless-stopped + # # scrutiny: container_name: scrutiny image: ghcr.io/analogj/scrutiny:master-omnibus @@ -638,14 +681,14 @@ services: image: ghcr.io/immichframe/immichframe:latest restart: on-failure # volumes: - # - $DOCKER_CONFIG_PATH/immichframe:/app/Config + # - $DOCKER_CONFIG_PATH/immichframe:/app/Config ports: - "8087:8080" environment: TZ: "$TZ" env_file: - .env - + lingodiary: container_name: lingodiary image: lozzaroo/lingodiary @@ -653,14 +696,15 @@ services: - 8084:8084 volumes: - $DOCKER_CONFIG_PATH/lingoDiary/:/app/.config/lingoDiary/ # Mount config file to /app inside the container - - /media/efunk_4tb_1/lingodiary/laurent/:/data/laurent/ - - /media/efunk_4tb_1/lingodiary/johanne/:/data/johanne/ - - /media/efunk_4tb_1/lingodiary/claudine/:/data/claudine/ + # - /media/efunk_4tb_1/lingodiary/laurent/:/data/laurent/ + # - /media/efunk_4tb_1/lingodiary/johanne/:/data/johanne/ + # - /media/efunk_4tb_1/lingodiary/claudine/:/data/claudine/ + - /media/efunk_4tb_1/lingodiary/:/data/ environment: - CONFIG_PATH: /app/.config/lingoDiary/config.yaml # Update path to reflect /app location + # CONFIG_PATH: /app/.config/lingoDiary/config.yaml # Update path to reflect /app location SECRET_KEY: "4dea2020568dca5f8ad784e3110283fcf82f87c50c12f47b9a56ae95f572b0d2" # python -c "import secrets; print(secrets.token_hex(32))" - CONFIG_ROOT: /app/.config/lingoDiary # Update path to reflect /app location - USER_DB_FILE: /app/.config/lingoDiary/users.yaml # users password defined with python -c "import bcrypt; print(bcrypt.hashpw(b'mysecret', bcrypt.gensalt()).decode())" + # CONFIG_ROOT: /app/.config/lingoDiary # Update path to reflect /app location + # USER_DB_FILE: /app/.config/lingoDiary/users.yaml # users password defined with python -c "import bcrypt; print(bcrypt.hashpw(b'mysecret', bcrypt.gensalt()).decode())" user: "1000:1000" # Run container as non-root user restart: always @@ -692,8 +736,6 @@ services: shm_size: "1gb" restart: unless-stopped - - volumes: netdatalib: netdatacache: @@ -703,4 +745,3 @@ volumes: type: cifs o: "username=$SAMBA_PICTURES_USER,password=$SAMBA_PICTURES_PASSWORD,rw" device: "//$SERVER_URL/pictures" -