Uploading Everything

Uploading Every Docker Compose YML file to the Repo
This commit is contained in:
2026-02-12 17:12:19 +02:00
commit fe628b774f
38 changed files with 1273 additions and 0 deletions

20
Arcane/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

18
Baikal/docker-compose.yml Normal file
View File

@@ -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

11
Cup/docker-compose.yml Normal file
View File

@@ -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

27
Diun/docker-compose.yml Normal file
View File

@@ -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

22
Dockge/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

40
Gitea/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

22
Immich/.env Normal file
View File

@@ -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

71
Immich/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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:

57
Immich/hwaccel.ml.yml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

14
NPM/docker-compose.yml Normal file
View File

@@ -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

11
Newt/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

39
PiHole/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

16
Sonarr/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"
# ---------------------

71
Update-DockerStacks.ps1 Normal file
View File

@@ -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

View File

@@ -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

15
metube/docker-compose.yml Normal file
View File

@@ -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

58
n8n/docker-compose.yml Normal file
View File

@@ -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

View File

@@ -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