Add Files

This commit is contained in:
2025-06-05 13:56:57 +05:30
parent a6e2e53a1d
commit 5ad09a69de
49 changed files with 1058 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
version: "3.8"
services:
adguardhome-sync:
image: "linuxserver/adguardhome-sync:0.7.6"
container_name: "adguardhome-sync"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
volumes:
- "${CONFIG_PATH}:/config"
ports:
- "${PORT}:8080"
restart: "unless-stopped"

View File

@@ -0,0 +1,26 @@
version: "3.8"
services:
adguardhome:
image: "adguard/adguardhome:v0.107.62"
container_name: "adguardhome"
volumes:
- "${WORK_PATH}:/opt/adguardhome/work"
- "${CONF_PATH}:/opt/adguardhome/conf"
ports:
- "${DNS_PORT}:53/tcp"
- "${DNS_PORT}:53/udp"
- "${TLS_PORT}:853/tcp"
- "${ADMIN_PORT}:3000/tcp"
restart: "unless-stopped"
adguardhome-sync:
image: "linuxserver/adguardhome-sync:0.7.6"
container_name: "adguardhome-sync"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
volumes:
- "${SYNC_PATH}:/config"
ports:
- "${SYNC_PORT}:8080"
restart: "unless-stopped"

View File

@@ -0,0 +1,14 @@
version: "3.8"
services:
adguardhome:
image: "adguard/adguardhome:v0.107.62"
container_name: "adguardhome"
volumes:
- "${WORK_PATH}:/opt/adguardhome/work"
- "${CONF_PATH}:/opt/adguardhome/conf"
ports:
- "${DNS_PORT}:53/tcp"
- "${DNS_PORT}:53/udp"
- "${TLS_PORT}:853/tcp"
- "${ADMIN_PORT}:3000/tcp"
restart: "unless-stopped"

View File

@@ -0,0 +1,20 @@
version: "3.8"
services:
airsonic-advanced:
image: "linuxserver/airsonic-advanced:11.0.0-SNAPSHOT.20230217142243-ls99"
container_name: "airsonic-advanced"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "CONTEXT_PATH=${CONTEXT_PATH}"
- "JAVA_OPTS=${JAVA_OPTS}"
volumes:
- "${CONFIG_PATH}:/config"
- "${PLAYLISTS_PATH}:/playlists"
- "${AUDIOBOOKS_PATH}:/audiobooks"
- "${PODCASTS_PATH}:/podcasts"
- "${MUSIC_PATH}:/music"
ports:
- "${PORT}:4040"
restart: "unless-stopped"

View File

@@ -0,0 +1,12 @@
version: "3.8"
services:
authelia:
image: "authelia/authelia:4.39.4"
container_name: "authelia"
environment:
- "TZ=${TZ}"
volumes:
- "${CONFIG_PATH}:/config"
ports:
- "${PORT}:9091"
restart: "unless-stopped"

View File

@@ -0,0 +1,38 @@
version: "3.8"
services:
bookstack_app:
image: "linuxserver/bookstack:25.02.20250309"
container_name: "bookstack_app"
depends_on:
- "bookstack_db"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "APP_URL=${APP_URL}"
- "DB_HOST=bookstack_db"
- "DB_DATABASE=${DB_DATABASE}"
- "DB_USER=${DB_USER}"
- "DB_PASS=${DB_PASS}"
volumes:
- "${BOOKSTACK_CONFIG_PATH}:/config"
ports:
- "${APP_PORT}:80"
restart: "unless-stopped"
bookstack_db:
image: "linuxserver/mariadb:11.4.5"
container_name: "bookstack_db"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "MYSQL_DATABASE=${DB_DATABASE}"
- "MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}"
- "MYSQL_USER=${DB_USER}"
- "MYSQL_PASSWORD=${DB_PASS}"
volumes:
- "${DB_CONFIG_PATH}:/config"
ports:
- "${DB_PORT}:3306"
restart: "unless-stopped"

View File

@@ -0,0 +1,21 @@
version: "3.8"
services:
caddy-reverse-proxy:
image: "slothcroissant/caddy-cloudflaredns:2.10.0"
container_name: "caddy-reverse-proxy"
cap_add:
- NET_ADMIN
environment:
- "CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}"
- "CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}"
- "ACME_AGREE=true"
volumes:
- "${CADDYFILE_PATH}:/etc/caddy/Caddyfile"
- "${CONF_PATH}:/config"
- "${DATA_PATH}:/data"
- "${LOG_PATH}:/var/log/caddy"
- "${SITE_PATH}:/srv"
ports:
- "${HTTP}:80"
- "${HTTPS}:443"
restart: "unless-stopped"

View File

@@ -0,0 +1,17 @@
version: "3.8"
services:
caddy-reverse-proxy:
image: "caddy:2.10.0"
container_name: "caddy-reverse-proxy"
cap_add:
- NET_ADMIN
volumes:
- "${CADDYFILE_PATH}:/etc/caddy/Caddyfile"
- "${CONF_PATH}:/config"
- "${DATA_PATH}:/data"
- "${LOG_PATH}:/var/log/caddy"
- "${SITE_PATH}:/srv"
ports:
- "${HTTP}:80"
- "${HTTPS}:443"
restart: "unless-stopped"

View File

@@ -0,0 +1,24 @@
version: "3.8"
services:
changedetection:
image: "linuxserver/changedetection.io:version-0.45.14"
container_name: "changedetection"
depends_on:
- "playwright-chrome"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/"
volumes:
- "${CONFIG_PATH}:/config"
ports:
- "${PORT}:5000"
restart: "unless-stopped"
playwright-chrome:
image: "browserless/chrome:latest"
container_name: "playwright-chrome"
ports:
- "3000:3000"
restart: "unless-stopped"

View File

@@ -0,0 +1,20 @@
version: "3"
services:
cloudflare-ddns:
image: "favonia/cloudflare-ddns:1.15.1"
container_name: cloudflare-ddns
user: "${PUID}:${PGID}"
cap_drop:
- all
read_only: true
security_opt:
- no-new-privileges:true
environment:
- CF_API_TOKEN=${CF_API_TOKEN}
- DOMAINS=${DOMAINS}
- PROXIED=${PROXIED}
- IP6_PROVIDER=${IP6_PROVIDER}
- UPDATE_CRON=${UPDATE_CRON}
- HEALTHCHECKS=${HEALTHCHECKS}
- TTL=${TTL}
restart: unless-stopped

View File

@@ -0,0 +1,15 @@
version: "3.3"
services:
dockerproxy:
image: "ghcr.io/tecnativa/docker-socket-proxy:0.3.0"
container_name: "dockerproxy"
environment:
- "CONTAINERS=${CONTAINERS}"
- "SERVICES=${SERVICES}"
- "TASKS=${TASKS}"
- "POST=${POST}"
ports:
- "${PORT}:2375"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: "unless-stopped"

View File

@@ -0,0 +1,19 @@
version: "3.8"
services:
duplicati:
image: "linuxserver/duplicati:2.1.0"
container_name: "duplicati"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
volumes:
- "${CONFIG_PATH}:/config"
- "${SOURCE_PATH}:/source"
- "${BACKUP_PATH}:/backups"
- "${SCRIPTS_PATH}:/scripts"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker"
ports:
- "${PORT}:8200"
restart: "unless-stopped"

6
duplicati/readme.md Normal file
View File

@@ -0,0 +1,6 @@
## Duplicati Scripts:
Add scripts to backup jobs for stoping and starting docker containers
* run-script-before - /scripts/stop-containers.sh
* run-script-after - /scripts/start-containers.sh

View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Start Database Containers and Dependant Containers
docker start db_container db_container_2
# Sleep for 10 sec for Database Containers and Dependant Containers startup
sleep 10
# Start Server Containers and Other Containers
docker start container container_2

View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Stop Server Containers and Other Containers
docker stop container container_2
# Sleep for 10 sec for Server Containers and Other Containers to stop
sleep 10
# Stop Database Containers and Dependant Containers
docker stop db_container db_container_2

View File

@@ -0,0 +1,28 @@
version: "3.8"
services:
ferdium-server:
image: "ferdium/ferdium-server:2.0.10"
container_name: "ferdium-server"
environment:
- "NODE_ENV=${NODE_ENV}"
- "APP_URL=${APP_URL}"
- "DB_CONNECTION=${DB_CONNECTION}"
- "MAIL_CONNECTION=smtp"
- "SMTP_HOST=${SMTP_HOST}"
- "SMTP_PORT=${SMTP_PORT}"
- "MAIL_SSL=${MAIL_SSL}"
- "MAIL_USERNAME=${MAIL_USERNAME}"
- "MAIL_PASSWORD=${MAIL_PASSWORD}"
- "MAIL_SENDER=${MAIL_SENDER}"
- "IS_CREATION_ENABLED=${IS_CREATION_ENABLED}"
- "IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}"
- "IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}"
- "CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}"
- "DATA_DIR=${DATA_DIR}"
- "JWT_USE_PEM=${JWT_USE_PEM}"
volumes:
- "${DB_PATH}:/data"
- "${RECIPES_PATH}:/app/build/recipes"
ports:
- "${PORT}:3333"
restart: "unless-stopped"

View File

@@ -0,0 +1,39 @@
version: "3.8"
services:
forgejo_db:
image: "linuxserver/mariadb:11.4.5"
container_name: "forgejo_db"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
volumes:
- "${DB_PATH}:/config"
ports:
- "${DB_PORT}:3306"
restart: "unless-stopped"
forgejo_server:
image: "codeberg.org/forgejo/forgejo:11.0.1-rootless"
container_name: "forgejo_server"
depends_on:
- "forgejo_db"
environment:
- "USER_UID=${PUID}"
- "USER_GID=${PGID}"
- "FORGEJO__database__DB_TYPE=mysql"
- "FORGEJO__database__HOST=forgejo_db"
- "FORGEJO__database__NAME=${MYSQL_DATABASE}"
- "FORGEJO__database__USER=${MYSQL_USER}"
- "FORGEJO__database__PASSWD=${MYSQL_PASSWORD}"
volumes:
- "${SERVER_PATH}:/data"
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
ports:
- "${SERVER_PORT}:3000"
restart: "unless-stopped"

View File

@@ -0,0 +1,15 @@
version: "3.8"
services:
glances:
image: "nicolargo/glances:4.3.0.8"
container_name: "glances"
hostname: "Cosmoem"
pid: "host"
environment:
- "GLANCES_OPT=-w"
ports:
- "${PORT}:61208"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/:/mnt/root"
restart: "unless-stopped"

View File

@@ -0,0 +1,15 @@
version: "3.8"
services:
glances:
image: "nicolargo/glances:4.3.0.8"
container_name: "glances"
hostname: "Rayquaza"
pid: "host"
environment:
- "GLANCES_OPT=-w"
ports:
- "${PORT}:61208"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/:/mnt/root"
restart: "unless-stopped"

View File

@@ -0,0 +1,15 @@
version: "3.8"
services:
glances:
image: "nicolargo/glances:4.3.0.8"
container_name: "glances"
hostname: "Hostname"
pid: "host"
environment:
- "GLANCES_OPT=-w"
ports:
- "${PORT}:61208"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/:/mnt/root"
restart: "unless-stopped"

View File

@@ -0,0 +1,13 @@
version: "3.8"
services:
gotify:
image: "gotify/server-arm64:2.6.3"
container_name: "gotify"
environment:
- "TZ=${TZ}"
- "GOTIFY_REGISTRATION=${GOTIFY_REGISTRATION}"
volumes:
- "${CONFIG_PATH}:/app/data"
ports:
- "${PORT}:80"
restart: "unless-stopped"

View File

@@ -0,0 +1,30 @@
version: "3.8"
services:
healthchecks:
image: "linuxserver/healthchecks:3.10.20250526"
container_name: "healthchecks"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "SITE_ROOT=${SITE_ROOT}"
- "SITE_NAME=${SITE_NAME}"
- "DEFAULT_FROM_EMAIL=${DEFAULT_FROM_EMAIL}"
- "EMAIL_HOST=${EMAIL_HOST}"
- "EMAIL_PORT=${EMAIL_PORT}"
- "EMAIL_HOST_USER=${EMAIL_HOST_USER}"
- "EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD}"
- "EMAIL_USE_TLS=${EMAIL_USE_TLS}"
- "EMAIL_USE_SSL=${EMAIL_USE_SSL}"
- "SUPERUSER_EMAIL=${SUPERUSER_EMAIL}"
- "SUPERUSER_PASSWORD=${SUPERUSER_PASSWORD}"
- "SECRET_KEY=${SECRET_KEY}"
- "APPRISE_ENABLED=${APPRISE_ENABLED}"
- "REGISTRATION_OPEN=${REGISTRATION_OPEN}"
- "DEBUG=${DEBUG}"
- "SITE_LOGO_URL=${SITE_LOGO_URL}"
volumes:
- ${CONFIG_PATH}:/config
ports:
- "${PORT}:8000"
restart: "unless-stopped"

View File

@@ -0,0 +1,13 @@
version: "3.8"
services:
homeassistant:
image: "linuxserver/homeassistant:2025.5.3"
container_name: "homeassistant"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
network_mode: "host"
volumes:
- "${CONFIG_PATH}:/config"
restart: "unless-stopped"

View File

@@ -0,0 +1,11 @@
version: "3.8"
services:
homeassistant:
image: "homeassistant/home-assistant:2025.5.3"
container_name: "homeassistant"
network_mode: "host"
volumes:
- "${CONFIG_PATH}:/config"
- "/etc/localtime:/etc/localtime:ro"
- "/run/dbus:/run/dbus:ro"
restart: "unless-stopped"

View File

@@ -0,0 +1,29 @@
version: "3.3"
services:
dockerproxy:
image: "tecnativa/docker-socket-proxy:0.3.0"
container_name: "dockerproxy"
environment:
- "CONTAINERS=${CONTAINERS}" # Allow access to viewing containers
- "SERVICES=${SERVICES}" # Allow access to viewing services (necessary when using Docker Swarm)
- "TASKS=${TASKS}" # Allow access to viewing tasks (necessary when using Docker Swarm)
- "POST=${POST}" # Disallow any POST operations (effectively read-only)
ports:
- "${PROXY_PORT}:2375"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: "unless-stopped"
homepage:
image: "gethomepage/homepage:v1.2.0"
container_name: "homepage"
environment:
- "HOMEPAGE_ALLOWED_HOSTS=${HOMEPAGE_ALLOWED_HOSTS}"
- "PUID=${PUID}"
- "PGID=${PGID}"
volumes:
- "${CONFIG_PATH}:/app/config"
- "${IMAGES_PATH}:/app/public/images"
ports:
- "${PORT}:3000"
restart: "unless-stopped"

View File

@@ -0,0 +1,64 @@
version: "3.8"
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v1.134.0
command: ['start.sh', 'immich']
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${PHOTOS_PATH_1}:/usr/src/app/external/${USER_1}/photos
- ${VIDEOS_PATH_1}:/usr/src/app/external/${USER_1}/videos
- ${PHOTOS_PATH_2}:/usr/src/app/external/${USER_2}/photos
- ${VIDEOS_PATH_2}:/usr/src/app/external/${USER_2}/videos
- /etc/localtime:/etc/localtime:ro
env_file:
- ../stack.env
ports:
- ${SERVER_PORT}:3001
depends_on:
- immich-redis
- immich-postgres
restart: unless-stopped
immich-microservices:
container_name: immich_microservices
image: ghcr.io/immich-app/immich-server:v1.134.0
command: ['start.sh', 'microservices']
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${PHOTOS_PATH_1}:/usr/src/app/external/${USER_1}/photos
- ${VIDEOS_PATH_1}:/usr/src/app/external/${USER_1}/videos
- ${PHOTOS_PATH_2}:/usr/src/app/external/${USER_2}/photos
- ${VIDEOS_PATH_2}:/usr/src/app/external/${USER_2}/videos
- /etc/localtime:/etc/localtime:ro
env_file:
- ../stack.env
depends_on:
- immich-redis
- immich-postgres
restart: unless-stopped
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v1.134.0
volumes:
- ${CACHE_PATH}:/cache
env_file:
- ../stack.env
restart: unless-stopped
immich-redis:
container_name: immich_redis
image: redis:8.0.2
restart: unless-stopped
immich-postgres:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg15-v0.2.1
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- ${DB_PATH}:/var/lib/postgresql/data
restart: unless-stopped

View File

@@ -0,0 +1,32 @@
version: "3.8"
services:
joplin-server:
image: "joplin/server:3.3.9-beta"
container_name: "joplin-server"
depends_on:
- "joplin-db"
environment:
- "APP_PORT=${APP_PORT}"
- "APP_BASE_URL=${APP_BASE_URL}"
- "DB_CLIENT=pg"
- "POSTGRES_DATABASE=${POSTGRES_DATABASE}"
- "POSTGRES_USER=${POSTGRES_USER}"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
- "POSTGRES_HOST=joplin-db"
- "POSTGRES_PORT=5432"
ports:
- "${APP_PORT}:22300"
restart: "unless-stopped"
joplin-db:
image: "postgres:17.5"
container_name: "joplin-db"
environment:
- "POSTGRES_DB=${POSTGRES_DATABASE}"
- "POSTGRES_USER=${POSTGRES_USER}"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
volumes:
- "${DB_PATH}:/var/lib/postgresql/data"
ports:
- "${DB_PORT}:5432"
restart: "unless-stopped"

15
komga/docker-compose.yaml Normal file
View File

@@ -0,0 +1,15 @@
version: "3.8"
services:
komga:
image: "gotson/komga:1.21.3"
container_name: "komga"
user: "${UID}:${GID}"
environment:
- "TZ=${TZ}"
- "JAVA_TOOL_OPTIONS=-Xmx${RAM_LIMIT}"
volumes:
- "${CONFIG_PATH}:/config"
- "${DATA_PATH}:/data"
ports:
- "${PORT}:25600"
restart: "unless-stopped"

View File

@@ -0,0 +1,20 @@
version: "3"
services:
letsencrypt-cloudflare:
image: "certbot/dns-cloudflare:v4.0.0"
container_name: "letsencrypt-cloudflare"
# Dry Run
command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION} --dry-run
# Issue certificate
# command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
# Renew certificate
# command: renew --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
volumes:
- "${CLOUDFLARE_PATH}:/opt/cloudflare"
- "${LETSENCRYPT_PATH}:/etc/letsencrypt"
- "${LETSENCRYPT_LOG_PATH}:/var/log/letsencrypt"
- "${LETSENCRYPT_LIB_PATH}:/var/lib/letsencrypt"

View File

@@ -0,0 +1,20 @@
version: "3"
services:
letsencrypt-cloudflare:
image: "certbot/dns-cloudflare:v4.0.0"
container_name: "letsencrypt-cloudflare"
# Dry Run
# command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION} --dry-run
# Issue certificate
command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
# Renew certificate
# command: renew --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
volumes:
- "${CLOUDFLARE_PATH}:/opt/cloudflare"
- "${LETSENCRYPT_PATH}:/etc/letsencrypt"
- "${LETSENCRYPT_LOG_PATH}:/var/log/letsencrypt"
- "${LETSENCRYPT_LIB_PATH}:/var/lib/letsencrypt"

View File

@@ -0,0 +1,20 @@
version: "3"
services:
letsencrypt-cloudflare:
image: "certbot/dns-cloudflare:v4.0.0"
container_name: "letsencrypt-cloudflare"
# Dry Run
# command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION} --dry-run
# Issue certificate
# command: certonly --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --email ${EMAIL} -d ${DOMAIN} -d *.${DOMAIN} --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
# Renew certificate
command: renew --non-interactive --dns-cloudflare --dns-cloudflare-credentials /opt/cloudflare/cloudflare.ini --agree-tos --server https://acme-v02.api.letsencrypt.org/directory --dns-cloudflare-propagation-seconds ${PROPAGATION}
volumes:
- "${CLOUDFLARE_PATH}:/opt/cloudflare"
- "${LETSENCRYPT_PATH}:/etc/letsencrypt"
- "${LETSENCRYPT_LOG_PATH}:/var/log/letsencrypt"
- "${LETSENCRYPT_LIB_PATH}:/var/lib/letsencrypt"

View File

@@ -0,0 +1,10 @@
version: "3.8"
services:
mailrise:
image: "yoryan/mailrise:latest"
container_name: "mailrise"
volumes:
- "${CONF}:/etc/mailrise.conf"
ports:
- "${PORT}:8025"
restart: "unless-stopped"

17
minio/docker-compose.yaml Normal file
View File

@@ -0,0 +1,17 @@
version: "3.8"
services:
minio:
image: "minio/minio:latest"
container_name: "minio"
environment:
- "MINIO_ROOT_USER=${MINIO_ROOT_USER}"
- "MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}"
- "MINIO_BROWSER_REDIRECT_URL=${MINIO_BROWSER_REDIRECT_URL}"
- "MINIO_SERVER_URL=${MINIO_SERVER_URL}"
command: server --console-address ":9001" /data
volumes:
- "${DATA_PATH}:/data"
ports:
- "${PORT1}:9000"
- "${PORT2}:9001"
restart: "unless-stopped"

View File

@@ -0,0 +1,46 @@
version: "3.8"
services:
nextcloud_app:
image: "linuxserver/nextcloud:31.0.5"
container_name: "nextcloud_app"
depends_on:
- "nextcloud_db"
- "nextcloud_redis"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
volumes:
- "${CONFIG_PATH}:/config"
- "${DATA_PATH}:/data"
- "${HDD_DATA_PATH}:/hdd"
ports:
- "${APP_PORT}:443"
restart: "unless-stopped"
nextcloud_db:
image: "linuxserver/mariadb:11.4.5"
container_name: "nextcloud_db"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
volumes:
- "${DB_PATH}:/config"
ports:
- "${DB_PORT}:3306"
restart: "unless-stopped"
nextcloud_redis:
image: "redis:8.0.2"
container_name: "nextcloud_redis"
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- "${REDIS_PATH}:/data"
ports:
- "${REDIS_PORT}:6379"
restart: "unless-stopped"

View File

@@ -0,0 +1,74 @@
version: "3.8"
services:
nextcloud_app:
image: "nextcloud:31.0.5"
container_name: "nextcloud_app"
depends_on:
- "nextcloud_db"
- "nextcloud_redis"
environment:
- "MYSQL_HOST=nextcloud_db:3306"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
- "REDIS_HOST=nextcloud_redis"
- "REDIS_HOST_PORT=6379"
- "REDIS_HOST_PASSWORD=${REDIS_PASSWORD}"
- "PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}"
- "PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT}"
- "APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP}"
volumes:
- "${CONFIG_PATH}:/var/www/html"
- "${DATA_PATH}:/var/www/html/data"
- "${HDD_PATH}:/hdd"
ports:
- "${APP_PORT}:80"
restart: "unless-stopped"
nextcloud_cron:
image: "nextcloud:31.0.5"
container_name: "nextcloud_cron"
depends_on:
- "nextcloud_app"
entrypoint: /cron.sh
environment:
- "MYSQL_HOST=nextcloud_db:3306"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
- "REDIS_HOST=nextcloud_redis"
- "REDIS_HOST_PORT=6379"
- "REDIS_HOST_PASSWORD=${REDIS_PASSWORD}"
- "PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}"
- "PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT}"
- "APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP}"
volumes:
- "${CONFIG_PATH}:/var/www/html"
- "${DATA_PATH}:/var/www/html/data"
- "${HDD_PATH}:/hdd"
restart: "unless-stopped"
nextcloud_db:
image: "mariadb:11.7.2"
container_name: "nextcloud_db"
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
environment:
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
volumes:
- "${DB_PATH}:/var/lib/mysql"
ports:
- "${DB_PORT}:3306"
restart: "unless-stopped"
nextcloud_redis:
image: "redis:8.0.2"
container_name: "nextcloud_redis"
command: "redis-server --requirepass ${REDIS_PASSWORD}"
volumes:
- "${REDIS_PATH}:/data"
ports:
- "${REDIS_PORT}:6379"
restart: "unless-stopped"

View File

@@ -0,0 +1,13 @@
version: "3.8"
services:
nginx-proxy-manager:
image: "jc21/nginx-proxy-manager:2.12.3"
container_name: "nginx-proxy-manager"
volumes:
- "${DATA_PATH}:/data"
- "${LETSENCRYPT_PATH}:/etc/letsencrypt"
ports:
- "${PORT1}:80"
- "${PORT2}:81"
- "${PORT3}:443"
restart: "unless-stopped"

View File

@@ -0,0 +1,15 @@
version: "3.8"
services:
nginx-reverse-proxy:
image: "nginx:1.28.0"
container_name: "nginx-reverse-proxy"
volumes:
- "${CONF_PATH}:/etc/nginx/nginx.conf"
- "${PROXY_PATH}:/etc/nginx/conf.d"
- "${LOG_PATH}:/var/log/nginx"
- "${LETSENCRYPT_PATH}:/letsencrypt"
ports:
- "${HTTP}:80"
- "${HTTPS}:443"
restart: "unless-stopped"

View File

@@ -0,0 +1,38 @@
version: "3.8"
services:
paperless-ngx-server:
image: "paperlessngx/paperless-ngx:2.16.2"
container_name: "paperless-ngx-server"
depends_on:
- "paperless-ngx-redis"
environment:
USERMAP_UID: ${PUID}
USERMAP_GID: ${PGID}
PAPERLESS_TIME_ZONE: ${TZ}
PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
PAPERLESS_URL: ${URL}
PAPERLESS_REDIS: redis://paperless-ngx-redis:6379
PAPERLESS_FILENAME_FORMAT: "{correspondent}/{created_year}/{title}"
PAPERLESS_OCR_DESKEW: false
volumes:
- "${DATA_PATH}:/usr/src/paperless/data"
- "${MEDIA_PATH}:/usr/src/paperless/media"
- "${EXPORT_PATH}:/usr/src/paperless/export"
- "${CONSUME_PATH}:/usr/src/paperless/consume"
ports:
- "${SERVER_PORT}:8000"
restart: "unless-stopped"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
paperless-ngx-redis:
image: "redis:8.0.2"
container_name: "paperless-ngx-redis"
volumes:
- "${REDIS_PATH}:/data"
ports:
- "${REDIS_PORT}:6379"
restart: "unless-stopped"

View File

@@ -0,0 +1,33 @@
version: "3.8"
services:
picsur_app:
image: "ghcr.io/caramelfur/picsur:0.5.6"
container_name: "picsur_app"
depends_on:
- "picsur_db"
environment:
PICSUR_DB_HOST: picsur_db
PICSUR_DB_DATABASE: ${POSTGRES_DB}
PICSUR_DB_USERNAME: ${POSTGRES_USER}
PICSUR_DB_PASSWORD: ${POSTGRES_PASSWORD}
PICSUR_ADMIN_PASSWORD: ${PICSUR_ADMIN_PASSWORD}
PICSUR_JWT_SECRET: ${PICSUR_JWT_SECRET}
PICSUR_JWT_EXPIRY: ${PICSUR_JWT_EXPIRY}
PICSUR_MAX_FILE_SIZE: ${PICSUR_MAX_FILE_SIZE}
PICSUR_VERBOSE: "${PICSUR_VERBOSE}"
ports:
- "${APP_PORT}:8080"
restart: "unless-stopped"
picsur_db:
image: "postgres:17.5"
container_name: "picsur_db"
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- "${DB_CONFIG}:/var/lib/postgresql/data"
ports:
- "${DB_PORT}:5432"
restart: "unless-stopped"

View File

@@ -0,0 +1,17 @@
version: "3.8"
services:
pihole-unbound:
container_name: "pihole-unbound"
image: "rlabinc/pihole-unbound:2024.02.2"
environment:
- "TZ=${TZ}"
- "WEBPASSWORD=${WEBPASSWORD}"
volumes:
- "${ETC_PIHOLE_PATH}:/etc/pihole"
- "${ETC_DNSMASQ_PATH}:/etc/dnsmasq.d"
# - "${UNBOUND_PATH}:/opt/unbound/etc/unbound" #For custom Unbound conf
ports:
- "53:53/tcp"
- "53:53/udp"
- "${PORT}:80/tcp"
restart: "unless-stopped"

View File

@@ -0,0 +1,16 @@
version: "3.8"
services:
pihole:
container_name: "pihole"
image: "pihole/pihole:2025.05.1"
environment:
- "TZ=${TZ}"
- "WEBPASSWORD=${WEBPASSWORD}"
volumes:
- "${ETC_PIHOLE_PATH}:/etc/pihole"
- "${ETC_DNSMASQ_PATH}:/etc/dnsmasq.d"
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
restart: "unless-stopped"

View File

@@ -0,0 +1,11 @@
version: "3.8"
services:
portainer-agent:
image: "portainer/agent:lts"
container_name: "portainer-agent"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/var/lib/docker/volumes:/var/lib/docker/volumes"
ports:
- "9001:9001"
restart: "unless-stopped"

View File

@@ -0,0 +1,13 @@
version: "3.8"
services:
portainer:
image: "portainer/portainer-ee:lts"
container_name: "portainer"
volumes:
- "./data:/data"
- "/etc/localtime:/etc/localtime:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
ports:
- "8000:8000"
- "9443:9443"
restart: "unless-stopped"

View File

@@ -0,0 +1,18 @@
version: "3.8"
services:
qbittorrent:
image: "linuxserver/qbittorrent:latest"
container_name: "qbittorrent"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "WEBUI_PORT=${PORT}"
volumes:
- "${CONFIG_PATH}:/config"
- "${DOWNLOADS}:/downloads"
ports:
- "${PORT}:${PORT}"
- "6881:6881"
- "6881:6881/udp"
restart: "unless-stopped"

View File

@@ -0,0 +1,27 @@
version: "3.8"
services:
radicale:
image: "tomsquest/docker-radicale:3.5.4.0"
container_name: "radicale"
init: "true"
read_only: "true"
security_opt:
- "no-new-privileges:true"
cap_drop:
- "ALL"
cap_add:
- "SETUID"
- "SETGID"
- "CHOWN"
- "KILL"
volumes:
- "${CONFIG_PATH}:/config"
- "${DATA_PATH}:/data"
- "${USERS_PATH}:/users:ro"
ports:
- "${PORT}:5232"
restart: "unless-stopped"
healthcheck:
test: curl -f http://127.0.0.1:5232 || exit 1
interval: 30s
retries: 3

View File

@@ -0,0 +1,18 @@
version: "3.8"
services:
stirling-pdf:
image: "frooodle/s-pdf:0.46.2-fat"
container_name: "stirling-pdf"
environment:
- "DOCKER_ENABLE_SECURITY=${DOCKER_ENABLE_SECURITY}"
- "SECURITY_ENABLELOGIN=${SECURITY_ENABLELOGIN}"
- "LANGS=${LANGS}"
ports:
- "${PORT}:8080"
volumes:
- "${TRAINIG_DATA}:/usr/share/tessdata" #Required for extra OCR languages
- "${CONFIG_PATH}:/configs"
- "${CUSTOM_FILES}:/customFiles/"
- "${LOGS}:/logs/"
- "${PIPELINE}:/pipeline/"
restart: "unless-stopped"

View File

@@ -0,0 +1,10 @@
version: "3.8"
services:
uptime-kuma:
image: "louislam/uptime-kuma:1.23.16"
container_name: "uptime-kuma"
volumes:
- "${CONFIG_PATH}:/app/data"
ports:
- "${PORT}:3001"
restart: "unless-stopped"

View File

@@ -0,0 +1,24 @@
version: "3.8"
services:
vaultwarden:
image: "vaultwarden/server:1.34.1"
container_name: "vaultwarden"
environment:
- "PUID=${PUID}"
- "PGID=${PGID}"
- "TZ=${TZ}"
- "WEBSOCKET_ENABLED=${WEBSOCKET_ENABLED}"
# - "SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED}"
# - "ADMIN_TOKEN=${ADMIN_TOKEN}"
# - "SMTP_HOST=${SMTP_HOST}"
# - "SMTP_FROM=${SMTP_FROM}"
# - "SMTP_PORT=${SMTP_PORT}"
# - "SMTP_SECURITY=starttls"
# - "SMTP_USERNAME=${SMTP_USERNAME}"
# - "SMTP_PASSWORD=${SMTP_PASSWORD}"
- "LOG_FILE=/data/vaultwarden.log"
volumes:
- "${DATA_PATH}:/data/"
ports:
- "${PORT}:80"
restart: "unless-stopped"

View File

@@ -0,0 +1,13 @@
version: "3.8"
services:
wallos:
image: "bellamy/wallos:3.1.1"
container_name: "wallos"
environment:
- "TZ=${TZ}"
volumes:
- "${DB_PATH}:/var/www/html/db"
- "${LOGOS_PATH}:/var/www/html/images/uploads/logos"
ports:
- "${PORT}:80/tcp"
restart: "unless-stopped"