From 7949400c17f266f9dd7138ffd1f38ff6db94af65 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Wed, 2 Oct 2024 16:00:58 +0200
Subject: [PATCH 1/9] Stirling PDF under Tools
---
tools/docker-compose.yml | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 tools/docker-compose.yml
diff --git a/tools/docker-compose.yml b/tools/docker-compose.yml
new file mode 100644
index 0000000..53592e1
--- /dev/null
+++ b/tools/docker-compose.yml
@@ -0,0 +1,28 @@
+services:
+
+ stirling-pdf:
+ image: frooodle/s-pdf:latest
+ # ports:
+ # - '8080:8080'
+ networks:
+ - web
+ volumes:
+ - ${VOLUMES_PATH}/tools/stirling-pdf/trainingData:/usr/share/tesseract-ocr/5/tessdata #Required for extra OCR languages
+ - ${VOLUMES_PATH}/tools/stirling-pdf/extraConfigs:/configs
+# - ${VOLUMES_PATH}/tools/stirling-pdf/customFiles:/customFiles/
+# - ${VOLUMES_PATH}/tools/stirling-pdf/logs:/logs/
+ environment:
+ - DOCKER_ENABLE_SECURITY=false
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.routers.pdf.rule=Host(`pdf.${DOMAIN}`)"
+ - "traefik.http.routers.pdf.entrypoints=web"
+ - "traefik.http.services.pdf.loadbalancer.server.port=8080"
+ - "traefik.docker.network=web"
+ - "docker.group=tools"
+
+networks:
+ paperless:
+ web:
+ external: true
+
From 16ff239ea901ecd73bc317c06b4f80c2daf04f68 Mon Sep 17 00:00:00 2001
From: fzirker
Date: Mon, 7 Oct 2024 13:09:09 +0000
Subject: [PATCH 2/9] doc/manual.md aktualisiert
---
doc/manual.md | 101 +++++++++++++++++++++++++++++---------------------
1 file changed, 59 insertions(+), 42 deletions(-)
diff --git a/doc/manual.md b/doc/manual.md
index a613734..14734af 100644
--- a/doc/manual.md
+++ b/doc/manual.md
@@ -1,61 +1,78 @@
# Manual and Help
## Upgrade Postgrs to newer Version (i.e. 15 to 16)
+[Source](https://helgeklein.com/blog/upgrading-postgresql-in-docker-container/)
-
-### 1. Copy Service
-
-1.1 Copy whole service definition in docker-compose.yaml
-1.2 Rename old service to *-old
-1.3 Move path from new service to i.e postgres16
-1.4 Set postgres version explicit to new version
-
-Example:
+### 1. Stopp application conatiner
```
- databasedb-old:
- image: postgres:${POSTGRES_VERSION}
- volumes:
- - ${VOLUMES_PATH}/databasedb:/var/lib/postgresql/data
- environment:
- - POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
-
- databasedb:
- image: postgres:16
- volumes:
- - ${VOLUMES_PATH}/databasedb16:/var/lib/postgresql/data
- environment:
- - POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+docker compose down APP_CONTAINER_NAME
```
-### 2. Move data
-Backup data from service one to new servic with the following command:
+
+### 2. Create a Full DB Dump
+Look up the name of your PostgreSQL user in your Docker configuration. Sometimes postgres or something
+
```
-docker exec old-service pg_dumpall -U dbuser | docker exec -i new-service psql -U dbuser -d database
+docker exec -it POSTGRESQL_CONTAINER_NAME pg_dumpall -U postgres > dump.sql
```
-### 3. Set password
+### 3. Stop the PostgreSQL Container
```
-docker exec -i monitoring-databasedb-1 psql -U dbuser -d database -c "ALTER USER \"dbuser\" PASSWORD 'secret';"
+docker stop POSTGRESQL_CONTAINER_NAME # with compose
+docker compose stop POSTGRESQL_SERVICE_NAME # with compose
+docker compose down # all
```
-### 4. Test
-```docker compose up -d``` and check if service is correctly running.
+### 4. Move the DB Data Directory
+Use root priveleges to move data dir. Backup old one.
+```
+mv db/ db-old/
+mkdir db
+```
-### 5. Cleanup
-5.1 Remove old service in docker-compose.yaml
-5.2 Set explicit version again to ${POSTGRES_VERSION} and adopt .env file
-5.4 remove old volume dir
+### 5. Increment the PostgreSQL Version
+Edit the Docker compose file, incrementing the image version.
+If image is set with postgres:${POSTGRES_VERSION} change .env file.
+
+
+### 6. Start container with empty data directory
+Start container and Verify logs
+```
+docker compose up -d POSTGRESQL_CONTAINER_NAME
+docker compose logs -f
+```
+
+
+### 7. Import DB Dump
+Backup data from service one to new servic with the following command
+Use this:
+```
+docker compose exec -T POSTGRESQL_SERVICE_NAME psql -U POSTGRES_USER POSTGRES_DB < dump.sql
+```
+
+### 8. set password
+```
+docker exec -i POSTGRESQL_CONTAINER_NAME psql -U POSTGRES_USER -d database -c "ALTER USER \"POSTGRES_USER\" PASSWORD 'POSTGRES_PASSWORD';"
+```
+
+### 8. Start the Application Container
+```
+docker compose up -d APP_CONTAINER_NAME
+```
+
+### 9. Test
+Check if service is working correctly.
+Check logs:
+```
+docker compose logs -f
+```
+
+### 10. Clean Up
+* Delete the backup directory: rm -rf db-old/
+* Delete the dump file: rm dump.sql
+* Delete the old PostgreSQL image: docker image prune -a
-### 6. May be move Data dir
-6.1. ```docker compose down```
-6.2 ```mv /mnt/dockervolumes/databasedb16 /mnt/dockervolumes/databasedb```
-6.3 docker-compose.yaml anpassen
-6.1. ```docker compose up -d```
From 99241d00612d3a542e574234c764a3b11600dcc0 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Tue, 8 Oct 2024 13:18:15 +0200
Subject: [PATCH 3/9] mqtt and zigbee non host mode
---
proxy/docker-compose.yaml | 6 +++---
smartHome/docker-compose.yaml | 12 +++++++-----
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml
index 9600d1d..f5f3606 100644
--- a/proxy/docker-compose.yaml
+++ b/proxy/docker-compose.yaml
@@ -19,7 +19,7 @@ services:
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "docker.group=proxy"
extra_hosts:
- - host.docker.internal:172.17.0.1
+ - host.docker.internal:host-gateway
depends_on:
- docker-socket-proxy
@@ -27,12 +27,12 @@ services:
docker-socket-proxy:
image: tecnativa/docker-socket-proxy
restart: unless-stopped
- volumes:
+ volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
# grant privileges as environment variables: https://github.com/Tecnativa/docker-socket-proxy#grant-or-revoke-access-to-certain-api-sections
- CONTAINERS=1
- - INFO=1
+ - INFO=1
networks:
- dockersocket
privileged: true
diff --git a/smartHome/docker-compose.yaml b/smartHome/docker-compose.yaml
index 52b697a..913fc64 100644
--- a/smartHome/docker-compose.yaml
+++ b/smartHome/docker-compose.yaml
@@ -16,14 +16,14 @@ services:
- "traefik.http.services.hassi.loadbalancer.server.port=8123"
- "docker.group=smartHome"
+
mqttbroker:
image: eclipse-mosquitto:${MOSQUITTO_VERSION}
restart: unless-stopped
- network_mode: host
- expose:
- - 1883
- #ports:
- # - 1883:1883 # mqtt over TCP
+ networks:
+ - smarthome
+ ports:
+ - 1883:1883 # mqtt over TCP
# - 9001:9001 # Websockets
volumes:
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
@@ -43,6 +43,7 @@ services:
- ${ZIGBEE_DEVICE}:/dev/ttyACM0
networks:
- web
+ - smarthome
labels:
- "traefik.enable=true"
- "traefik.http.routers.zigbee2mqtt.rule=Host(`zigbee2mqtt.${DOMAIN}`)"
@@ -54,3 +55,4 @@ services:
networks:
web:
external: true
+ smarthome:
From f20697a85c683d4a3586b8175776c9d07a986a03 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Tue, 8 Oct 2024 16:02:32 +0200
Subject: [PATCH 4/9] Replace Traefik with Caddy as proxy
---
dashboard/docker-compose.yaml | 4 ---
download/docker-compose.yaml | 9 +-----
media/docker-compose.yml | 12 -------
monitoring/docker-compose.yaml | 15 ---------
paperless/docker-compose.yaml | 5 ---
proxy/Caddyfile | 52 +++++++++++++++++++++++++++++++
proxy/docker-compose.yaml | 57 +++++++++-------------------------
proxy/traefik.yml | 23 --------------
smartHome/docker-compose.yaml | 10 ++----
torrent/docker-compose.yaml | 4 ---
10 files changed, 69 insertions(+), 122 deletions(-)
create mode 100644 proxy/Caddyfile
delete mode 100644 proxy/traefik.yml
diff --git a/dashboard/docker-compose.yaml b/dashboard/docker-compose.yaml
index a6b4896..e53b870 100644
--- a/dashboard/docker-compose.yaml
+++ b/dashboard/docker-compose.yaml
@@ -10,10 +10,6 @@ services:
environment:
- INIT_ASSETS=1
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.homer.rule=Host(`dashboard.${DOMAIN}`)"
- - "traefik.http.routers.homer.entrypoints=web"
- - "traefik.http.services.homer.loadbalancer.server.port=8080"
- "docker.group=dashboard"
restart: unless-stopped
diff --git a/download/docker-compose.yaml b/download/docker-compose.yaml
index cd57060..597dbbe 100644
--- a/download/docker-compose.yaml
+++ b/download/docker-compose.yaml
@@ -1,6 +1,6 @@
services:
- app:
+ pyload:
image: linuxserver/pyload-ng
environment:
- PUID=1000
@@ -9,16 +9,9 @@ services:
volumes:
- ${VOLUMES_PATH}/download/pyload:/config
- ${DOWNLOAD_PATH}:/downloads
-# ports:
- #- 7227:7227 #optional Thrift Backend
networks:
- web
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.pyload.rule=Host(`download.${DOMAIN}`)"
- - "traefik.http.routers.pyload.entrypoints=web"
- - "traefik.http.services.pyload.loadbalancer.server.port=8000"
- - "docker.group=selfhost"
- "docker.group=download"
restart: unless-stopped
diff --git a/media/docker-compose.yml b/media/docker-compose.yml
index c4bb361..fffe864 100644
--- a/media/docker-compose.yml
+++ b/media/docker-compose.yml
@@ -28,16 +28,4 @@ services:
# - /dev/dri/renderD128:/dev/dri/renderD128
# - /dev/dri/card0:/dev/dri/card0
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)"
- - "traefik.http.routers.jellyfin.entrypoints=web"
- - "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
- - 'traefik.http.middlewares.jellyfin-mw.headers.customResponseHeaders.X-Robots-Tag=noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex'
- - 'traefik.http.middlewares.jellyfin-mw.headers.frameDeny=true'
- - 'traefik.http.middlewares.jellyfin-mw.headers.contentTypeNosniff=true'
- - 'traefik.http.middlewares.jellyfin-mw.headers.customresponseheaders.X-XSS-PROTECTION=1'
- - 'traefik.http.middlewares.jellyfin-mw.headers.browserXSSFilter=true'
- - "traefik.http.middlewares.jellyfin-mw.headers.customFrameOptionsValue='allow-from http://jellyfin.${DOMAIN}'"
- - "traefik.http.middlewares.jellyfin-mw.headers.customrequestheaders.X-Forwarded-Proto: https"
- - 'traefik.http.routers.jellyfin.middlewares=jellyfin-mw'
- "docker.group=media"
diff --git a/monitoring/docker-compose.yaml b/monitoring/docker-compose.yaml
index 0bb4db6..a8debb3 100644
--- a/monitoring/docker-compose.yaml
+++ b/monitoring/docker-compose.yaml
@@ -9,11 +9,6 @@ services:
- web
- monitoring
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.monitoring.rule=Host(`monitoring.${DOMAIN}`)"
- - "traefik.http.routers.monitoring.entrypoints=web"
- - "traefik.http.services.monitoring.loadbalancer.server.port=3000"
- - "traefik.docker.network=web"
- "docker.group=monitoring"
environment:
- GF_DEFAULT_INSTANCE_NAME=monitoring.${DOMAIN}
@@ -62,11 +57,6 @@ services:
- ${VOLUMES_PATH}/monitoring/influxdb/:/var/lib/influxdb
- ${PWD}/influxdb.conf:/etc/influxdb/influxdb.conf:ro
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.influxdb.rule=Host(`influxdb.${DOMAIN}`)"
- - "traefik.http.routers.influxdb.entrypoints=web"
- - "traefik.http.services.influxdb.loadbalancer.server.port=8086"
- - "traefik.docker.network=web"
- "docker.group=monitoring"
@@ -79,11 +69,6 @@ services:
- dockersocket
restart: unless-stopped
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.uptimekuma.rule=Host(`uptime.${DOMAIN}`)"
- - "traefik.http.routers.uptimekuma.entrypoints=web"
- - "traefik.http.services.uptimekuma.loadbalancer.server.port=3001"
- - "traefik.docker.network=web"
- "docker.group=monitoring"
networks:
diff --git a/paperless/docker-compose.yaml b/paperless/docker-compose.yaml
index 53c1caf..6c30a30 100644
--- a/paperless/docker-compose.yaml
+++ b/paperless/docker-compose.yaml
@@ -59,11 +59,6 @@ services:
- USERMAP_GID=1000
- PAPERLESS_PRE_CONSUME_SCRIPT=/usr/src/paperless/scripts/removePdfPassword.py
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.paperless.rule=Host(`paperless.${DOMAIN}`)"
- - "traefik.http.routers.paperless.entrypoints=web"
- - "traefik.http.services.paperless.loadbalancer.server.port=8000"
- - "traefik.docker.network=web"
- "docker.group=paperless"
diff --git a/proxy/Caddyfile b/proxy/Caddyfile
new file mode 100644
index 0000000..eabf0ec
--- /dev/null
+++ b/proxy/Caddyfile
@@ -0,0 +1,52 @@
+{
+ auto_https off
+}
+
+http://whoami.lan {
+ reverse_proxy whoami:80
+}
+
+http://dashboard.lan {
+ reverse_proxy homer:8080
+}
+
+http://hassi.lan {
+# reverse_proxy homeassistant:8123
+ reverse_proxy dockerhost-1.lan:8123
+}
+
+http://zigbee2mqtt.lan {
+ reverse_proxy zigbee2mqtt:8080
+}
+
+http://jellyfin.lan {
+ reverse_proxy jellyfin:8096
+}
+
+http://paperless.lan {
+ reverse_proxy paperless-ngx:8000
+}
+
+http://download.lan {
+ reverse_proxy pyload:8000
+}
+
+http://monitoring.lan {
+ reverse_proxy grafana:3000
+}
+
+http://influxdb.lan {
+ reverse_proxy influxdb:8086
+}
+
+http://uptime.lan {
+ reverse_proxy uptime-kuma:3001
+}
+
+http://torrent.lan {
+ reverse_proxy transmission:9091
+}
+
+:80, :443 {
+ respond 404
+}
diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml
index f5f3606..b9e91d5 100644
--- a/proxy/docker-compose.yaml
+++ b/proxy/docker-compose.yaml
@@ -1,54 +1,25 @@
services:
- traefik:
- image: traefik:${TRAEFIK_VERSION}
- restart: always
+ caddy:
+ image: caddy:2
+ restart: unless-stopped
ports:
- - "80:80"
- - "443:443"
+ - 80:80
+ volumes:
+ - ${VOLUMES_PATH}/proxy/caddy/data:/data
+ - ${VOLUMES_PATH}/proxy/caddy/config:/config
+ - ./Caddyfile:/etc/caddy/Caddyfile:ro
networks:
- web
- - dockersocket
- volumes:
- - "$PWD/traefik.yml:/etc/traefik/traefik.yml"
- - "$PWD/extraProviders/:/extraProviders:ro"
- labels:
- - "traefik.enable=true"
- - "traefik.http.routers.traefik.rule=Host(`traefik.${HOSTNAME}`)"
- - "traefik.http.routers.traefik.entrypoints=web"
- - "traefik.http.services.traefik.loadbalancer.server.port=8080"
- - "docker.group=proxy"
- extra_hosts:
- - host.docker.internal:host-gateway
- depends_on:
- - docker-socket-proxy
- docker-socket-proxy:
- image: tecnativa/docker-socket-proxy
- restart: unless-stopped
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock:ro
- environment:
- # grant privileges as environment variables: https://github.com/Tecnativa/docker-socket-proxy#grant-or-revoke-access-to-certain-api-sections
- - CONTAINERS=1
- - INFO=1
+ whoami:
+ image: containous/whoami
networks:
- - dockersocket
- privileged: true
-
-
-# whoami:
-# image: containous/whoami
-# networks:
-# - web
-# labels:
-# - "traefik.enable=true"
-# - "traefik.http.routers.whoami.rule=Host(`whoami.${HOSTNAME}`)"
-# - "traefik.http.routers.whoami.entrypoints=web"
-# - "traefik.http.services.whoami.loadbalancer.server.port=80"
-# - "docker.group=proxy"
-# restart: unless-stopped
+ - web
+ labels:
+ - "docker.group=proxy"
+ restart: unless-stopped
networks:
diff --git a/proxy/traefik.yml b/proxy/traefik.yml
deleted file mode 100644
index 587f802..0000000
--- a/proxy/traefik.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-debug: true
-checkNewVersion: true
-logLevel: INFO
-#defaultEntryPoints: ["https","http"]
-defaultEntryPoints: [http]
-
-api:
- insecure: true
-
-providers:
- docker:
- exposedbydefault: false
- endpoint: "tcp://docker-socket-proxy:2375"
-
- file:
- directory: /extraProviders
-
-
-entryPoints:
- web:
- address: ':80'
-
-
diff --git a/smartHome/docker-compose.yaml b/smartHome/docker-compose.yaml
index 913fc64..026778b 100644
--- a/smartHome/docker-compose.yaml
+++ b/smartHome/docker-compose.yaml
@@ -10,10 +10,6 @@ services:
restart: unless-stopped
network_mode: host
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.hassi.rule=Host(`hassi.${DOMAIN}`)"
- - "traefik.http.routers.hassi.entrypoints=web"
- - "traefik.http.services.hassi.loadbalancer.server.port=8123"
- "docker.group=smartHome"
@@ -29,6 +25,8 @@ services:
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
- ${VOLUMES_PATH}/smartHome/mosquitto/data:/mosquitto/data
- ${VOLUMES_PATH}/smartHome/mosquitto/log:/mosquitto/log
+ labels:
+ - "docker.group=smartHome"
zigbee2mqtt:
@@ -45,10 +43,6 @@ services:
- web
- smarthome
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.zigbee2mqtt.rule=Host(`zigbee2mqtt.${DOMAIN}`)"
- - "traefik.http.routers.zigbee2mqtt.entrypoints=web"
- - "traefik.http.services.zigbee2mqtt.loadbalancer.server.port=8080"
- "docker.group=smartHome"
diff --git a/torrent/docker-compose.yaml b/torrent/docker-compose.yaml
index 506235e..6331459 100644
--- a/torrent/docker-compose.yaml
+++ b/torrent/docker-compose.yaml
@@ -18,10 +18,6 @@ services:
- 51413:51413/udp
restart: unless-stopped
labels:
- - "traefik.enable=true"
- - "traefik.http.routers.torrent.rule=Host(`torrent.${DOMAIN}`)"
- - "traefik.http.routers.torrent.entrypoints=web"
- - "traefik.http.services.torrent.loadbalancer.server.port=9091"
- "docker.group=torrent"
mem_limit: 512m
From 0c4eed770922f4a39e8e3814ec0f9c85afa6fc07 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Tue, 8 Oct 2024 16:21:51 +0200
Subject: [PATCH 5/9] Remove grafana influxdb and telegraf
---
monitoring/docker-compose.yaml | 64 -----
monitoring/influxdb.conf | 12 -
monitoring/start-influxdb-shell.sh | 1 -
proxy/Caddyfile | 8 -
start-all.sh | 1 -
start-min.sh | 10 -
telegraf/docker-compose.yaml | 37 ---
telegraf/influxdb.conf | 12 -
telegraf/telegraf_host.conf | 369 -----------------------------
telegraf/telegraf_net.conf | 155 ------------
telegraf/test-telegraf.sh | 19 --
11 files changed, 688 deletions(-)
delete mode 100644 monitoring/influxdb.conf
delete mode 100755 monitoring/start-influxdb-shell.sh
delete mode 100755 start-min.sh
delete mode 100644 telegraf/docker-compose.yaml
delete mode 100644 telegraf/influxdb.conf
delete mode 100644 telegraf/telegraf_host.conf
delete mode 100644 telegraf/telegraf_net.conf
delete mode 100644 telegraf/test-telegraf.sh
diff --git a/monitoring/docker-compose.yaml b/monitoring/docker-compose.yaml
index a8debb3..4a70580 100644
--- a/monitoring/docker-compose.yaml
+++ b/monitoring/docker-compose.yaml
@@ -1,79 +1,15 @@
services:
- grafana:
- image: grafana/grafana:${GRAFANA_VERSION}
- restart: unless-stopped
- expose:
- - "3000"
- networks:
- - web
- - monitoring
- labels:
- - "docker.group=monitoring"
- environment:
- - GF_DEFAULT_INSTANCE_NAME=monitoring.${DOMAIN}
- - GF_SERVER_ROOT_URL=http://monitoring.${DOMAIN}
- - GF_SERVER_DOMAIN=monitoring.${DOMAIN}
- - GF_SERVER_SERVE_FROM_SUB_PATH=true
- - GF_SECURITY_DISABLE_GRAVATAR=true
- - GF_AUTH_ANONYMOUS_ENABLED=true
- - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
- - GF_DATABASE_TYPE=postgres
- - GF_DATABASE_HOST=grafanadb:5432
- - GF_DATABASE_SSL_MODE=disable
- - GF_DATABASE_NAME=grafana
- - GF_DATABASE_USER=${POSTGRES_USER}
- - GF_DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- - GF_INSTALL_PLUGINS=flant-statusmap-panel
- depends_on:
- - influxdb
- - grafanadb
-
-
- grafanadb:
- image: postgres:${POSTGRES_VERSION}
- volumes:
- - ${VOLUMES_PATH}/monitoring/grafanadb:/var/lib/postgresql/data
- networks:
- - monitoring
- restart: unless-stopped
- environment:
- - POSTGRES_DB=grafana
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- labels:
- - "docker.group=monitoring"
-
-
- influxdb:
- image: influxdb:${INFLUXDB_VERSION}
- restart: unless-stopped
- networks:
- - web
- - monitoring
- environment:
- - INFLUXDB_MONITOR_STORE_ENABLED=false
- volumes:
- - ${VOLUMES_PATH}/monitoring/influxdb/:/var/lib/influxdb
- - ${PWD}/influxdb.conf:/etc/influxdb/influxdb.conf:ro
- labels:
- - "docker.group=monitoring"
-
-
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- ${VOLUMES_PATH}/monitoring/uptime-kuma-data:/app/data
networks:
- web
- - dockersocket
restart: unless-stopped
labels:
- "docker.group=monitoring"
networks:
- monitoring:
web:
external: true
- dockersocket:
- external: true
diff --git a/monitoring/influxdb.conf b/monitoring/influxdb.conf
deleted file mode 100644
index 9244c34..0000000
--- a/monitoring/influxdb.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-[meta]
- dir = "/var/lib/influxdb/meta"
-
-[data]
- dir = "/var/lib/influxdb/data"
- wal-dir = "/var/lib/influxdb/wal"
- max-concurrent-compactions = 1
-
-[monitor]
- store-enabled = false
- store-database = "_internal"
- store-interval = "10s"
diff --git a/monitoring/start-influxdb-shell.sh b/monitoring/start-influxdb-shell.sh
deleted file mode 100755
index 076d191..0000000
--- a/monitoring/start-influxdb-shell.sh
+++ /dev/null
@@ -1 +0,0 @@
-docker run --rm --link=monitoring_influxdb_1 -it --net monitoring_monitoring influxdb:1.8 influx -host influxdb
diff --git a/proxy/Caddyfile b/proxy/Caddyfile
index eabf0ec..fcc0f48 100644
--- a/proxy/Caddyfile
+++ b/proxy/Caddyfile
@@ -31,14 +31,6 @@ http://download.lan {
reverse_proxy pyload:8000
}
-http://monitoring.lan {
- reverse_proxy grafana:3000
-}
-
-http://influxdb.lan {
- reverse_proxy influxdb:8086
-}
-
http://uptime.lan {
reverse_proxy uptime-kuma:3001
}
diff --git a/start-all.sh b/start-all.sh
index f7a0476..8010786 100755
--- a/start-all.sh
+++ b/start-all.sh
@@ -7,7 +7,6 @@ function up {
up proxy;
up monitoring;
-up telegraf;
up smartHome;
up dashboard;
up download;
diff --git a/start-min.sh b/start-min.sh
deleted file mode 100755
index 92d5258..0000000
--- a/start-min.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#/bin/bash/
-
-
-function up {
- (cd "$1" && echo "[$1]" && docker compose up -d "${@:2}");
-}
-
-up proxy;
-up telegraf;
-
diff --git a/telegraf/docker-compose.yaml b/telegraf/docker-compose.yaml
deleted file mode 100644
index affa4a7..0000000
--- a/telegraf/docker-compose.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-services:
-
- host:
- image: telegraf:${TELEGRAF_VERSION}
- restart: unless-stopped
- environment:
- - HOST_MOUNT_PREFIX=/hostfs
- - HOST_PROC=/hostfs/proc
- - HOST_SYS=/hostfs/sys
- - HOST_ETC=/hostfs/etc
- - HOST_VAR=/hostfs/var
- - HOST_RUN=/hostfs/run
- volumes:
- - ./telegraf_host.conf:/etc/telegraf/telegraf.conf:ro
- - /var/run/utmp:/var/run/utmp:ro
- - /:/hostfs:ro
- network_mode: "host"
- labels:
- - "docker.group=telegraf"
-
- net:
- image: telegraf:${TELEGRAF_VERSION}
- restart: unless-stopped
- volumes:
- - ./telegraf_net.conf:/etc/telegraf/telegraf.conf:ro
- networks:
- - dockersocket
- labels:
- - "docker.group=telegraf"
- dns:
- - ${LOCAL_DNS_SERVER}
- environment:
- - "HOST_NAME=${HOST_NAME}"
-
-networks:
- dockersocket:
- external: true
diff --git a/telegraf/influxdb.conf b/telegraf/influxdb.conf
deleted file mode 100644
index 9244c34..0000000
--- a/telegraf/influxdb.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-[meta]
- dir = "/var/lib/influxdb/meta"
-
-[data]
- dir = "/var/lib/influxdb/data"
- wal-dir = "/var/lib/influxdb/wal"
- max-concurrent-compactions = 1
-
-[monitor]
- store-enabled = false
- store-database = "_internal"
- store-interval = "10s"
diff --git a/telegraf/telegraf_host.conf b/telegraf/telegraf_host.conf
deleted file mode 100644
index 4f914aa..0000000
--- a/telegraf/telegraf_host.conf
+++ /dev/null
@@ -1,369 +0,0 @@
-# Telegraf Configuration
-#
-# Telegraf is entirely plugin driven. All metrics are gathered from the
-# declared inputs, and sent to the declared outputs.
-#
-# Plugins must be declared in here to be active.
-# To deactivate a plugin, comment out the name and any variables.
-#
-# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
-# file would generate.
-#
-# Environment variables can be used anywhere in this config file, simply surround
-# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"),
-# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})
-
-# Config Sample under https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf
-
-# Global tags can be specified here in key="value" format.
-[global_tags]
- # datacenter
- dc="fzirker.lan"
-
-# Configuration for telegraf agent
-[agent]
- ## Default data collection interval for all inputs
- interval = "10s"
- ## Rounds collection interval to 'interval'
- ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
- round_interval = true
-
- ## Telegraf will send metrics to outputs in batches of at most
- ## metric_batch_size metrics.
- ## This controls the size of writes that Telegraf sends to output plugins.
- metric_batch_size = 1000
-
- ## Maximum number of unwritten metrics per output. Increasing this value
- ## allows for longer periods of output downtime without dropping metrics at the
- ## cost of higher maximum memory usage.
- metric_buffer_limit = 10000
-
- ## Collection jitter is used to jitter the collection by a random amount.
- ## Each plugin will sleep for a random time within jitter before collecting.
- ## This can be used to avoid many plugins querying things like sysfs at the
- ## same time, which can have a measurable effect on the system.
- collection_jitter = "0s"
-
- ## Default flushing interval for all outputs. Maximum flush_interval will be
- ## flush_interval + flush_jitter
- flush_interval = "10s"
- ## Jitter the flush interval by a random amount. This is primarily to avoid
- ## large write spikes for users running a large number of telegraf instances.
- ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
- flush_jitter = "0s"
-
- ## By default or when set to "0s", precision will be set to the same
- ## timestamp order as the collection interval, with the maximum being 1s.
- ## ie, when interval = "10s", precision will be "1s"
- ## when interval = "250ms", precision will be "1ms"
- ## Precision will NOT be used for service inputs. It is up to each individual
- ## service input to set the timestamp at the appropriate precision.
- ## Valid time units are "ns", "us" (or "µs"), "ms", "s".
- precision = ""
-
- ## Override default hostname, if empty use os.Hostname()
- hostname = ""
- ## If set to true, do no set the "host" tag in the telegraf agent.
- omit_hostname = false
-
-
-###############################################################################
-# OUTPUT PLUGINS #
-###############################################################################
-
-# Configuration for sending metrics to InfluxDB
-[[outputs.influxdb]]
- ## The full HTTP or UDP URL for your InfluxDB instance.
- ##
- ## Multiple URLs can be specified for a single cluster, only ONE of the
- ## urls will be written to each interval.
- # urls = ["unix:///var/run/influxdb.sock"]
- # urls = ["udp://127.0.0.1:8089"]
- # urls = ["http://127.0.0.1:8086"]
- urls = ["http://influxdb.lan"] # required
-
-
-###############################################################################
-# INPUT PLUGINS #
-###############################################################################
-
-
-# Read metrics about cpu usage
-[[inputs.cpu]]
- ## Whether to report per-cpu stats or not
- percpu = true
- ## Whether to report total system cpu stats or not
- totalcpu = true
- ## If true, collect raw CPU time metrics.
- collect_cpu_time = false
- ## If true, compute and report the sum of all non-idle CPU states.
- report_active = false
-
-
-# Read metrics about disk usage by mount point
-[[inputs.disk]]
- ## By default stats will be gathered for all mount points.
- ## Set mount_points will restrict the stats to only the specified mount points.
- mount_points = ["/hostfs", "/hostfs/mnt/sdcard"]
-
- ## Ignore mount points by filesystem type.
- ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
-
-[[inputs.disk]]
- # Festplatte lange schlafen lassen :)
- interval = "12h"
- mount_points = ["/hostfs/mnt/wdhdd"]
-
-
-# Read metrics about disk IO by device
-[[inputs.diskio]]
- ## By default, telegraf will gather stats for all devices including
- ## disk partitions.
- ## Setting devices will restrict the stats to the specified devices.
- # devices = ["sda", "sdb", "vd*"]
- ## Uncomment the following line if you need disk serial numbers.
- # skip_serial_number = false
- #
- ## On systems which support it, device metadata can be added in the form of
- ## tags.
- ## Currently only Linux is supported via udev properties. You can view
- ## available properties for a device by running:
- ## 'udevadm info -q property -n /dev/sda'
- ## Note: Most, but not all, udev properties can be accessed this way. Properties
- ## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
- # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
- #
- ## Using the same metadata source as device_tags, you can also customize the
- ## name of the device via templates.
- ## The 'name_templates' parameter is a list of templates to try and apply to
- ## the device. The template may contain variables in the form of '$PROPERTY' or
- ## '${PROPERTY}'. The first template which does not contain any variables not
- ## present for the device is used as the device name tag.
- ## The typical use case is for LVM volumes, to get the VG/LV name instead of
- ## the near-meaningless DM-0 name.
- # name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]
-
-
-# Get kernel statistics from /proc/stat
-[[inputs.kernel]]
- # no configuration
-
-
-# Read metrics about memory usage
-[[inputs.mem]]
- # no configuration
-
-
-# Get the number of processes and group them by status
-[[inputs.processes]]
- # no configuration
-
-
-# Read metrics about swap memory usage
-[[inputs.swap]]
- # no configuration
-
-
-# Read metrics about system load & uptime
-[[inputs.system]]
- ## Uncomment to remove deprecated metrics.
- # fielddrop = ["uptime_format"]
-
-
-# # Read metrics about network interface usage
-[[inputs.net]]
-## By default, telegraf gathers stats from any up interface (excluding loopback)
-## Setting interfaces will tell it to gather these explicit interfaces,
-## regardless of status.
-##
-interfaces = ["enp2s0"]
-##
-## On linux systems telegraf also collects protocol stats.
-## Setting ignore_protocol_stats to true will skip reporting of protocol metrics.
-##
-# ignore_protocol_stats = false
-##
-
-
-# # Read TCP metrics such as established, time wait and sockets counts.
-[[inputs.netstat]]
- # no configuration
-
-
-# Collect kernel snmp counters and network interface statistics
-[[inputs.nstat]]
- ## file paths for proc files. If empty default paths will be used:
- ## /proc/net/netstat, /proc/net/snmp, /proc/net/snmp6
- ## These can also be overridden with env variables, see README.
- proc_net_netstat = "/proc/net/netstat"
- proc_net_snmp = "/proc/net/snmp"
- proc_net_snmp6 = "/proc/net/snmp6"
- ## dump metrics with 0 values too
- dump_zeros = true
-
-
-# # Monitor process cpu and memory usage
-# [[inputs.procstat]]
-# ## PID file to monitor process
-# pid_file = "/var/run/nginx.pid"
-# ## executable name (ie, pgrep )
-# # exe = "nginx"
-# ## pattern as argument for pgrep (ie, pgrep -f )
-# # pattern = "nginx"
-# ## user as argument for pgrep (ie, pgrep -u )
-# # user = "nginx"
-# ## Systemd unit name
-# # systemd_unit = "nginx.service"
-# ## CGroup name or path
-# # cgroup = "systemd/system.slice/nginx.service"
-#
-# ## Windows service name
-# # win_service = ""
-#
-# ## override for process_name
-# ## This is optional; default is sourced from /proc//status
-# # process_name = "bar"
-#
-# ## Field name prefix
-# # prefix = ""
-#
-# ## When true add the full cmdline as a tag.
-# # cmdline_tag = false
-#
-# ## Add PID as a tag instead of a field; useful to differentiate between
-# ## processes whose tags are otherwise the same. Can create a large number
-# ## of series, use judiciously.
-# # pid_tag = false
-#
-# ## Method to use when finding process IDs. Can be one of 'pgrep', or
-# ## 'native'. The pgrep finder calls the pgrep executable in the PATH while
-# ## the native finder performs the search directly in a manor dependent on the
-# ## platform. Default is 'pgrep'
-# # pid_finder = "pgrep"
-
-
-# # Read metrics from storage devices supporting S.M.A.R.T.
-# [[inputs.smart]]
-# ## Optionally specify the path to the smartctl executable
-# # path = "/usr/bin/smartctl"
-#
-# ## On most platforms smartctl requires root access.
-# ## Setting 'use_sudo' to true will make use of sudo to run smartctl.
-# ## Sudo must be configured to to allow the telegraf user to run smartctl
-# ## without a password.
-# # use_sudo = false
-#
-# ## Skip checking disks in this power mode. Defaults to
-# ## "standby" to not wake up disks that have stoped rotating.
-# ## See --nocheck in the man pages for smartctl.
-# ## smartctl version 5.41 and 5.42 have faulty detection of
-# ## power mode and might require changing this value to
-# ## "never" depending on your disks.
-# # nocheck = "standby"
-#
-# ## Gather all returned S.M.A.R.T. attribute metrics and the detailed
-# ## information from each drive into the 'smart_attribute' measurement.
-# # attributes = false
-#
-# ## Optionally specify devices to exclude from reporting.
-# # excludes = [ "/dev/pass6" ]
-#
-# ## Optionally specify devices and device type, if unset
-# ## a scan (smartctl --scan) for S.M.A.R.T. devices will
-# ## done and all found will be included except for the
-# ## excluded in excludes.
-# # devices = [ "/dev/ada0 -d atacam" ]
-#
-# ## Timeout for the smartctl command to complete.
-# # timeout = "30s"
-
-
-# # Sysstat metrics collector
-# [[inputs.sysstat]]
-# ## Path to the sadc command.
-# #
-# ## Common Defaults:
-# ## Debian/Ubuntu: /usr/lib/sysstat/sadc
-# ## Arch: /usr/lib/sa/sadc
-# ## RHEL/CentOS: /usr/lib64/sa/sadc
-# sadc_path = "/usr/lib/sa/sadc" # required
-#
-# ## Path to the sadf command, if it is not in PATH
-# # sadf_path = "/usr/bin/sadf"
-#
-# ## Activities is a list of activities, that are passed as argument to the
-# ## sadc collector utility (e.g: DISK, SNMP etc...)
-# ## The more activities that are added, the more data is collected.
-# # activities = ["DISK"]
-#
-# ## Group metrics to measurements.
-# ##
-# ## If group is false each metric will be prefixed with a description
-# ## and represents itself a measurement.
-# ##
-# ## If Group is true, corresponding metrics are grouped to a single measurement.
-# # group = true
-#
-# ## Options for the sadf command. The values on the left represent the sadf
-# ## options and the values on the right their description (which are used for
-# ## grouping and prefixing metrics).
-# ##
-# ## Run 'sar -h' or 'man sar' to find out the supported options for your
-# ## sysstat version.
-# [inputs.sysstat.options]
-# -C = "cpu"
-# -B = "paging"
-# -b = "io"
-# -d = "disk" # requires DISK activity
-# "-n ALL" = "network"
-# "-P ALL" = "per_cpu"
-# -q = "queue"
-# -R = "mem"
-# -r = "mem_util"
-# -S = "swap_util"
-# -u = "cpu_util"
-# -v = "inode"
-# -W = "swap"
-# -w = "task"
-# # -H = "hugepages" # only available for newer linux distributions
-# # "-I ALL" = "interrupts" # requires INT activity
-#
-# ## Device tags can be used to add additional tags for devices.
-# ## For example the configuration below adds a tag vg with value rootvg for
-# ## all metrics with sda devices.
-# # [[inputs.sysstat.device_tags.sda]]
-# # vg = "rootvg"
-
-
-# Gather systemd units state
-# [[inputs.systemd_units]]
-# ## Set timeout for systemctl execution
-# # timeout = "1s"
-# #
-# ## Filter for a specific unit type, default is "service", other possible
-# ## values are "socket", "target", "device", "mount", "automount", "swap",
-# ## "timer", "path", "slice" and "scope ":
- # unittype = "service"
-
-# # Read metrics about temperature
-[[inputs.temp]]
- # no configuration
-
-
-# # Reads metrics from a SSL certificate
-#[[inputs.x509_cert]]
- ## List certificate sources
- #sources = ["/etc/ssl/certs/ssl-cert-snakeoil.pem", "tcp://example.org:443"]
- #sources = ["https://florianzirker.de:443", "https://cloud.florianzirker.de:443", "https://wallabag.florianzirker.de:443", "https://gitea.florianzirker.de:443", "https://meet.florianzirker.de:443", "https://www.feuerwehr-kapsweyer.de:443"]
-
- ## Timeout for SSL connection
- # timeout = "5s"
-
- ## Pass a different name into the TLS request (Server Name Indication)
- ## example: server_name = "myhost.example.org"
- # server_name = ""
-
- ## Optional TLS Config
- # tls_ca = "/etc/telegraf/ca.pem"
- # tls_cert = "/etc/telegraf/cert.pem"
- # tls_key = "/etc/telegraf/key.pem"
diff --git a/telegraf/telegraf_net.conf b/telegraf/telegraf_net.conf
deleted file mode 100644
index 8c22c0d..0000000
--- a/telegraf/telegraf_net.conf
+++ /dev/null
@@ -1,155 +0,0 @@
-# Telegraf Configuration
-#
-# Telegraf is entirely plugin driven. All metrics are gathered from the
-# declared inputs, and sent to the declared outputs.
-#
-# Plugins must be declared in here to be active.
-# To deactivate a plugin, comment out the name and any variables.
-#
-# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
-# file would generate.
-#
-# Environment variables can be used anywhere in this config file, simply surround
-# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"),
-# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})
-
-# Config Sample under https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf
-
-# Global tags can be specified here in key="value" format.
-[global_tags]
- # datacenter
- dc="fzirker.lan"
-
-# Configuration for telegraf agent
-[agent]
- ## Default data collection interval for all inputs
- interval = "10s"
- ## Rounds collection interval to 'interval'
- ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
- round_interval = true
-
- ## Telegraf will send metrics to outputs in batches of at most
- ## metric_batch_size metrics.
- ## This controls the size of writes that Telegraf sends to output plugins.
- metric_batch_size = 1000
-
- ## Maximum number of unwritten metrics per output. Increasing this value
- ## allows for longer periods of output downtime without dropping metrics at the
- ## cost of higher maximum memory usage.
- metric_buffer_limit = 10000
-
- ## Collection jitter is used to jitter the collection by a random amount.
- ## Each plugin will sleep for a random time within jitter before collecting.
- ## This can be used to avoid many plugins querying things like sysfs at the
- ## same time, which can have a measurable effect on the system.
- collection_jitter = "0s"
-
- ## Default flushing interval for all outputs. Maximum flush_interval will be
- ## flush_interval + flush_jitter
- flush_interval = "10s"
- ## Jitter the flush interval by a random amount. This is primarily to avoid
- ## large write spikes for users running a large number of telegraf instances.
- ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
- flush_jitter = "0s"
-
- ## By default or when set to "0s", precision will be set to the same
- ## timestamp order as the collection interval, with the maximum being 1s.
- ## ie, when interval = "10s", precision will be "1s"
- ## when interval = "250ms", precision will be "1ms"
- ## Precision will NOT be used for service inputs. It is up to each individual
- ## service input to set the timestamp at the appropriate precision.
- ## Valid time units are "ns", "us" (or "µs"), "ms", "s".
- precision = ""
-
- ## Override default hostname, if empty use os.Hostname()
- hostname = "${HOST_NAME}"
- ## If set to true, do no set the "host" tag in the telegraf agent.
- omit_hostname = false
-
-
-###############################################################################
-# OUTPUT PLUGINS #
-###############################################################################
-
-# Configuration for sending metrics to InfluxDB
-[[outputs.influxdb]]
- ## The full HTTP or UDP URL for your InfluxDB instance.
- ##
- ## Multiple URLs can be specified for a single cluster, only ONE of the
- ## urls will be written to each interval.
- # urls = ["unix:///var/run/influxdb.sock"]
- # urls = ["udp://127.0.0.1:8089"]
- # urls = ["http://127.0.0.1:8086"]
- urls = ["http://influxdb.lan"] # required
-
-
-###############################################################################
-# INPUT PLUGINS #
-###############################################################################
-
-# Read metrics about docker containers
-[[inputs.docker]]
- ## Docker Endpoint
- ## To use TCP, set endpoint = "tcp://[ip]:[port]"
- ## To use environment variables (ie, docker-machine), set endpoint = "ENV"
- #endpoint = "unix:///var/run/docker.sock"
- endpoint = "tcp://docker-socket-proxy:2375"
-
- ## Set to true to collect Swarm metrics(desired_replicas, running_replicas)
- gather_services = false
-
- ## Only collect metrics for these containers, collect all if empty
- container_names = []
-
- ## Set the source tag for the metrics to the container ID hostname, eg first 12 chars
- source_tag = false
-
- ## Containers to include and exclude. Globs accepted.
- ## Note that an empty array for both will include all containers
- container_name_include = []
- container_name_exclude = []
-
- ## Container states to include and exclude. Globs accepted.
- ## When empty only containers in the "running" state will be captured.
- ## example: container_state_include = ["created", "restarting", "running", "removing", "paused", "exited", "dead"]
- ## example: container_state_exclude = ["created", "restarting", "running", "removing", "paused", "exited", "dead"]
- # container_state_include = []
- # container_state_exclude = []
-
- ## Timeout for docker list, info, and stats commands
- timeout = "5s"
-
- ## Whether to report for each container per-device blkio (8:0, 8:1...) and
- ## network (eth0, eth1, ...) stats or not
- perdevice = true
-
- ## Whether to report for each container total blkio and network stats or not
- total = false
-
- ## Which environment variables should we use as a tag
- ##tag_env = ["JAVA_HOME", "HEAP_SIZE"]
-
- ## docker labels to include and exclude as tags. Globs accepted.
- ## Note that an empty array for both will include all labels as tags
- docker_label_include = []
- docker_label_exclude = []
-
- ## Optional TLS Config
- # tls_ca = "/etc/telegraf/ca.pem"
- # tls_cert = "/etc/telegraf/cert.pem"
- # tls_key = "/etc/telegraf/key.pem"
- ## Use TLS but skip chain & host verification
- # insecure_skip_verify = false
-
-
-# # Monitor disks' temperatures using hddtemp
-# [[inputs.hddtemp]]
-# ## By default, telegraf gathers temps data from all disks detected by the
-# ## hddtemp.
-# ##
-# ## Only collect temps from the selected disks.
-# ##
-# ## A * as the device name will return the temperature values of all disks.
-# ##
-# # address = "127.0.0.1:7634"
-# # devices = ["sda", "*"]
diff --git a/telegraf/test-telegraf.sh b/telegraf/test-telegraf.sh
deleted file mode 100644
index 0dce934..0000000
--- a/telegraf/test-telegraf.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-# call this script like "./test-telegraf.sh net:cpu"
-
-docker run \
- --rm \
- --volume $(pwd)/telegraf/telegraf.conf:/telegraf.conf \
- --volume /:/hostfs:ro \
- --volume /var/run/utmp:/var/run/utmp:ro \
- --volume /var/run/docker.sock:/var/run/docker.sock:ro \
- -e HOST_ETC=/hostfs/etc \
- -e HOST_PROC=/hostfs/proc \
- -e HOST_SYS=/hostfs/sys \
- -e HOST_VAR=/hostfs/var \
- -e HOST_RUN=/hostfs/run \
- -e HOST_MOUNT_PREFIX=/hostfs \
- telegraf \
- telegraf \
- --config /telegraf.conf \
- --input-filter $1 \
- --test
From bce4a0ba8fa8e5cc4dc33736b3629a9392740643 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Wed, 11 Dec 2024 15:35:57 +0100
Subject: [PATCH 6/9] improve caddy
---
.editorconfig | 9 +++++++
proxy/Caddyfile | 49 ++++++++++++++++++++++-----------------
proxy/docker-compose.yaml | 2 ++
3 files changed, 39 insertions(+), 21 deletions(-)
diff --git a/.editorconfig b/.editorconfig
index b7a329e..8237425 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -22,3 +22,12 @@ end_of_line = lf
indent_style = space
indent_size = 4
tab_width = 4
+
+[Caddyfile]
+indent_style = tab
+indent_size = 4
+tab_width = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/proxy/Caddyfile b/proxy/Caddyfile
index fcc0f48..7352500 100644
--- a/proxy/Caddyfile
+++ b/proxy/Caddyfile
@@ -1,44 +1,51 @@
{
- auto_https off
+ auto_https off
+ log default {
+ output stdout
+ format console
+ }
}
-http://whoami.lan {
- reverse_proxy whoami:80
+http://whoami.{$DOMAIN} {
+ reverse_proxy whoami:80
}
-http://dashboard.lan {
- reverse_proxy homer:8080
+http://dashboard.{$DOMAIN} {
+ reverse_proxy homer:8080
}
-http://hassi.lan {
-# reverse_proxy homeassistant:8123
- reverse_proxy dockerhost-1.lan:8123
+http://hassi.{$DOMAIN} {
+ # reverse_proxy homeassistant:8123
+ reverse_proxy {host}:8123
}
-http://zigbee2mqtt.lan {
- reverse_proxy zigbee2mqtt:8080
+http://zigbee2mqtt.{$DOMAIN} {
+ reverse_proxy zigbee2mqtt:8080
}
-http://jellyfin.lan {
- reverse_proxy jellyfin:8096
+http://jellyfin.{$DOMAIN} {
+ reverse_proxy jellyfin:8096
}
-http://paperless.lan {
- reverse_proxy paperless-ngx:8000
+http://paperless.{$DOMAIN} {
+ reverse_proxy paperless-ngx:8000
}
-http://download.lan {
- reverse_proxy pyload:8000
+http://download.{$DOMAIN} {
+ reverse_proxy pyload:8000
}
-http://uptime.lan {
- reverse_proxy uptime-kuma:3001
+http://uptime.{$DOMAIN} {
+ reverse_proxy uptime-kuma:3001
}
-http://torrent.lan {
- reverse_proxy transmission:9091
+http://torrent.{$DOMAIN} {
+ reverse_proxy transmission:9091
}
:80, :443 {
- respond 404
+ respond "404 Not Found" 404
+ handle_errors {
+ respond "{err.status_code} {err.status_text}" {err.status_code}
+ }
}
diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml
index b9e91d5..1a53113 100644
--- a/proxy/docker-compose.yaml
+++ b/proxy/docker-compose.yaml
@@ -11,6 +11,8 @@ services:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
networks:
- web
+ environment:
+ - DOMAIN=${DOMAIN}
whoami:
From fc86424caa7abdfe82021bd3f853554acc076f1f Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Mon, 10 Feb 2025 18:32:09 +0100
Subject: [PATCH 7/9] improvements
---
paperless/docker-compose.yaml | 5 ++++-
torrent/docker-compose.yaml | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/paperless/docker-compose.yaml b/paperless/docker-compose.yaml
index 6c30a30..20b0079 100644
--- a/paperless/docker-compose.yaml
+++ b/paperless/docker-compose.yaml
@@ -53,11 +53,13 @@ services:
- PAPERLESS_OCR_LANGUAGES=deu eng
- PAPERLESS_URL=http://paperless.${DOMAIN}
- PAPERLESS_OCR_LANGUAGE=deu
- - PAPERLESS_FILENAME_FORMAT={correspondent}/{created} {title}
+ #- PAPERLESS_FILENAME_FORMAT={correspondent}/{created} {title}
+ - PAPERLESS_FILENAME_FORMAT={{ correspondent }}/{{ created }} {{ title }}
- PAPERLESS_CONSUMER_POLLING=60
- USERMAP_UID=1000
- USERMAP_GID=1000
- PAPERLESS_PRE_CONSUME_SCRIPT=/usr/src/paperless/scripts/removePdfPassword.py
+ - PAPERLESS_OCR_USER_ARGS=${USER_ARGS_JSON}
labels:
- "docker.group=paperless"
@@ -66,3 +68,4 @@ networks:
paperless:
web:
external: true
+
diff --git a/torrent/docker-compose.yaml b/torrent/docker-compose.yaml
index 6331459..f5b6923 100644
--- a/torrent/docker-compose.yaml
+++ b/torrent/docker-compose.yaml
@@ -13,7 +13,7 @@ services:
networks:
- web
ports:
-# - 9091:9091
+ - 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
From e2666bdfadc8a0eaa2365e6e8b24e05332db7928 Mon Sep 17 00:00:00 2001
From: Florian Zirker
Date: Fri, 14 Mar 2025 13:45:01 +0100
Subject: [PATCH 8/9] enable https with caddy root ca
---
proxy/Caddyfile | 117 +++++++++++++++++++++++++-------------
proxy/docker-compose.yaml | 6 ++
proxy/web/default.css | 13 +++++
proxy/web/index.html | 72 +++++++++++++++++++++++
4 files changed, 167 insertions(+), 41 deletions(-)
create mode 100644 proxy/web/default.css
create mode 100644 proxy/web/index.html
diff --git a/proxy/Caddyfile b/proxy/Caddyfile
index 7352500..c155caf 100644
--- a/proxy/Caddyfile
+++ b/proxy/Caddyfile
@@ -1,51 +1,86 @@
{
- auto_https off
+ auto_https disable_redirects
+ local_certs
+ pki {
+ ca local {
+ name "{$LOCAL_CA_NAME}"
+ }
+ }
log default {
output stdout
format console
}
}
-http://whoami.{$DOMAIN} {
- reverse_proxy whoami:80
-}
-
-http://dashboard.{$DOMAIN} {
- reverse_proxy homer:8080
-}
-
-http://hassi.{$DOMAIN} {
- # reverse_proxy homeassistant:8123
- reverse_proxy {host}:8123
-}
-
-http://zigbee2mqtt.{$DOMAIN} {
- reverse_proxy zigbee2mqtt:8080
-}
-
-http://jellyfin.{$DOMAIN} {
- reverse_proxy jellyfin:8096
-}
-
-http://paperless.{$DOMAIN} {
- reverse_proxy paperless-ngx:8000
-}
-
-http://download.{$DOMAIN} {
- reverse_proxy pyload:8000
-}
-
-http://uptime.{$DOMAIN} {
- reverse_proxy uptime-kuma:3001
-}
-
-http://torrent.{$DOMAIN} {
- reverse_proxy transmission:9091
-}
-
-:80, :443 {
- respond "404 Not Found" 404
+(errorhandler) {
handle_errors {
- respond "{err.status_code} {err.status_text}" {err.status_code}
+ root * /usr/share/caddy/web
+ rewrite * /error.html
+ templates
+ file_server {
+ status {err.status_code}
+ }
}
}
+
+(localtls) {
+ tls internal
+}
+
+whoami.{$DOMAIN} http://whoami.{$DOMAIN} {
+ reverse_proxy whoami:80
+ import errorhandler
+}
+
+dashboard.{$DOMAIN} http://dashboard.{$DOMAIN} {
+ reverse_proxy homer:8080
+ import errorhandler
+}
+
+hassi.{$DOMAIN} http://hassi.{$DOMAIN} {
+ # reverse_proxy homeassistant:8123
+ reverse_proxy {host}:8123
+ import errorhandler
+}
+
+zigbee2mqtt.{$DOMAIN} http://zigbee2mqtt.{$DOMAIN} {
+ reverse_proxy zigbee2mqtt:8080
+ import errorhandler
+}
+
+jellyfin.{$DOMAIN} http://jellyfin.{$DOMAIN} {
+ reverse_proxy jellyfin:8096
+ import errorhandler
+}
+
+paperless.{$DOMAIN} http://paperless.{$DOMAIN} {
+ reverse_proxy paperless-ngx:8000
+ import errorhandler
+}
+
+download.{$DOMAIN} http://download.{$DOMAIN} {
+ reverse_proxy pyload:8000
+ import errorhandler
+}
+
+uptime.{$DOMAIN} http://uptime.{$DOMAIN} {
+ reverse_proxy uptime-kuma:3001
+ import errorhandler
+}
+
+torrent.{$DOMAIN} http://torrent.{$DOMAIN} {
+ reverse_proxy transmission:9091
+ import errorhandler
+}
+
+root-ca.{$DOMAIN} http://root-ca.{$DOMAIN} {
+ file_server * {
+ root /usr/share/caddy/web
+ hide .git Readme.md
+ }
+ file_server /root.crt {
+ root /data/caddy/pki/authorities/local/
+ hide *.key
+ }
+ import errorhandler
+}
diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml
index 1a53113..2870b0b 100644
--- a/proxy/docker-compose.yaml
+++ b/proxy/docker-compose.yaml
@@ -5,14 +5,20 @@ services:
restart: unless-stopped
ports:
- 80:80
+ - 443:443
+ - "443:443/udp"
volumes:
- ${VOLUMES_PATH}/proxy/caddy/data:/data
- ${VOLUMES_PATH}/proxy/caddy/config:/config
- ./Caddyfile:/etc/caddy/Caddyfile:ro
+ - ./web:/usr/share/caddy/web:ro
networks:
- web
environment:
- DOMAIN=${DOMAIN}
+ - LOCAL_CA_NAME=${LOCAL_CA_NAME}
+ cap_add:
+ - cap_net_bind_service
whoami:
diff --git a/proxy/web/default.css b/proxy/web/default.css
new file mode 100644
index 0000000..a4c1d6d
--- /dev/null
+++ b/proxy/web/default.css
@@ -0,0 +1,13 @@
+:root {
+ max-width: 80ch;
+ padding: 3em 1em;
+ margin: auto;
+ font-size: 1.25em;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+footer {
+ position: absolute;
+ bottom: 0;
+ height: 50px;
+}
diff --git a/proxy/web/index.html b/proxy/web/index.html
new file mode 100644
index 0000000..76a3485
--- /dev/null
+++ b/proxy/web/index.html
@@ -0,0 +1,72 @@
+”
+
+
+
+
+ Containerize Root-CA
+
+
+
+
+
+
Containerize Root-CA
+
+
+ Caddy dient als lokale Zertifizierungsstelle (CA) um eigene lokale Zertifikate zu signieren.
+ Details siehe Caddy Doku.
+
+
+
+ Führe folgendes aus:
+
+
+ Klicken sie hier um das CA-Zertifikat von Caddy herunter
+ zu laden.
+
+
+
+ Installiere das caddy-root-ca.crt in den Windwos Truststore.
+ Öffne die Datei mit Doppelklick und drücke "Zertifikat installieren".
+ Wähle "Aktueller Benutzer" und den Zertifikatspeicher "Vertrauenswürdige Stammzertifizierungsstellen"
+
+
+
+ Installiere das caddy-root-ca.crt manuell in deinen Browser. Chrome benutzt den Zertifikatsspeicher vom
+ Betriebsystem.
+
+
+
+ Um das CA-Certifikat in den Linux-Truststore zu installieren führen Sie folgende Befehle aus:
+