Nachdem es wohl immer mal Probleme mit dem NPM zu geben scheint, habe ich mal eine Testinstallation mit Caddy anstelle von NPM aufgesetzt.
Der Caddy Server hat den Vorteil, dass er sich selbst um die Zertifikate kümmert.
Anstelle des docker-compose.yml aus der Installationsanleitung (Anleitung) verwendet man folgendes File:
version: '3.0'
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator
ports:
- '5000:5000'
- '5010:5010'
- '5020:5020'
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys:/alarmiatorserver/plugins/inbound/katsys
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
caddy:
networks:
- alarmiator-network
image: caddy:2.6.4-alpine
restart: always
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
alarm-db:
alarm-katsys:
alarm-public-img:
alarm-uploads:
alarm-logs:
caddy_data:
caddy_config:
gleichzeitg erstellt man im gleichen Verzeichnis eine Datei mit dem Namen Caddyfile
mit folgendem Inhalt:
(proxy_options) {
header_up Host {host}
header_up X-Forwarded-Scheme {scheme}
header_up X-Real-IP {remote_host}
}
alarmiator.example.com {
handle_path /api/* {
reverse_proxy alarmiator_service:5010 {
import proxy_options
}
}
handle /socket.io/* {
reverse_proxy alarmiator_service:5020 {
import proxy_options
}
}
handle /spaceport/socket.io/* {
reverse_proxy alarmiator_service:5555 {
import proxy_options
}
}
handle {
reverse_proxy alarmiator_service:5000 {
import proxy_options
}
}
}
wobei man alarmiator.example.com
durch den passenden Domainnamen ersetzt.
Danach startet man die Konfig, wie in der Anleitung beschrieben:
docker compose up -d
Die Konfiguration von Caddy erfolgt durch das Caddyfile. Eine grafische Oberfläche wie der NPM besitzt der Caddy Server nicht.
Anmerkung: Im Gegensatz zur offiziellen Anleitung werden die Ports 5000, 5010 und 5020 durchgereicht. Leider haben einige Router Probleme, eine auf sie selbst gemappte Domain anzusprechen, und so hat man dann die Möglichkeit, Wallboards und GUI über die internen IP Adressen anzusprechen.
1 „Gefällt mir“
Dazza
9. Mai 2023 um 05:21
2
Hey,
sehr cool. Danke fürs Teilen!
Wir hatten uns für den NGINX Proxy Manager entschieden, da für viele Nutzer eine GUI am einfachsten ist und er ja doch relativ easy zum Aufsetzen ist. Was mich persönlich daran stört ist der Flag „Force SSL“. Wenn man diesen setzt erneuert er nicht immer automatisch das SSL Zertifikat kurz vor Ablauf. Da unsere Apps sowieso nur per Https anfragen ist das generell nur ein Problem, wenn Nutzer im Browser HTTP verwenden, obwohl die meisten Browser das ja mittlerweile auch enforcen.
Ich würde das selber mal ausprobieren und einen Link in unser Handbuch packen damit " Konsolenaffine" Nutzer deinen Beitrag als Alternative sehen können
Danke dir!
Nachdem ich etwas weiter mit Caddy rumgespielt habe, gibt es ein kleines Update:
Primitiver Health-Check für den Caddy Container
Es wird das Config-Verzecihnis anstatt der Configdatei gemountet
Es wird eine eMail für die Zertifizierungsstelle hinterlegt
Setze HSTS Header
Entferne Server Header
docker-compose.yml:
version: '3.0'
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator
ports:
- '5000:5000'
- '5010:5010'
- '5020:5020'
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys:/alarmiatorserver/plugins/inbound/katsys
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
caddy:
networks:
- alarmiator-network
image: caddy:2.6.4-alpine
restart: always
ports:
- "80:80"
- "443:443"
- "443:443/udp"
healthcheck:
test: wget -q -O /dev/null http://localhost || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
- caddy_data:/data
- caddy_config:/config
volumes:
alarm-db:
alarm-katsys:
alarm-public-img:
alarm-uploads:
alarm-logs:
caddy_data:
caddy_config:
Im Verzeichnis /home/alarmitor
erstellt man ein Verzeichnis caddy
und darin die Datei Caddyfile
mit folgendem Inhalt:
(proxy_options) {
header_up Host {host}
header_up X-Forwarded-Scheme {scheme}
header_up X-Real-IP {remote_host}
header_down Strict-Transport-Security max-age=31536000
}
localhost:80 {
respond 200
}
alarmiator.example.com {
tls alarmiator@example.com
header {
-Server
}
handle_path /api/* {
reverse_proxy alarmiator_service:5010 {
import proxy_options
}
}
handle /socket.io/* {
reverse_proxy alarmiator_service:5020 {
import proxy_options
}
}
handle /spaceport/socket.io/* {
reverse_proxy alarmiator_service:5555 {
import proxy_options
}
}
handle {
reverse_proxy alarmiator_service:5000 {
import proxy_options
}
}
}
Ändert man etwas im Caddyfile, dann kann man mit dem Befehl
docker exec -w /etc/caddy alarmiatorserver-caddy-1 caddy reload
die neue Konfig aktivieren.
Dazza
18. Mai 2023 um 19:55
4
Hey,
irgendwie ist mir dein letztes Update durchgegangen. Ich hatte heute mal wieder die Zeit mich ans Handbuch zu setzen und habe eine neue Seite für Proxy Alternativen aufgesetzt: Alternative Reverse Proxies – ALARMiator – Handbuch
Ich hoffe sehr, dass noch andere so gute Beiträge posten, wenn Sie selber andere Proxies verwenden und dementsprechend werden wir diese Seite dann fortführen. Im Moment bist du ganz oben
Schönen Abend!
Da hatte sich doch ein kleiner Fehlerteufel eingeschlichen…
Das Caddyfile muss natürlich den Pfad /home/alarmiator/alarmiatorserver/Caddyfile haben.
Hier ein korrigiertes docker-compose.yml mit neuem alarmiator Image:
version: '3.0'
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator:latest-arm64
ports:
- '5000:5000'
- '5010:5010'
- '5020:5020'
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 600s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys:/alarmiatorserver/plugins/inbound/katsys
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
caddy:
networks:
- alarmiator-network
image: caddy:2.6.4-alpine
restart: always
ports:
- "80:80"
- "443:443"
- "443:443/udp"
healthcheck:
test: wget -q -O /dev/null http://localhost || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
- caddy_data:/data
- caddy_config:/config
volumes:
alarm-db:
alarm-katsys:
alarm-public-img:
alarm-uploads:
alarm-logs:
caddy_data:
caddy_config:
1 „Gefällt mir“
Anbei eine Fassung mit der Volume Korrektur für das katsys plugin.
version: '3.0'
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator:latest-{{deine platform}}
ports:
- '5000:5000'
- '5010:5010'
- '5020:5020'
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 600s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys-uploads:/alarmiatorserver/plugins/inbound/katsys/uploads
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
caddy:
networks:
- alarmiator-network
image: caddy:2.6.4-alpine
restart: always
depends_on:
alarmiator_service:
condition: service_healthy
ports:
- "80:80"
- "443:443"
- "443:443/udp"
healthcheck:
test: wget -q -O /dev/null http://localhost || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
- caddy_data:/data
- caddy_config:/config
volumes:
alarm-db:
alarm-katsys-uploads:
alarm-public-img:
alarm-uploads:
alarm-logs:
caddy_data:
caddy_config:
Und im vorherigen Post war wiederum ein Fehler. Sorry. Der komplette Pfad für das Caddyfile lautet:
/home/alarmiator/alarmiatorserver/caddy/Caddyfile
2 „Gefällt mir“
Ein kleines Update mit den aktuellen Files.
/home/alarmiator/alarmiatorserver/docker-compose.yaml:
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator:latest-arm64
ports:
- '5000:5000'
- '5010:5010'
- '5020:5020'
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 600s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys-uploads:/alarmiatorserver/plugins/inbound/katsys/uploads
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
- alarm-backups:/alarmiatorserver/backup
caddy:
networks:
- alarmiator-network
image: caddy:2.7.6-alpine
restart: always
depends_on:
alarmiator_service:
condition: service_healthy
ports:
- "80:80"
- "443:443"
- "443:443/udp"
healthcheck:
test: wget -q -O /dev/null http://localhost || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
- caddy_data:/data
- caddy_config:/config
volumes:
alarm-db:
alarm-katsys-uploads:
alarm-public-img:
alarm-uploads:
alarm-logs:
alarm-backups:
caddy_data:
caddy_config:
/home/alarmiator/alarmiatorserver/caddy/Caddyfile:
(proxy_options) {
header_down Strict-Transport-Security "max-age=31536000"
header_down X-Frame-Options "DENY"
header_down Content-Security-Policy "upgrade-insecure-requests"
header_down Referrer-Policy "strict-origin-when-cross-origin"
header_down X-Content-Type-Options "nosniff"
header_down Permissions-Policy "geolocation=(self \"https://alarmiator.example.com\"), microphone=()"
}
{
email alarmiator@example.com
}
localhost:80 {
respond 200
}
alarmiator.example.com {
header {
-Server
}
handle_path /api/* {
reverse_proxy alarmiator_service:5010 {
import proxy_options
}
}
handle /socket.io/* {
reverse_proxy alarmiator_service:5020 {
import proxy_options
}
}
handle /spaceport/socket.io/* {
reverse_proxy alarmiator_service:5555 {
import proxy_options
}
}
handle {
reverse_proxy alarmiator_service:5000 {
import proxy_options
}
}
}