From a64e32ffe022dd55b7b80abd46d7a0ceb479425f Mon Sep 17 00:00:00 2001 From: criz Date: Sun, 31 Aug 2025 08:45:07 +0200 Subject: [PATCH] readme --- .gitignore | 11 ++++++ Affine/compose.yml | 80 +++++++++++++++++++++++++++++++++++++++++ Beszel/compose.yml | 28 +++++++++++++++ Gitea/compose.yml | 20 +++++++++++ Gotify/compose.yml | 15 ++++++++ Immich/compose.yml | 77 +++++++++++++++++++++++++++++++++++++++ Metube/compose.yml | 12 +++++++ N8N/compose.yml | 16 +++++++++ NextCloud/compose.yml | 32 +++++++++++++++++ OpenWebui/compose.yml | 11 ++++++ StirlingPDF/compose.yml | 11 ++++++ TSDProxy/compose.yml | 19 ++++++++++ start_all.sh | 3 ++ stop_all.sh | 4 +++ 14 files changed, 339 insertions(+) create mode 100644 .gitignore create mode 100644 Affine/compose.yml create mode 100644 Beszel/compose.yml create mode 100644 Gitea/compose.yml create mode 100644 Gotify/compose.yml create mode 100644 Immich/compose.yml create mode 100644 Metube/compose.yml create mode 100644 N8N/compose.yml create mode 100644 NextCloud/compose.yml create mode 100644 OpenWebui/compose.yml create mode 100644 StirlingPDF/compose.yml create mode 100644 TSDProxy/compose.yml create mode 100755 start_all.sh create mode 100755 stop_all.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d50ae49 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Ignore everything in the root and all subdirectories +/* +!/*/ + +# Ignore everything in immediate subdirectories +/*/* +!/*/compose.yml* + +!.gitignore +!start_all.sh +!stop_all.sh diff --git a/Affine/compose.yml b/Affine/compose.yml new file mode 100644 index 0000000..4a2d443 --- /dev/null +++ b/Affine/compose.yml @@ -0,0 +1,80 @@ +name: affine +services: + affine: + image: ghcr.io/toeverything/affine:${AFFINE_REVISION:-stable} + container_name: affine_server + ports: + - '${PORT:-3010}:3010' + depends_on: + redis: + condition: service_healthy + postgres: + condition: service_healthy + affine_migration: + condition: service_completed_successfully + volumes: + # custom configurations + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + env_file: + - .env + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + restart: unless-stopped + labels: + tsdproxy.enable: "true" + tsdproxy.name: "affine" + + affine_migration: + image: ghcr.io/toeverything/affine:${AFFINE_REVISION:-stable} + container_name: affine_migration_job + volumes: + # custom configurations + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + command: ['sh', '-c', 'node ./scripts/self-host-predeploy.js'] + env_file: + - .env + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + + redis: + image: redis + container_name: affine_redis + healthcheck: + test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + + postgres: + image: pgvector/pgvector:pg16 + container_name: affine_postgres + volumes: + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: ${DB_DATABASE:-affine} + POSTGRES_INITDB_ARGS: '--data-checksums' + # you better set a password for you database + # or you may add 'POSTGRES_HOST_AUTH_METHOD=trust' to ignore postgres security policy + POSTGRES_HOST_AUTH_METHOD: trust + healthcheck: + test: + ['CMD', 'pg_isready', '-U', "${DB_USERNAME}", '-d', "${DB_DATABASE:-affine}"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + diff --git a/Beszel/compose.yml b/Beszel/compose.yml new file mode 100644 index 0000000..b21f21c --- /dev/null +++ b/Beszel/compose.yml @@ -0,0 +1,28 @@ +services: + beszel: + image: henrygd/beszel + container_name: beszel + restart: unless-stopped + ports: + - 8090:8090 + volumes: + - ./beszel_data:/beszel_data + labels: + tsdproxy.enable: "true" + tsdproxy.name: "dash" + + beszel-agent: + image: henrygd/beszel-agent + container_name: beszel-agent + restart: unless-stopped + network_mode: host + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./beszel_agent_data:/var/lib/beszel-agent + # monitor other disks / partitions by mounting a folder in /extra-filesystems + - /mnt/disk/.beszel:/extra-filesystems/nvme0n1p2:ro + environment: + LISTEN: 45876 + KEY: ${KEY} + TOKEN: ${TOKEN} + HUB_URL: ${HUB_URL} diff --git a/Gitea/compose.yml b/Gitea/compose.yml new file mode 100644 index 0000000..17ba678 --- /dev/null +++ b/Gitea/compose.yml @@ -0,0 +1,20 @@ +services: + gitea: + image: docker.gitea.com/gitea:1.24.5 + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + restart: always + volumes: + - ./gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "2221:22" + labels: + tsdproxy.enable: "true" + tsdproxy.name: "git" + tsdproxy.container_port: 3000 + tsdproxy.funnel: "true" diff --git a/Gotify/compose.yml b/Gotify/compose.yml new file mode 100644 index 0000000..32a90b7 --- /dev/null +++ b/Gotify/compose.yml @@ -0,0 +1,15 @@ +services: + gotify: + image: gotify/server + ports: + - 8084:80 + environment: + GOTIFY_DEFAULTUSER_PASS: 'admin' + volumes: + - './gotify_data:/app/data' + labels: + tsdproxy.enable: "true" + tsdproxy.name: "gotify" + # to run gotify as a dedicated user: + # sudo chown -R 1234:1234 ./gotify_data + # user: "1234:1234" diff --git a/Immich/compose.yml b/Immich/compose.yml new file mode 100644 index 0000000..3b97c8d --- /dev/null +++ b/Immich/compose.yml @@ -0,0 +1,77 @@ +# +# 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 + labels: + tsdproxy.enable: "true" + tsdproxy.name: "photos" + + 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} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280 + 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/Metube/compose.yml b/Metube/compose.yml new file mode 100644 index 0000000..d79d522 --- /dev/null +++ b/Metube/compose.yml @@ -0,0 +1,12 @@ +services: + metube: + image: ghcr.io/alexta69/metube + container_name: metube + restart: unless-stopped + ports: + - "8083:8081" + volumes: + - ./metube:/downloads + labels: + tsdproxy.enable: "true" + tsdproxy.name: "ytb-dl" diff --git a/N8N/compose.yml b/N8N/compose.yml new file mode 100644 index 0000000..9afbcbf --- /dev/null +++ b/N8N/compose.yml @@ -0,0 +1,16 @@ +services: + n8n: + image: docker.n8n.io/n8nio/n8n + restart: always + ports: + - 5678:5678 + environment: + # - N8N_PROTOCOL=http + - N8N_PORT=5678 + - NODE_ENV=production + volumes: + - ./n8n:/home/node/.n8n + - ./local-files:/files + labels: + tsdproxy.enable: "true" + tsdproxy.name: "n8n" diff --git a/NextCloud/compose.yml b/NextCloud/compose.yml new file mode 100644 index 0000000..de621fe --- /dev/null +++ b/NextCloud/compose.yml @@ -0,0 +1,32 @@ +services: + + # Nextcloud + nextcloud: + image: nextcloud + container_name: nextcloud + restart: always + ports: + - "8081:80" + networks: + - cloud + volumes: + - ./nextcloud_data:/var/www/html + environment: + - PUID=1000 + - PGID=1000 + - REDIS_HOST=redis + labels: + tsdproxy.enable: "true" + tsdproxy.name: "cloud" + + redis: + image: redis:alpine + container_name: redis + restart: always + volumes: + - ./redis:/data + networks: + - cloud + +networks: + cloud: diff --git a/OpenWebui/compose.yml b/OpenWebui/compose.yml new file mode 100644 index 0000000..3debc86 --- /dev/null +++ b/OpenWebui/compose.yml @@ -0,0 +1,11 @@ +services: + open-webui: + ports: + - 3001:8080 + volumes: + - ./open-webui:/app/backend/data + container_name: open-webui + image: ghcr.io/open-webui/open-webui:main + labels: + tsdproxy.enable: "true" + tsdproxy.name: "chat" diff --git a/StirlingPDF/compose.yml b/StirlingPDF/compose.yml new file mode 100644 index 0000000..6913f38 --- /dev/null +++ b/StirlingPDF/compose.yml @@ -0,0 +1,11 @@ +services: + stirling-pdf: + image: stirlingtools/stirling-pdf:latest + restart: always + environment: + - DOCKER_ENABLE_SECURITY=false + labels: + tsdproxy.enable: "true" + tsdproxy.name: "pdf" + ports: + - 8080:8080 diff --git a/TSDProxy/compose.yml b/TSDProxy/compose.yml new file mode 100644 index 0000000..a36f98a --- /dev/null +++ b/TSDProxy/compose.yml @@ -0,0 +1,19 @@ +services: + + ## tsdproxy + tsdproxy: + image: almeidapaulopt/tsdproxy:latest + container_name: tsdproxy + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - tsdproxydata:/data + environment: + # Get AuthKey from your Tailscale account + - TSDPROXY_AUTHKEY=${TSD_PROXY_AUTH} + # Address of docker server (access to example.com ports) + - TSDPROXY_HOSTNAME=${TSD_PROXY_HOSTNAME} + - DOCKER_HOST=unix:///var/run/docker.sock + restart: always + +volumes: + tsdproxydata: diff --git a/start_all.sh b/start_all.sh new file mode 100755 index 0000000..a00d7be --- /dev/null +++ b/start_all.sh @@ -0,0 +1,3 @@ +for d in */ ; do + docker compose -f "$d/compose.yml" up -d +done diff --git a/stop_all.sh b/stop_all.sh new file mode 100755 index 0000000..f80c04f --- /dev/null +++ b/stop_all.sh @@ -0,0 +1,4 @@ +for d in */ ; do + docker compose -f "$d/compose.yml" down +done +