commit fe628b774fc6e1c7ae5cfdeba9655415c3537d50 Author: MohandL3G Date: Thu Feb 12 17:12:19 2026 +0200 Uploading Everything Uploading Every Docker Compose YML file to the Repo diff --git a/Arcane/docker-compose.yml b/Arcane/docker-compose.yml new file mode 100644 index 0000000..34a3967 --- /dev/null +++ b/Arcane/docker-compose.yml @@ -0,0 +1,20 @@ +services: + arcane: + image: ghcr.io/ofkm/arcane:latest + container_name: arcane + ports: + - '3000:3000' + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - C:\Docker\AppData\arcane:/app/data + environment: + - APP_ENV=production # Required + - PUBLIC_SESSION_SECRET=your_super_strong_random_secret_here # Generate: openssl rand -base64 32 + # Optional: Match your host user for permissions + # - PUID=1000 + # - PGID=1000 + # Optional: Set if Docker access fails + # - DOCKER_GID=998 + # Optional: For local HTTP testing only + # - PUBLIC_ALLOW_INSECURE_COOKIES=true + restart: unless-stopped \ No newline at end of file diff --git a/Authentik/docker-compose.yml b/Authentik/docker-compose.yml new file mode 100644 index 0000000..1b13041 --- /dev/null +++ b/Authentik/docker-compose.yml @@ -0,0 +1,92 @@ +--- + +services: + postgresql: + image: docker.io/library/postgres:16-alpine + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - C:\Docker\AppData\authentik\database:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: ${PG_PASS:?database password required} + POSTGRES_USER: ${PG_USER:-authentik} + POSTGRES_DB: ${PG_DB:-authentik} + env_file: + - .env + redis: + image: docker.io/library/redis:alpine + command: --save 60 1 --loglevel warning + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + volumes: + - C:\Docker\AppData\authentik\redis:/data + server: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.6.3} + restart: unless-stopped + command: server + environment: + AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} + AUTHENTIK_REDIS__HOST: redis + AUTHENTIK_POSTGRESQL__HOST: postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + volumes: + - C:\Docker\AppData\authentik\media:/media + - C:\Docker\AppData\authentik\custom-templates:/templates + env_file: + - .env + ports: + - "${COMPOSE_PORT_HTTP:-9000}:9000" + - "${COMPOSE_PORT_HTTPS:-9443}:9443" + depends_on: + postgresql: + condition: service_healthy + redis: + condition: service_healthy + worker: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.6.3} + restart: unless-stopped + command: worker + environment: + AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} + AUTHENTIK_REDIS__HOST: redis + AUTHENTIK_POSTGRESQL__HOST: postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + # `user: root` and the docker socket volume are optional. + # See more for the docker socket integration here: + # https://goauthentik.io/docs/outposts/integrations/docker + # Removing `user: root` also prevents the worker from fixing the permissions + # on the mounted folders, so when removing this make sure the folders have the correct UID/GID + # (1000:1000 by default) + user: root + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - C:\Docker\AppData\authentik\media:/media + - C:\Docker\AppData\authentik\certs:/certs + - C:\Docker\AppData\authentik\custom-templates:/templates + env_file: + - .env + depends_on: + postgresql: + condition: service_healthy + redis: + condition: service_healthy + +volumes: + database: + driver: local + redis: + driver: local diff --git a/Baikal/docker-compose.yml b/Baikal/docker-compose.yml new file mode 100644 index 0000000..e8d03fa --- /dev/null +++ b/Baikal/docker-compose.yml @@ -0,0 +1,18 @@ +# Docker Compose file for a Baikal server with local mounts instead of Docker volumes + +# Before you start docker compose up, make sure that you have prepared +# the local folders to avoid file permission issues with +# +# mkdir -p config Specific/db +# chown -R 101:101 config Specific <- Use this for Nginx +# chown -R 33:33 config Specific <- Use this for Apache httpd + +services: + baikal: + image: ckulka/baikal:nginx + restart: unless-stopped + ports: + - "802:80" + volumes: + - D:\Users\MohandL3G\Docker\AppData\baikal\config:/var/www/baikal/config + - D:\Users\MohandL3G\Docker\AppData\baikal\Specific:/var/www/baikal/Specific \ No newline at end of file diff --git a/Cup/docker-compose.yml b/Cup/docker-compose.yml new file mode 100644 index 0000000..732a1ea --- /dev/null +++ b/Cup/docker-compose.yml @@ -0,0 +1,11 @@ +name: cup +services: + cup: + image: ghcr.io/sergi0g/cup:latest + container_name: cup # Optional + restart: unless-stopped + command: serve + ports: + - 8001:8000 + volumes: + - /var/run/docker.sock:/var/run/docker.sock \ No newline at end of file diff --git a/Diun/docker-compose.yml b/Diun/docker-compose.yml new file mode 100644 index 0000000..48c067a --- /dev/null +++ b/Diun/docker-compose.yml @@ -0,0 +1,27 @@ +name: diun + +services: + diun: + image: crazymax/diun:latest + container_name: diun + hostname: MohandL3G + command: serve + volumes: + - C:\Docker\AppData\diun\data:/data + - "/var/run/docker.sock:/var/run/docker.sock" + environment: + - "TZ=Africa/Tripoli" + - "DIUN_WATCH_WORKERS=20" + - "DIUN_WATCH_SCHEDULE=0 */6 * * *" + - "DIUN_WATCH_JITTER=30s" + - "DIUN_PROVIDERS_DOCKER=true" + - "DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true" + - "DIUN_NOTIF_DISCORD_WEBHOOKURL=https://discordapp.com/api/webhooks/1387006555471220877/FEsUF1peouAW9khRN0mVQkDmsbEhXdj_gFTV5BgvSUqr0TGbfea3oxw7ErZf_AATQt5R" # change to your webhook + # - "DIUN_NOTIF_DISCORD_MENTIONS" # (comma separated) + - "DIUN_NOTIF_DISCORD_RENDERFIELDS=true" + - "DIUN_NOTIF_DISCORD_TIMEOUT=10s" + # - "DIUN_NOTIF_DISCORD_TEMPLATEBODY" + labels: + - "diun.enable=true" + restart: unless-stopped + diff --git a/Dockge/docker-compose.yml b/Dockge/docker-compose.yml new file mode 100644 index 0000000..71334bd --- /dev/null +++ b/Dockge/docker-compose.yml @@ -0,0 +1,22 @@ +services: + dockge: + image: louislam/dockge:1 + restart: unless-stopped + ports: + # Host Port : Container Port + - 5001:5001 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - C:\Docker\AppData\Dockge\data:/app/data + + # If you want to use private registries, you need to share the auth file with Dockge: + # - /root/.docker/:/root/.docker + + # Stacks Directory + # ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH. + # ⚠️ 1. FULL path only. No relative path (MUST) + # ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST) + - C:\Docker\AppData\Dockge\stacks:/opt/stacks + environment: + # Tell Dockge where is your stacks directory + - DOCKGE_STACKS_DIR=/opt/stacks \ No newline at end of file diff --git a/Duplicati/docker-compose.yml b/Duplicati/docker-compose.yml new file mode 100644 index 0000000..02819a6 --- /dev/null +++ b/Duplicati/docker-compose.yml @@ -0,0 +1,21 @@ +--- +services: + duplicati: + image: lscr.io/linuxserver/duplicati:latest + container_name: duplicati + hostname: MohandL3G + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + - SETTINGS_ENCRYPTION_KEY=9199@mhD@9199 + - CLI_ARGS= #optional + - DUPLICATI__WEBSERVICE_PASSWORD=9199@mhD #optional + volumes: + - C:\Docker\AppData\duplicati\config:/config + - C:\Docker\AppData\duplicati\backups:/backups + - C:\Docker\AppData\duplicati\source:/source + - C:\Docker:/source/dockerdata + ports: + - 8200:8200 + restart: unless-stopped \ No newline at end of file diff --git a/FileBrowser Quantum/docker-compose.yml b/FileBrowser Quantum/docker-compose.yml new file mode 100644 index 0000000..466009b --- /dev/null +++ b/FileBrowser Quantum/docker-compose.yml @@ -0,0 +1,24 @@ + +services: + filebrowser: + environment: + FILEBROWSER_CONFIG: "data/config.yaml" + FILEBROWSER_ADMIN_PASSWORD: admin + volumes: + - 'C:\Docker\AppData\filebrowserquantum\folder:/folder' # Never mount root "/" directory to docker, always choose a sub-folder with your data. + # Folders on Windows: + - 'C:\Docker\Compose:/folder/windows/Docker Compose' + - 'C:\Portables:/folder/windows/Portables' + - 'C:\Docker\Appdata:/folder/windows/Docker Appdata' + - 'C:\Program Files (x86)\Steam\steamapps\common:/folder/windows/Steam Games' + - 'C:\Program Files (x86)\Steam\config:/folder/windows/Steam Config' + # Rest: + - 'C:\Docker\AppData\filebrowserquantum\data:/home/filebrowser/data' # mount the data folder you created with the config file. + # Advanced: If you plan to run with a different user besides root or filebrowser, you will need to mount a tmp directory. + # - './tmp/:/home/filebrowser/tmp/' + ports: + - '8081:80' # the left 80 is the port **you will use** to access. The right 80 is the container port that **must match the config.yaml** + image: gtstef/filebrowser + # Optionally run as non-root filebrowser user + #user: filebrowser + restart: unless-stopped \ No newline at end of file diff --git a/Gitea/docker-compose.yml b/Gitea/docker-compose.yml new file mode 100644 index 0000000..7e46244 --- /dev/null +++ b/Gitea/docker-compose.yml @@ -0,0 +1,40 @@ +name: gitea +services: + server: + image: docker.gitea.com/gitea:latest + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea + - TZ=Africa/Tripoli + restart: always + networks: + - gitea + volumes: + - C:\Data\AppData\gitea\data:/data + ports: + - "3000:3000" + - "222:22" + depends_on: + - db + + db: + image: docker.io/library/postgres:18.1 + restart: always + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea + - POSTGRES_DB=gitea + networks: + - gitea + volumes: + - C:\Data\AppData\gitea\postgres:/var/lib/postgresql + +networks: + gitea: + external: false diff --git a/Heimdall/docker-compose.yml b/Heimdall/docker-compose.yml new file mode 100644 index 0000000..405f3d8 --- /dev/null +++ b/Heimdall/docker-compose.yml @@ -0,0 +1,16 @@ +name: heimdall +services: + heimdall: + image: lscr.io/linuxserver/heimdall:latest + container_name: heimdall + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + - ALLOW_INTERNAL_REQUESTS=false #optional + volumes: + - C:\Data\AppData\heimdall\config:/config + ports: + - 380:80 + - 3443:443 + restart: unless-stopped diff --git a/HomeAssistant/docker-compose.yml b/HomeAssistant/docker-compose.yml new file mode 100644 index 0000000..425f667 --- /dev/null +++ b/HomeAssistant/docker-compose.yml @@ -0,0 +1,16 @@ +name: homeassistant +services: + homeassistant: + image: lscr.io/linuxserver/homeassistant:latest + container_name: homeassistant + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + volumes: + - C:\Data\AppData\homeassistant\config:/config + ports: + - 8123:8123 + #devices: + # - /path/to/device:/path/to/device + restart: unless-stopped \ No newline at end of file diff --git a/Homepage/docker-compose.yml b/Homepage/docker-compose.yml new file mode 100644 index 0000000..988ab27 --- /dev/null +++ b/Homepage/docker-compose.yml @@ -0,0 +1,12 @@ +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + ports: + - 3000:3000 + volumes: + - C:\Docker\AppData\homepage\config:/app/config # Make sure your local config directory exists + - C:\Docker\AppData\homepage\images:/app/public/images + - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods + environment: + HOMEPAGE_ALLOWED_HOSTS: "*" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts \ No newline at end of file diff --git a/Immich/.env b/Immich/.env new file mode 100644 index 0000000..46b421d --- /dev/null +++ b/Immich/.env @@ -0,0 +1,22 @@ +# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=C:\Data\AppData\immich\uploads + +# The location where your database files are stored. Network shares are not supported for the database +DB_DATA_LOCATION=C:\Data\AppData\immich\postgres + +# 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=Africa/Tripoli + +# The Immich version to use. You can pin this to a specific version like "v2.1.0" +IMMICH_VERSION=RELEASE + +# Connection secret for postgres. You should change it to a random password +# Please use only the characters `A-Za-z0-9`, without special characters or spaces +DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich diff --git a/Immich/docker-compose.yml b/Immich/docker-compose.yml new file mode 100644 index 0000000..5081f08 --- /dev/null +++ b/Immich/docker-compose.yml @@ -0,0 +1,71 @@ +# +# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose +# +# 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 + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + extends: + file: hwaccel.transcoding.yml + service: nvenc + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda + extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration + file: hwaccel.ml.yml + service: cuda + volumes: + - C:\Data\AppData\immich\model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always diff --git a/Immich/docker-compose.yml.old b/Immich/docker-compose.yml.old new file mode 100644 index 0000000..22142a3 --- /dev/null +++ b/Immich/docker-compose.yml.old @@ -0,0 +1,58 @@ +# +# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose +# +# 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 + 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: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11 + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + +volumes: + model-cache: diff --git a/Immich/hwaccel.ml.yml b/Immich/hwaccel.ml.yml new file mode 100644 index 0000000..c95ac7e --- /dev/null +++ b/Immich/hwaccel.ml.yml @@ -0,0 +1,57 @@ +# Configurations for hardware-accelerated machine learning + +# If using Unraid or another platform that doesn't allow multiple Compose files, +# you can inline the config for a backend by copying its contents +# into the immich-machine-learning service in the docker-compose.yml file. + +# See https://docs.immich.app/features/ml-hardware-acceleration for info on usage. + +services: + armnn: + devices: + - /dev/mali0:/dev/mali0 + volumes: + - /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver) + - /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required) + + rknn: + security_opt: + - systempaths=unconfined + - apparmor=unconfined + devices: + - /dev/dri:/dev/dri + + cpu: {} + + cuda: + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: + - gpu + + rocm: + group_add: + - video + devices: + - /dev/dri:/dev/dri + - /dev/kfd:/dev/kfd + + openvino: + device_cgroup_rules: + - 'c 189:* rmw' + devices: + - /dev/dri:/dev/dri + volumes: + - /dev/bus/usb:/dev/bus/usb + + openvino-wsl: + devices: + - /dev/dri:/dev/dri + - /dev/dxg:/dev/dxg + volumes: + - /dev/bus/usb:/dev/bus/usb + - /usr/lib/wsl:/usr/lib/wsl diff --git a/Immich/hwaccel.transcoding.yml b/Immich/hwaccel.transcoding.yml new file mode 100644 index 0000000..0857faf --- /dev/null +++ b/Immich/hwaccel.transcoding.yml @@ -0,0 +1,55 @@ +# Configurations for hardware-accelerated transcoding + +# If using Unraid or another platform that doesn't allow multiple Compose files, +# you can inline the config for a backend by copying its contents +# into the immich-microservices service in the docker-compose.yml file. + +# See https://docs.immich.app/features/hardware-transcoding for more info on using hardware transcoding. + +services: + cpu: {} + + nvenc: + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: + - gpu + - compute + - video + + quicksync: + devices: + - /dev/dri:/dev/dri + + rkmpp: + security_opt: # enables full access to /sys and /proc, still far better than privileged: true + - systempaths=unconfined + - apparmor=unconfined + group_add: + - video + devices: + - /dev/rga:/dev/rga + - /dev/dri:/dev/dri + - /dev/dma_heap:/dev/dma_heap + - /dev/mpp_service:/dev/mpp_service + #- /dev/mali0:/dev/mali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping + volumes: + #- /etc/OpenCL:/etc/OpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping + #- /usr/lib/aarch64-linux-gnu/libmali.so.1:/usr/lib/aarch64-linux-gnu/libmali.so.1:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping + + vaapi: + devices: + - /dev/dri:/dev/dri + + vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2 + devices: + - /dev/dri:/dev/dri + - /dev/dxg:/dev/dxg + volumes: + - /usr/lib/wsl:/usr/lib/wsl + environment: + - LIBVA_DRIVER_NAME=d3d12 diff --git a/JDownloader/docker-compose.yml b/JDownloader/docker-compose.yml new file mode 100644 index 0000000..c1b6707 --- /dev/null +++ b/JDownloader/docker-compose.yml @@ -0,0 +1,9 @@ +services: + jdownloader-2: + image: jlesage/jdownloader-2 + ports: + - "5800:5800" + volumes: + - C:\Docker\AppData\jdownloader\config:/config:rw + - C:\Users\MohandL3G\Downloads\Jdownloader:/output:rw + restart: unless-stopped diff --git a/Jellyfin/docker-compose.yml b/Jellyfin/docker-compose.yml new file mode 100644 index 0000000..513bb4b --- /dev/null +++ b/Jellyfin/docker-compose.yml @@ -0,0 +1,29 @@ +name: linuxserver-jellyfin +services: + jellyfin: + image: linuxserver/jellyfin:latest + container_name: jellyfin + hostname: MohandL3G-Server + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + - gpus=all + volumes: + - C:\Data\AppData\jellyfin\config:/config + - C:\Data\AppData\jellyfin\media:/data/media + ports: + - 8096:8096 + - 8920:8920 #optional + - 7359:7359/udp #optional + - 1900:1900/udp #optional + deploy: + # Add this section + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: + - gpu + restart: unless-stopped \ No newline at end of file diff --git a/Jellyseerr/docker-compose.yml b/Jellyseerr/docker-compose.yml new file mode 100644 index 0000000..6003d31 --- /dev/null +++ b/Jellyseerr/docker-compose.yml @@ -0,0 +1,20 @@ +name: jellyseerr +services: + jellyseerr: + image: ghcr.io/fallenbagel/jellyseerr:latest + init: true + container_name: jellyseerr + environment: + - LOG_LEVEL=debug + - TZ=Africa/Tripoli + ports: + - 5055:5055 + volumes: + - C:\Data\AppData\jellyseerr\config:/app/config + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 + start_period: 20s + timeout: 3s + interval: 15s + retries: 3 + restart: unless-stopped \ No newline at end of file diff --git a/ListSync/docker-compose.yml b/ListSync/docker-compose.yml new file mode 100644 index 0000000..3ad72d3 --- /dev/null +++ b/ListSync/docker-compose.yml @@ -0,0 +1,59 @@ +services: + listsync-full: + image: ghcr.io/woahai321/list-sync:main + container_name: listsync-full + ports: + # Frontend (Next.js Dashboard) + - "3222:3222" + # Backend API (FastAPI) + - "4222:4222" + environment: + # Timezone Configuration (set to Europe/London for BST/GMT, change as needed) + - TZ=${TZ:-GMT} + + # Overseerr Configuration + - OVERSEERR_URL=${OVERSEERR_URL} + - OVERSEERR_API_KEY=${OVERSEERR_API_KEY} + - OVERSEERR_USER_ID=${OVERSEERR_USER_ID:-1} + - SYNC_INTERVAL=${SYNC_INTERVAL:-24} + - AUTOMATED_MODE=true + - OVERSEERR_4K=${OVERSEERR_4K:-false} + + # List Configuration (comma-separated) + - IMDB_LISTS=${IMDB_LISTS} + - TRAKT_LISTS=${TRAKT_LISTS} + - LETTERBOXD_LISTS=${LETTERBOXD_LISTS} + - MDBLIST_LISTS=${MDBLIST_LISTS} + - STEVENLU_LISTS=${STEVENLU_LISTS} + - TRAKT_SPECIAL_LISTS=${TRAKT_SPECIAL_LISTS} + - TRAKT_SPECIAL_ITEMS_LIMIT=${TRAKT_SPECIAL_ITEMS_LIMIT} + + # Optional Discord webhook + - DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL} + + # Internal API URL for frontend + - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://0.0.0.0:4222/api} + + # Docker-specific settings + - RUNNING_IN_DOCKER=true + - NO_SANDBOX=1 + - DISPLAY=:99 + volumes: + # Persist data directory + - C:\Docker\AppData\listsync\data:/usr/src/app/data + # Mount environment file + - C:\Docker\Compose\ListSync\.env:/usr/src/app/.env + # Optional: Mount logs for debugging + - C:\Docker\AppData\listsync\logs:/var/log/supervisor + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:4222/api/system/health", "&&", "curl", "-f", "http://localhost:3222"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + # Note: Complete ListSync application with: + # - Core sync service (python -m list_sync) + # - FastAPI backend (port 4222) + # - Next.js frontend (port 3222) + # All managed by supervisor for reliability \ No newline at end of file diff --git a/NPM/docker-compose.yml b/NPM/docker-compose.yml new file mode 100644 index 0000000..4642c18 --- /dev/null +++ b/NPM/docker-compose.yml @@ -0,0 +1,14 @@ +name: nginxproxymanager +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + environment: + TZ: Africa/Tripoli + ports: + - '80:80' + - '81:81' + - '443:443' + volumes: + - C:\Data\AppData\nginxproxymanager\data:/data + - C:\Data\AppData\nginxproxymanager\etc\letsencrypt:/etc/letsencrypt \ No newline at end of file diff --git a/Newt/docker-compose.yml b/Newt/docker-compose.yml new file mode 100644 index 0000000..c96c657 --- /dev/null +++ b/Newt/docker-compose.yml @@ -0,0 +1,11 @@ +name: newt +services: + newt: + image: fosrl/newt + container_name: newt + restart: unless-stopped + environment: + - PANGOLIN_ENDPOINT=https://pangolin.mohandl3g.ly + - NEWT_ID=crcnpqj8nnlr2bo + - NEWT_SECRET=6pudccxon6g447lcr0z9v9favu3xca4ornn4x9avrkv6jr6b + network_mode: host \ No newline at end of file diff --git a/Nextcloud/docker-compose.yml b/Nextcloud/docker-compose.yml new file mode 100644 index 0000000..ccc507b --- /dev/null +++ b/Nextcloud/docker-compose.yml @@ -0,0 +1,16 @@ +name: linuxserver-nextcloud +services: + nextcloud: + image: linuxserver/nextcloud:latest + container_name: nextcloud + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + volumes: + - C:\Data\AppData\nextcloud\config:/config + - C:\Data\AppData\nextcloud\data:/data + ports: + - 1443:443 + - 180:80 + restart: unless-stopped \ No newline at end of file diff --git a/Nexterm/docker-compose.yml b/Nexterm/docker-compose.yml new file mode 100644 index 0000000..9306c0f --- /dev/null +++ b/Nexterm/docker-compose.yml @@ -0,0 +1,11 @@ +name: nexterm +services: + nexterm: + environment: + ENCRYPTION_KEY: "828e720745f57b94c0b2fe64a94e31b6413c1f189d6a533acc844db35753bbb0" # Replace with your generated key + ports: + - "6989:6989" + restart: always + volumes: + - C:\Data\AppData\nexterm\data:/app/data + image: germannewsmaker/nexterm:latest \ No newline at end of file diff --git a/Paperless-NGX/docker-compose.env b/Paperless-NGX/docker-compose.env new file mode 100644 index 0000000..a394cc2 --- /dev/null +++ b/Paperless-NGX/docker-compose.env @@ -0,0 +1,37 @@ +############################################################################### +# Paperless-ngx settings # +############################################################################### + +# See http://docs.paperless-ngx.com/configuration/ for all available options. + +# The UID and GID of the user used to run paperless in the container. Set this +# to your UID and GID on the host so that you have write access to the +# consumption directory. +#USERMAP_UID=1000 +#USERMAP_GID=1000 + +# See the documentation linked above for all options. A few commonly adjusted settings +# are provided below. + +# This is required if you will be exposing Paperless-ngx on a public domain +# (if doing so please consider security measures such as reverse proxy) +PAPERLESS_URL=https://paperless.mohandl3g.ddnsgeek.com + +# Adjust this key if you plan to make paperless available publicly. It should +# be a very long sequence of random characters. You don't need to remember it. +#PAPERLESS_SECRET_KEY=9199@mhD@9199 + +# Use this variable to set a timezone for the Paperless Docker containers. Defaults to UTC. +#PAPERLESS_TIME_ZONE=Africa/Tripoli + +# The default language to use for OCR. Set this to the language most of your +# documents are written in. +#PAPERLESS_OCR_LANGUAGE=eng + +# Additional languages to install for text recognition, separated by a whitespace. +# Note that this is different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines +# the language used for OCR. +# The container installs English, German, Italian, Spanish and French by default. +# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names&suite=buster +# for available languages. +#PAPERLESS_OCR_LANGUAGES=tur+ces+ara \ No newline at end of file diff --git a/Paperless-NGX/docker-compose.yml b/Paperless-NGX/docker-compose.yml new file mode 100644 index 0000000..4377b0f --- /dev/null +++ b/Paperless-NGX/docker-compose.yml @@ -0,0 +1,59 @@ +# Docker Compose file for running paperless from the Docker Hub. +# This file contains everything paperless needs to run. +# Paperless supports amd64, arm and arm64 hardware. +# +# All compose files of paperless configure paperless in the following way: +# +# - Paperless is (re)started on system boot, if it was running before shutdown. +# - Docker volumes for storing data are managed by Docker. +# - Folders for importing and exporting files are created in the same directory +# as this file and mounted to the correct folders inside the container. +# - Paperless listens on port 8000. +# +# In addition to that, this Docker Compose file adds the following optional +# configurations: +# +# - Instead of SQLite (default), PostgreSQL is used as the database server. +# +# To install and update paperless with this file, do the following: +# +# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' +# and '.env' into a folder. +# - Run 'docker compose pull'. +# - Run 'docker compose up -d'. +# +# For more extensive installation and update instructions, refer to the +# documentation. + +services: + broker: + image: docker.io/library/redis:8 + restart: unless-stopped + volumes: + - C:\Docker\AppData\paperless-ngx\redisdata:/data + db: + image: docker.io/library/postgres:17 + restart: unless-stopped + volumes: + - C:\Docker\AppData\paperless-ngx\pgdata:/var/lib/postgresql/data + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + webserver: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + depends_on: + - db + - broker + ports: + - "8001:8000" + volumes: + - C:\Docker\AppData\paperless-ngx\data:/usr/src/paperless/data + - C:\Docker\AppData\paperless-ngx\media:/usr/src/paperless/media + - C:\Docker\AppData\paperless-ngx\export:/usr/src/paperless/export + - C:\Docker\AppData\paperless-ngx\consume:/usr/src/paperless/consume + env_file: docker-compose.env + environment: + PAPERLESS_REDIS: redis://broker:6379 + PAPERLESS_DBHOST: db \ No newline at end of file diff --git a/PiHole/docker-compose.yml b/PiHole/docker-compose.yml new file mode 100644 index 0000000..48c263b --- /dev/null +++ b/PiHole/docker-compose.yml @@ -0,0 +1,39 @@ +# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/ +services: + pihole: + container_name: pihole + image: pihole/pihole:latest + ports: + # DNS Ports + - "53:53/tcp" + - "53:53/udp" + # Default HTTP Port + - "280:80/tcp" + # Default HTTPs Port. FTL will generate a self-signed certificate + - "2443:443/tcp" + # Uncomment the line below if you are using Pi-hole as your DHCP server + #- "67:67/udp" + # Uncomment the line below if you are using Pi-hole as your NTP server + #- "123:123/udp" + environment: + # Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g: + TZ: "Africa/Tripoli" + # Set a password to access the web interface. Not setting one will result in a random password being assigned + FTLCONF_webserver_api_password: "9199@mhD" + # If using Docker's default `bridge` network setting the dns listening mode should be set to 'ALL' + FTLCONF_dns_listeningMode: "ALL" + # Volumes store your data between container upgrades + volumes: + # For persisting Pi-hole's databases and common configuration file + - C:\Data\AppData\pihole:/etc/pihole + # Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true' + #- './etc-dnsmasq.d:/etc/dnsmasq.d' + cap_add: + # See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities + # Required if you are using Pi-hole as your DHCP server, else not needed + - NET_ADMIN + # Required if you are using Pi-hole as your NTP client to be able to set the host's system time + - SYS_TIME + # Optional, if Pi-hole should get some more processing time + - SYS_NICE + restart: unless-stopped diff --git a/Portainer-CE/docker-compose.yml b/Portainer-CE/docker-compose.yml new file mode 100644 index 0000000..6644794 --- /dev/null +++ b/Portainer-CE/docker-compose.yml @@ -0,0 +1,15 @@ +name: portainer-ce +services: + portainer: + container_name: portainer + image: portainer/portainer-ce:latest + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - C:\Data\AppData\portainer\data:/data + ports: + - 9443:9443 + +networks: + default: + name: portainer_network \ No newline at end of file diff --git a/Sonarr/docker-compose.yml b/Sonarr/docker-compose.yml new file mode 100644 index 0000000..12d5b31 --- /dev/null +++ b/Sonarr/docker-compose.yml @@ -0,0 +1,16 @@ +--- +services: + sonarr: + image: lscr.io/linuxserver/sonarr:latest + container_name: sonarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + volumes: + - C:\Docker\AppData\sonarr\data:/config + - C:\Docker\AppData\jellyfin\data\TV Shows:/tv #optional + - C:\Docker\AppData\sonarr\downloads:/downloads #optional + ports: + - 8989:8989 + restart: unless-stopped \ No newline at end of file diff --git a/Syncthing/docker-compose.yml b/Syncthing/docker-compose.yml new file mode 100644 index 0000000..bd00f63 --- /dev/null +++ b/Syncthing/docker-compose.yml @@ -0,0 +1,18 @@ +services: + syncthing: + image: lscr.io/linuxserver/syncthing:latest + container_name: syncthing + hostname: MyPC #optional + environment: + - PUID=1000 + - PGID=1000 + - TZ=Africa/Tripoli + volumes: + - C:\Docker\AppData\syncthing\config:/config + - C:\Docker\AppData\syncthing\Shared:/mnt/shared + ports: + - 8384:8384 + - 22000:22000/tcp + - 22000:22000/udp + - 21027:21027/udp + restart: unless-stopped diff --git a/Tugtainer/docker-compose.yml b/Tugtainer/docker-compose.yml new file mode 100644 index 0000000..b57b58a --- /dev/null +++ b/Tugtainer/docker-compose.yml @@ -0,0 +1,54 @@ +name: tugtainer +networks: + tugtainer: + driver: bridge +volumes: + tugtainer_data: +services: + # Socket proxy is used by default, + # but you can mount docker socket directly + # and remove this service and DOCKER_HOST variable + socket-proxy: + image: lscr.io/linuxserver/socket-proxy:latest + container_name: socket-proxy + environment: + CONTAINERS: 1 + EVENTS: 1 + IMAGES: 1 + INFO: 1 + LOG_LEVEL: warning + PING: 1 + NETWORKS: 1 + POST: 1 + TZ: Africa/Tripoli + VERSION: 1 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + restart: unless-stopped + read_only: true + tmpfs: + - /run + networks: + - tugtainer + labels: + dev.quenary.tugtainer.protected: True + app: + depends_on: + - socket-proxy + container_name: tugtainer + image: quenary/tugtainer:latest + volumes: + - C:\Data\AppData\tugtainer:/tugtainer + # You can uncomment this to mount socket directly, + # and remove socket-proxy service and DOCKER_HOST variable + # - /var/run/docker.sock:/var/run/docker.sock:ro + restart: unless-stopped + environment: + # The list of available variables is in env.example + DOCKER_HOST: tcp://socket-proxy:2375 + networks: + - tugtainer + ports: + - '9412:80' + labels: + dev.quenary.tugtainer.protected: True diff --git a/Update-DockerStacks-n8n.ps1 b/Update-DockerStacks-n8n.ps1 new file mode 100644 index 0000000..21c03e4 --- /dev/null +++ b/Update-DockerStacks-n8n.ps1 @@ -0,0 +1,99 @@ +# --- ADD TO TOP --- +# Start capturing all output (Write-Host, errors, etc.) +$FullLog = Start-Transcript -Path "$env:TEMP\docker_update_log.txt" -Force +# ------------------ + +# ============================================================================== +# CONFIGURATION +# ============================================================================== + +$RootPath = "C:\Users\MohandL3G\Nextcloud\Scripts & Commands\Docker\Compose" + +$ServicesToUpdate = @( + "Cup", + "Heimdall", + "Immich", + "Jellyfin", + "Jellyseerr", + "metube", + "n8n", + "Newt", + "Nextcloud", + "Nexterm", + "NPM", + "Portainer-CE", + "Zerobyte" + # "FutureApp" +) + +# ============================================================================== +# EXECUTION LOGIC +# ============================================================================== + +Write-Host "Starting Docker Stack Updates..." -ForegroundColor Cyan +Write-Host "--------------------------------" -ForegroundColor Gray + +foreach ($Service in $ServicesToUpdate) { + $ServicePath = Join-Path -Path $RootPath -ChildPath $Service + + if (Test-Path -Path $ServicePath) { + Write-Host "`n[$Service] Checking..." -ForegroundColor Yellow + Push-Location -Path $ServicePath + + try { + # 1. PULL: Capture output but filter out the noisy progress bars + Write-Host "Pulling images..." -ForegroundColor Gray + + # We filter out lines containing "Downloading", "Waiting", etc. to keep logs clean + $pullLog = docker compose --progress plain pull 2>&1 | + Where-Object { $_ -notmatch "Downloading|Waiting|Verifying|Pulling fs layer|Download complete" } | + Out-String + + Write-Host $pullLog + + # 2. UP: Force no-colors and capture the "Running/Recreated" status + $upLog = docker compose --ansi never up -d --remove-orphans --no-build 2>&1 | Out-String + Write-Host $upLog + + Write-Host "[$Service] Done." -ForegroundColor Green + } + catch { + Write-Host "[$Service] ERROR: Something went wrong." -ForegroundColor Red + } + finally { + Pop-Location + } + } + else { + Write-Host "`n[$Service] WARNING: Folder not found at $ServicePath" -ForegroundColor Red + } +} + +# ============================================================================== +# CLEANUP +# ============================================================================== + +Write-Host "`n--------------------------------" -ForegroundColor Gray +Write-Host "Cleaning up unused images..." -ForegroundColor Yellow + +# Redirection ensures the list of deleted IDs and space reclaimed is captured +$cleanupLog = docker image prune -f 2>&1 | Out-String +Write-Host $cleanupLog + +Write-Host "Cleanup Complete." -ForegroundColor Green +Write-Host "All requested updates finished." -ForegroundColor Cyan + +# --- ADD TO BOTTOM --- +Stop-Transcript +$LogContent = Get-Content "$env:TEMP\docker_update_log.txt" -Raw + +# Send to n8n (Replace the URL with your actual n8n Webhook URL) +$WebhookUrl = "https://n8n.mohandl3g.ly/webhook/dockerupdater" +$Body = @{ + status = "complete" + service = "DockerUpdater" + output = $LogContent +} + +Invoke-RestMethod -Uri $WebhookUrl -Method Post -Body ($Body | ConvertTo-Json) -ContentType "application/json" +# --------------------- \ No newline at end of file diff --git a/Update-DockerStacks.ps1 b/Update-DockerStacks.ps1 new file mode 100644 index 0000000..069694a --- /dev/null +++ b/Update-DockerStacks.ps1 @@ -0,0 +1,71 @@ +# ============================================================================== +# CONFIGURATION +# ============================================================================== + +$RootPath = "C:\Users\MohandL3G\Nextcloud\Scripts & Commands\Docker\Compose" + +$ServicesToUpdate = @( + "Cup", + "Heimdall", + "Immich", + "Jellyfin", + "Jellyseerr", + "metube", + "n8n", + "Newt", + "Nextcloud", + "Nexterm", + "NPM", + "Portainer-CE", + "Zerobyte" + # "FutureApp" +) + +# ============================================================================== +# EXECUTION LOGIC +# ============================================================================== + +Write-Host "Starting Docker Stack Updates..." -ForegroundColor Cyan +Write-Host "--------------------------------" -ForegroundColor Gray + +foreach ($Service in $ServicesToUpdate) { + $ServicePath = Join-Path -Path $RootPath -ChildPath $Service + + if (Test-Path -Path $ServicePath) { + Write-Host "`n[$Service] Checking..." -ForegroundColor Yellow + Push-Location -Path $ServicePath + + try { + # 1. PULL: This will show progress bars directly in your console. + docker compose pull + + # 2. UP: This acts as the "Check". + # If the image is new, it recreates the container. + # If the image is old, it says "Up to date" and keeps running. + docker compose up -d --remove-orphans --no-build + + Write-Host "[$Service] Done." -ForegroundColor Green + } + catch { + Write-Host "[$Service] ERROR: Something went wrong." -ForegroundColor Red + } + finally { + Pop-Location + } + } + else { + Write-Host "`n[$Service] WARNING: Folder not found at $ServicePath" -ForegroundColor Red + } +} + +# ============================================================================== +# CLEANUP +# ============================================================================== + +Write-Host "`n--------------------------------" -ForegroundColor Gray +Write-Host "Cleaning up unused images..." -ForegroundColor Yellow + +docker image prune -f + +Write-Host "Cleanup Complete." -ForegroundColor Green +Write-Host "All requested updates finished." -ForegroundColor Cyan \ No newline at end of file diff --git a/Zerobyte/docker-compose.yml b/Zerobyte/docker-compose.yml new file mode 100644 index 0000000..db29604 --- /dev/null +++ b/Zerobyte/docker-compose.yml @@ -0,0 +1,22 @@ +name: zerobyte +services: + zerobyte: + image: ghcr.io/nicotsx/zerobyte:latest + container_name: zerobyte + restart: unless-stopped + cap_add: + - SYS_ADMIN + ports: + - "4096:4096" + devices: + - /dev/fuse:/dev/fuse + environment: + - TZ=Africa/Tripoli + - BASE_URL=https://zerobyte.mohandl3g.ly + - TRUSTED_ORIGINS=https://zerobyte.mohandl3g.ddnsgeek.com + - APP_SECRET=534294ad0803bc02d212327f6f46711170aba839a02c91c910b41224efa11579 + volumes: + - /etc/localtime:/etc/localtime:ro + - C:\Data\AppData\zerobyte:/var/lib/zerobyte + - C:\Data\AppData:/mydata/AppData + - C:\Users\MohandL3G\AppData\Roaming\rclone:/root/.config/rclone diff --git a/metube/docker-compose.yml b/metube/docker-compose.yml new file mode 100644 index 0000000..39f094a --- /dev/null +++ b/metube/docker-compose.yml @@ -0,0 +1,15 @@ +name: metube +services: + metube: + image: ghcr.io/alexta69/metube + container_name: metube + restart: unless-stopped + environment: + - STATE_DIR=/metube_state + - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} + ports: + - "8081:8081" + volumes: + - C:\Users\MohandL3G\Downloads\Metube:/downloads + - C:\Data\AppData\metube\state:/metube_state + - C:\Data\AppData\metube\cookies:/cookies \ No newline at end of file diff --git a/n8n/docker-compose.yml b/n8n/docker-compose.yml new file mode 100644 index 0000000..383a429 --- /dev/null +++ b/n8n/docker-compose.yml @@ -0,0 +1,58 @@ +name: n8n +services: + db-n8n: + container_name: db-n8n + environment: + - POSTGRES_DB=n8n + - POSTGRES_PASSWORD=bigbearcasaos + - POSTGRES_USER=bigbearcasaos + hostname: db-n8n + healthcheck: + test: + - CMD-SHELL + - pg_isready -h localhost -U bigbearcasaos -d n8n + timeout: 5s + interval: 5s + retries: 10 + image: postgres:18.1 + restart: always + volumes: + - C:\Data\AppData\n8n\pgdata:/var/lib/postgresql + networks: + - default + + n8n: + container_name: n8n + depends_on: + db-n8n: + condition: service_healthy + required: true + image: n8nio/n8n:latest + restart: always + ports: + - 5678:5678 + environment: + - DB_POSTGRESDB_DATABASE=n8n + - DB_POSTGRESDB_HOST=db-n8n + - DB_POSTGRESDB_PASSWORD=bigbearcasaos + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=bigbearcasaos + - DB_TYPE=postgresdb + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + - N8N_HOST=n8n.mohandl3g.ly + - N8N_PORT=5678 + - N8N_PROTOCOL=https + - N8N_RUNNERS_ENABLED=true + - NODE_ENV=production + - WEBHOOK_URL=https://n8n.mohandl3g.ly/ + - GENERIC_TIMEZONE=Africa/Tripoli + - TZ=Africa/Tripoli + volumes: + - C:\Data\AppData\n8n\.n8n:/home/node/.n8n + - C:\Data\AppData\n8n\files:/files + networks: + - default + +networks: + default: + name: n8n_default \ No newline at end of file diff --git a/qBittorrent/docker-compose.yml b/qBittorrent/docker-compose.yml new file mode 100644 index 0000000..85b081b --- /dev/null +++ b/qBittorrent/docker-compose.yml @@ -0,0 +1,19 @@ +--- +services: + qbittorrent: + image: lscr.io/linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - WEBUI_PORT=8080 + - TORRENTING_PORT=6881 + volumes: + - C:\Docker\AppData\qbittorrent\appdata:/config + - C:\Users\MohandL3G\Downloads\Torrentz:/downloads #optional + ports: + - 8080:8080 + - 6881:6881 + - 6881:6881/udp + restart: unless-stopped \ No newline at end of file