init
This commit is contained in:
60
Home/Node1/admin/docker-compose.yml
Normal file
60
Home/Node1/admin/docker-compose.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
name: admin-system
|
||||
|
||||
services:
|
||||
# --- Stack Manager (Port 9000) ---
|
||||
dockman:
|
||||
image: ra341/dockman:latest
|
||||
container_name: dockman
|
||||
restart: always
|
||||
ports:
|
||||
- "9000:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# WICHTIG: Dockman muss das Git-Repo sehen
|
||||
- /opt/dockman/stacks/home-node-01:/app/stacks
|
||||
- ./data/dockman:/app/data
|
||||
environment:
|
||||
- DOCKMAN_STACKS_DIR=/app/stacks
|
||||
|
||||
# --- Dashboard (Port 9001) ---
|
||||
glance:
|
||||
image: glanceapp/glance
|
||||
container_name: glance
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9001:8080"
|
||||
volumes:
|
||||
- ./config/glance.yml:/app/glance.yml
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
# --- Monitoring (Port 9002) ---
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:1
|
||||
container_name: uptime-kuma
|
||||
restart: always
|
||||
ports:
|
||||
- "9002:3001"
|
||||
volumes:
|
||||
- ./data/uptime-kuma:/app/data
|
||||
|
||||
# --- Update Checker (Port 9003) ---
|
||||
wud:
|
||||
image: fmartinou/whats-up-docker
|
||||
container_name: wud
|
||||
restart: always
|
||||
ports:
|
||||
- "9003:3000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
environment:
|
||||
- WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock
|
||||
|
||||
|
||||
# --- Omnitools (Port 9004) ---
|
||||
omnitools:
|
||||
image: omnitools/omnitools:latest # Bitte exaktes Image prüfen
|
||||
container_name: omnitools
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9004:80"
|
||||
9
Home/Node1/connectivity/docker-compose.yml
Normal file
9
Home/Node1/connectivity/docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
newt:
|
||||
image: fosrl/newt
|
||||
container_name: newt
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PANGOLIN_ENDPOINT=https://pangolin.kornzuhause.space
|
||||
- NEWT_ID=y2tf3oyp0aofunu
|
||||
- NEWT_SECRET=**************
|
||||
39
Home/Node1/core-infra/docker-compose.yml
Normal file
39
Home/Node1/core-infra/docker-compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
name: core-infra
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: ./secrets/db_password.txt
|
||||
|
||||
services:
|
||||
# Zentrale Postgres Datenbank für Paperless, Gitea, etc.
|
||||
database:
|
||||
image: postgres:16-alpine
|
||||
container_name: postgres-core
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_USER: admin
|
||||
POSTGRES_DB: main_db
|
||||
# Docker Secret Magic: Liest das Passwort aus der Datei
|
||||
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
|
||||
secrets:
|
||||
- db_password
|
||||
volumes:
|
||||
- db_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- core_net
|
||||
|
||||
# Zentrale Redis Instanz (Cache für Paperless, Immich etc.)
|
||||
redis:
|
||||
image: redis:alpine
|
||||
container_name: redis-core
|
||||
restart: always
|
||||
networks:
|
||||
- core_net
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
|
||||
networks:
|
||||
core_net:
|
||||
name: core_net
|
||||
driver: bridge
|
||||
1
Home/Node1/core-infra/secrets/db_password.txt
Normal file
1
Home/Node1/core-infra/secrets/db_password.txt
Normal file
@@ -0,0 +1 @@
|
||||
DeinSicheresDatenbankPasswort123!
|
||||
7
Home/Node1/media/.env
Normal file
7
Home/Node1/media/.env
Normal file
@@ -0,0 +1,7 @@
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
TZ=Europe/Berlin
|
||||
|
||||
# WICHTIG: Passe diesen Pfad an deine echte Festplatte an!
|
||||
# Zum Beispiel: /mnt/hdd/media
|
||||
MEDIA_ROOT=/mnt/storage/media
|
||||
205
Home/Node1/media/docker-compose.yml
Normal file
205
Home/Node1/media/docker-compose.yml
Normal file
@@ -0,0 +1,205 @@
|
||||
name: media
|
||||
|
||||
services:
|
||||
# --- Jellyfin (Port 8096) ---
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7003:8096"
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ./config/jellyfin:/config
|
||||
- ${MEDIA_ROOT}:/data/media # Pfad aus der .env
|
||||
# Hardware Transcoding (Intel/AMD):
|
||||
#devices:
|
||||
# - /dev/dri:/dev/dri
|
||||
|
||||
# --- Audiobookshelf (Port 13378) ---
|
||||
audiobookshelf:
|
||||
image: ghcr.io/advplyr/audiobookshelf:latest
|
||||
container_name: audiobookshelf
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7001:80"
|
||||
volumes:
|
||||
- ./config/audiobookshelf/config:/config
|
||||
- ./config/audiobookshelf/metadata:/metadata
|
||||
- ${MEDIA_ROOT}/audiobooks:/audiobooks
|
||||
- ${MEDIA_ROOT}/podcasts:/podcasts
|
||||
|
||||
# --- RomM (Port 7000) ---
|
||||
romm:
|
||||
image: rommapp/romm:latest
|
||||
container_name: romm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7000:8080"
|
||||
environment:
|
||||
- DB_HOST=romm-db
|
||||
- DB_NAME=romm
|
||||
- DB_USER=romm-user
|
||||
- DB_PASSWD=romm-password
|
||||
volumes:
|
||||
- ./config/romm/resources:/romm/resources
|
||||
- ${MEDIA_ROOT}/games:/romm/library
|
||||
depends_on:
|
||||
- romm-db
|
||||
|
||||
# Datenbank für RomM (nur intern sichtbar)
|
||||
romm-db:
|
||||
image: mariaDB:10.6
|
||||
labels:
|
||||
- "wud.watch=false"
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=root-pass
|
||||
- MYSQL_DATABASE=romm
|
||||
- MYSQL_USER=romm-user
|
||||
- MYSQL_PASSWORD=romm-password
|
||||
volumes:
|
||||
- romm_db_data:/var/lib/mysql
|
||||
|
||||
# --- Immich (Port 7002) ---
|
||||
# ACHTUNG: Immich ist komplex. Das ist die vereinfachte All-in-One Struktur.
|
||||
immich-server:
|
||||
image: ghcr.io/immich-app/immich-server:release
|
||||
container_name: immich_server
|
||||
command: ["start.sh", "immich"]
|
||||
restart: always
|
||||
ports:
|
||||
- "7999:2283"
|
||||
environment:
|
||||
- DB_HOSTNAME=immich-postgres
|
||||
- DB_USERNAME=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_DATABASE_NAME=immich
|
||||
- REDIS_HOSTNAME=immich-redis
|
||||
volumes:
|
||||
- ${MEDIA_ROOT}/photos:/usr/src/app/upload
|
||||
depends_on:
|
||||
- immich-redis
|
||||
- immich-postgres
|
||||
|
||||
immich-microservices:
|
||||
image: ghcr.io/immich-app/immich-server:release
|
||||
container_name: immich_microservices
|
||||
command: ["start.sh", "microservices"]
|
||||
restart: always
|
||||
environment:
|
||||
- DB_HOSTNAME=immich-postgres
|
||||
- DB_USERNAME=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_DATABASE_NAME=immich
|
||||
- REDIS_HOSTNAME=immich-redis
|
||||
volumes:
|
||||
- ${MEDIA_ROOT}/photos:/usr/src/app/upload
|
||||
depends_on:
|
||||
- immich-redis
|
||||
- immich-postgres
|
||||
|
||||
# Immich braucht seine eigene DB (Vectordaten etc.)
|
||||
immich-postgres:
|
||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
||||
container_name: immich_postgres
|
||||
labels:
|
||||
- "wud.watch=false"
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=postgres
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_DB=immich
|
||||
volumes:
|
||||
- immich_pg_data:/var/lib/postgresql/data
|
||||
|
||||
immich-redis:
|
||||
image: redis:6.2-alpine
|
||||
container_name: immich_redis
|
||||
restart: always
|
||||
labels:
|
||||
- "wud.watch=false"
|
||||
|
||||
immich-drop:
|
||||
image: ghcr.io/nasogaa/immich-drop:latest
|
||||
pull_policy: always
|
||||
container_name: immich-drop
|
||||
restart: unless-stopped
|
||||
# Configure all settings here (no .env required)
|
||||
environment:
|
||||
# Immich connection (must include /api)
|
||||
IMMICH_BASE_URL: https://immich.example.com/api
|
||||
IMMICH_API_KEY: ${IMMICH_API_KEY}
|
||||
# Optional behavior
|
||||
IMMICH_ALBUM_NAME: dead-drop
|
||||
PUBLIC_UPLOAD_PAGE_ENABLED: "false" # keep disabled by default
|
||||
PUBLIC_BASE_URL: https://drop.example.com
|
||||
# Large files: chunked uploads (bypass 100MB proxy limits)
|
||||
CHUNKED_UPLOADS_ENABLED: "false" # enable chunked uploads
|
||||
CHUNK_SIZE_MB: "95" # per-chunk size (MB)
|
||||
# App internals
|
||||
SESSION_SECRET: ${SESSION_SECRET}
|
||||
# Expose the app on the host
|
||||
ports:
|
||||
- 7998:8080
|
||||
# Persist local dedupe cache (state.db) across restarts
|
||||
volumes:
|
||||
- immich_drop_data:/data
|
||||
# Simple healthcheck
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "python - <<'PY'\nimport os,urllib.request,sys; url=f\"http://127.0.0.1:{os.getenv('PORT','8080')}/\";\ntry: urllib.request.urlopen(url, timeout=3); sys.exit(0)\nexcept Exception: sys.exit(1)\nPY"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
immich-public-proxy:
|
||||
image: alangrainger/immich-public-proxy:latest
|
||||
container_name: immich-public-proxy
|
||||
restart: always
|
||||
ports:
|
||||
- "7997:3000"
|
||||
environment:
|
||||
PUBLIC_BASE_URL: https://your-proxy-url.com
|
||||
IMMICH_URL: http://your-internal-immich-server:2283
|
||||
healthcheck:
|
||||
test: curl -s http://localhost:3000/share/healthcheck -o /dev/null || exit 1
|
||||
start_period: 10s
|
||||
timeout: 5s
|
||||
|
||||
|
||||
immich-kiosk:
|
||||
image: ghcr.io/damongolding/immich-kiosk:latest
|
||||
container_name: immich-kiosk
|
||||
tty: true
|
||||
environment:
|
||||
LANG: "de_DE"
|
||||
TZ: "Europe/Berlin"
|
||||
ports:
|
||||
- 7996:3000
|
||||
volumes:
|
||||
- ./config:/config
|
||||
# - ./custom.css:/custom.css
|
||||
# - ./offline-assets:/offline-assets
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
power-tools:
|
||||
image: ghcr.io/varun-raj/immich-power-tools:latest
|
||||
ports:
|
||||
- "7995:3000"
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
|
||||
volumes:
|
||||
romm_db_data:
|
||||
immich_pg_data:
|
||||
immich_drop_data:
|
||||
3
Home/Node1/productivity/.env
Normal file
3
Home/Node1/productivity/.env
Normal file
@@ -0,0 +1,3 @@
|
||||
TZ=Europe/Berlin
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
183
Home/Node1/productivity/docker-compose.yml
Normal file
183
Home/Node1/productivity/docker-compose.yml
Normal file
@@ -0,0 +1,183 @@
|
||||
name: productivity
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: ./secrets/db_password.txt
|
||||
|
||||
networks:
|
||||
# Verbindung zum Core-Stack (Postgres/Redis)
|
||||
core_net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
# --- Dokumente (Port 8000) ---
|
||||
paperless:
|
||||
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
||||
container_name: paperless
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
PAPERLESS_URL: https://paperless.deinedomain.de
|
||||
PAPERLESS_TIME_ZONE: ${TZ}
|
||||
PAPERLESS_DBHOST: postgres-core
|
||||
PAPERLESS_DBNAME: main_db
|
||||
PAPERLESS_DBUSER: admin
|
||||
PAPERLESS_DBPASS_FILE: /run/secrets/db_password
|
||||
PAPERLESS_REDIS: redis://redis-core:6379
|
||||
secrets:
|
||||
- db_password
|
||||
volumes:
|
||||
- ./data/paperless/data:/usr/src/paperless/data
|
||||
- ./data/paperless/media:/usr/src/paperless/media
|
||||
- ./data/paperless/consume:/usr/src/paperless/consume
|
||||
networks:
|
||||
- core_net
|
||||
- default
|
||||
|
||||
# --- Focalboard (Port 8001) ---
|
||||
focalboard:
|
||||
image: mattermost/focalboard
|
||||
container_name: focalboard
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8001:8000"
|
||||
networks:
|
||||
- default
|
||||
- core_net
|
||||
|
||||
# --- PDF Tools (Port 8002) ---
|
||||
stirling-pdf:
|
||||
image: frooodle/s-pdf:latest
|
||||
container_name: stirling-pdf
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8002:8080"
|
||||
environment:
|
||||
- DOCKER_ENABLE_SECURITY=false
|
||||
networks:
|
||||
- default
|
||||
|
||||
# --- Gramps Web (Port 8003) ---
|
||||
# Web-Version der Ahnenforschung
|
||||
gramps:
|
||||
image: ghcr.io/gramps-project/gramps-web:latest
|
||||
container_name: gramps
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8003:5000"
|
||||
environment:
|
||||
GRAMPSWEB_TREE: "Stammbaum"
|
||||
GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://redis-core:6379/0" # Nutzt Core Redis
|
||||
volumes:
|
||||
- ./data/gramps/users:/app/users
|
||||
- ./data/gramps/index:/app/index
|
||||
networks:
|
||||
- default
|
||||
- core_net
|
||||
|
||||
# --- Silverbullet (Port 8004) ---
|
||||
# Markdown Notizen
|
||||
silverbullet:
|
||||
image: zefhemel/silverbullet
|
||||
container_name: silverbullet
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8004:3000"
|
||||
volumes:
|
||||
- ./data/silverbullet:/space
|
||||
networks:
|
||||
- default
|
||||
|
||||
# --- Rx Resume (Port 8005) ---
|
||||
# Lebenslauf Builder (Standalone/Simple Mode)
|
||||
rx-resume:
|
||||
image: amruthpillai/reactive-resume:latest
|
||||
container_name: rx_resume
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8005:3000"
|
||||
environment:
|
||||
# Benötigt zwingend eine Datenbank (Core Postgres)
|
||||
- POSTGRES_DB=main_db
|
||||
- POSTGRES_USER=admin
|
||||
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
|
||||
- POSTGRES_HOST=postgres-core
|
||||
- POSTGRES_PORT=5432
|
||||
- PUBLIC_URL=http://deine-ip:8005
|
||||
secrets:
|
||||
- db_password
|
||||
networks:
|
||||
- core_net
|
||||
- default
|
||||
|
||||
# --- Fossflow / Projektmanagement (Port 8006) ---
|
||||
# Annahme: Leantime oder OpenProject? (Image prüfen!)
|
||||
fossflow:
|
||||
image: leantime/leantime:latest # Placeholder: Leantime ist ein guter Kandidat
|
||||
container_name: fossflow
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8006:80"
|
||||
environment:
|
||||
- LEAN_DB_HOST=postgres-core
|
||||
- LEAN_DB_USER=admin
|
||||
- LEAN_DB_PASSWORD_FILE=/run/secrets/db_password
|
||||
- LEAN_DB_DATABASE=main_db
|
||||
secrets:
|
||||
- db_password
|
||||
volumes:
|
||||
- ./data/fossflow:/var/www/html/public/userfiles
|
||||
networks:
|
||||
- core_net
|
||||
- default
|
||||
|
||||
# --- Trip / Reisen (Port 8007) ---
|
||||
# Annahme: TravelMap
|
||||
trip:
|
||||
image: jilguy/travelmap:latest
|
||||
container_name: trip
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8007:80"
|
||||
volumes:
|
||||
- ./data/trip:/var/www/html/data
|
||||
networks:
|
||||
- default
|
||||
|
||||
# --- Norish / Rezepte (Port 8008) ---
|
||||
# Annahme: Mealie (Sehr populär für Rezepte)
|
||||
norish:
|
||||
image: ghcr.io/mealie-recipes/mealie:latest
|
||||
container_name: norish
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8008:9000" # Mealie nutzt intern 9000
|
||||
volumes:
|
||||
- ./data/norish:/app/data
|
||||
networks:
|
||||
- default
|
||||
|
||||
# --- Koffan / Einkaufszettel (Port 8009) ---
|
||||
# Annahme: KitchenOwl oder Grocy
|
||||
koffan:
|
||||
image: tombursch/kitchenowl:latest
|
||||
container_name: koffan
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8009:80"
|
||||
networks:
|
||||
- default
|
||||
|
||||
# --- Yubal / YT Downloader (Port 8010) ---
|
||||
# Annahme: MeTube (bester simpler Web-Downloader)
|
||||
yubal:
|
||||
image: alexta69/metube:latest
|
||||
container_name: yubal
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8010:8081" # MeTube nutzt intern 8081
|
||||
volumes:
|
||||
- /mnt/storage/downloads:/downloads # Pfad anpassen!
|
||||
networks:
|
||||
- default
|
||||
3
Home/Node1/smarthome/.env
Normal file
3
Home/Node1/smarthome/.env
Normal file
@@ -0,0 +1,3 @@
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
TZ=Europe/Berlin
|
||||
41
Home/Node1/smarthome/docker-compose.yml
Normal file
41
Home/Node1/smarthome/docker-compose.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
name: smarthome
|
||||
|
||||
networks:
|
||||
# Verbindung zum MQTT Broker in Stack 20
|
||||
core_net:
|
||||
external: true
|
||||
|
||||
services:
|
||||
# --- Home Assistant (Port 8123) ---
|
||||
homeassistant:
|
||||
image: lscr.io/linuxserver/homeassistant:latest
|
||||
container_name: homeassistant
|
||||
restart: always
|
||||
ports:
|
||||
- "8123:8123"
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ./config/ha:/config
|
||||
networks:
|
||||
- core_net
|
||||
- default
|
||||
# Optional: Falls du USB-Sticks (Zigbee/Z-Wave) durchreichen musst:
|
||||
# devices:
|
||||
# - /dev/ttyUSB0:/dev/ttyUSB0
|
||||
# privileged: true
|
||||
|
||||
# --- MagicMirror (Port 8180) ---
|
||||
magicmirror:
|
||||
image: bastilimbach/docker-magicmirror
|
||||
container_name: magicmirror
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8180:8080"
|
||||
volumes:
|
||||
- ./config/magicmirror/config:/opt/magic_mirror/config
|
||||
- ./config/magicmirror/modules:/opt/magic_mirror/modules
|
||||
networks:
|
||||
- default
|
||||
0
Home/Node2/admin/docker-compose.yml
Normal file
0
Home/Node2/admin/docker-compose.yml
Normal file
0
Home/Node2/test/docker-compose.yml
Normal file
0
Home/Node2/test/docker-compose.yml
Normal file
10
LICENSE
Normal file
10
LICENSE
Normal file
@@ -0,0 +1,10 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <http://unlicense.org/>
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Docker-Setup
|
||||
|
||||
Aufbau und Versionsverwaltung von Containern
|
||||
14
VPS/admin/docker-compose.yml
Normal file
14
VPS/admin/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
name: admin
|
||||
|
||||
services:
|
||||
gotify:
|
||||
image: gotify/server
|
||||
ports:
|
||||
- 8080:80
|
||||
environment:
|
||||
GOTIFY_DEFAULTUSER_PASS: 'admin'
|
||||
volumes:
|
||||
- './gotify_data:/app/data'
|
||||
# to run gotify as a dedicated user:
|
||||
# sudo chown -R 1234:1234 ./gotify_data
|
||||
# user: "1234:1234"
|
||||
2
VPS/ingress/.env
Normal file
2
VPS/ingress/.env
Normal file
@@ -0,0 +1,2 @@
|
||||
TUNNEL_TOKEN=super_langes_geheimes_token_hier_einfuegen
|
||||
|
||||
75
VPS/ingress/docker-compose.yml
Normal file
75
VPS/ingress/docker-compose.yml
Normal file
@@ -0,0 +1,75 @@
|
||||
name: ingress
|
||||
|
||||
services:
|
||||
pangolin:
|
||||
image: docker.io/fosrl/pangolin:latest # https://github.com/fosrl/pangolin/releases
|
||||
container_name: pangolin
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"]
|
||||
interval: "10s"
|
||||
timeout: "10s"
|
||||
retries: 15
|
||||
|
||||
gerbil:
|
||||
image: docker.io/fosrl/gerbil:latest # https://github.com/fosrl/gerbil/releases
|
||||
container_name: gerbil
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
pangolin:
|
||||
condition: service_healthy
|
||||
command:
|
||||
- --reachableAt=http://gerbil:3004
|
||||
- --generateAndSaveKeyTo=/var/config/key
|
||||
- --remoteConfig=http://pangolin:3001/api/v1/
|
||||
volumes:
|
||||
- ./config/:/var/config
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
ports:
|
||||
- 51820:51820/udp
|
||||
- 21820:21820/udp
|
||||
- 443:443
|
||||
- 80:80
|
||||
|
||||
traefik:
|
||||
image: docker.io/traefik:v3.6
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
|
||||
network_mode: service:gerbil # Ports appear on the gerbil service
|
||||
|
||||
depends_on:
|
||||
pangolin:
|
||||
condition: service_healthy
|
||||
command:
|
||||
- --configFile=/etc/traefik/traefik_config.yml
|
||||
volumes:
|
||||
- ./config/traefik:/etc/traefik:ro # Volume to store the Traefik configuration
|
||||
- ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates
|
||||
- ./config/traefik/logs:/var/log/traefik # Volume to store Traefik logs
|
||||
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
name: pangolin
|
||||
#enable_ipv6: true # activate if your system supports IPv6
|
||||
|
||||
middleware-manager:
|
||||
image: hhftechnology/middleware-manager:latest
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./config/middleware-manager:/app/config
|
||||
- ./config/traefik:/etc/traefik # Must match Traefik's static config dir
|
||||
environment:
|
||||
- ACTIVE_DATA_SOURCE=pangolin
|
||||
- PANGOLIN_API_URL=http://pangolin:3001/api/v1
|
||||
- TRAEFIK_STATIC_CONFIG_PATH=/etc/traefik/traefik_config.yml # Path inside container
|
||||
- TRAEFIK_CONF_DIR=/conf
|
||||
- DB_PATH=/data/middleware.db
|
||||
- PORT=3456
|
||||
ports:
|
||||
- "3456:3456"
|
||||
Reference in New Issue
Block a user