Files
bluemapproxy/README.md
SimolZimol fd0820ae49 new file: Dockerfile
new file:   README.md
	new file:   docker-compose.yml
	new file:   nginx/templates/default.conf.template
2026-08-06 17:37:50 +02:00

77 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bluemap Reverse Proxy (Nginx) für Coolify
Nginx-basierter Reverse Proxy, der deine **Bluemap** (`http://devanturas.net:8100`)
über **HTTPS** auf **`map.devanturas.net`** ausliefert und **in einem iframe** einbettbar macht.
## Struktur
```
ReversProxy/
├── docker-compose.yml <- Coolify importiert diese Datei
└── nginx/
└── templates/
└── default.conf.template <- Nginx-Proxy-Konfiguration (envsubst)
```
## So liefere ich es bei Coolify aus
Die Foundation: **Coolify übernimmt die Domain `map.devanturas.net` und das HTTPS-Zertifikat** (via Let's Encrypt über seinen eigenen Traefik/Caddy-Proxy). Dein Nginx-Container läuft dahinter nur noch auf **HTTP**. So funktioniert der iframe dann `https://map.devanturas.net`.
### Schritte in Coolify
1. **Neues Projekt → Ressource → Docker Compose** anlegen.
2. Compose-Inhalt aus `docker-compose.yml` (bzw. den Ordner) einfügen.
3. In den **Domain-Einstellungen** der Ressource: `map.devanturas.net` eintragen.
- Coolify klinkt die Domain über seinen Proxy an den Nginx-Container an.
- Port-Ziel: `80`.
4. HTTPS aktivieren (Let's Encrypt) Coolify erledigt das automatisch.
5. **Deploy.**
### Wichtig: Bluemap-Adresse anpassen
In `docker-compose.yml` unter `environment`:
```yaml
UPSTREAM_HOST: "devanturas.net"
UPSTREAM_PORT: "8100"
```
- Läuft **Bluemap im selben Docker-Netzwerk** wie dieser Proxy → setze `UPSTREAM_HOST` auf den **Container-/Service-Namen** von Bluemap (z.B. `bluemap`). Das ist am schnellsten und sichersten.
- Andernfalls nimm den Hostnamen oder die IP, die `devanturas.net:8100` bereitstellt (bzw. die Docker-Brückengateway-IP, z.B. `172.17.0.1` unter Linux).
> **Netzwerk-Hinweis:** Damit dieser Nginx-Container den Bluemap-Container erreichen kann, müssen beide im Ersten Netzwerk hängen. Wenn Coolify deine Compose-Ressource bereits in ein eigenes Netzwerk legt, füge Bluemap dort hinzu oder setze `UPSTREAM_HOST` auf den öffentlichen Hostnamen.
## Iframe-Einbettung
Auf deiner Einbettungsseite einfach die Karte per HTTPS einbinden:
```html
<iframe
src="https://map.devanturas.net"
width="100%"
height="600"
style="border:0;"
allowfullscreen
title="Bluemap">
</iframe>
```
### Eingebettete Quellen einschränken (empfohlen)
Standardmäßig erlaubt die Konfiguration `frame-ancestors https://* http://*` (alles). **Aus Sicherheitsgründen** solltest du das in `docker-compose.yml` auf deine echten Seiten einschränken:
```yaml
FRAME_ANCESTORS: "https://devanturas.net"
```
Hinweis: Die einfache `FRAME_ANCESTORS`-Variable lässt sich mit dem Official-Nginx-Image nicht direkt in eine Dynamische CSP einsetzen (es werden nur definierte Variablen ersetzt). Für eine strenge Einschränkung editiere daher den `frame-ancestors`-Wert in `nginx/templates/default.conf.template` direkt (z.B. `frame-ancestors https://devanturas.net;`).
## WebSockets
Bluemap nutzt WebSockets für Live-Updates. Die Konfiguration hebt den `Upgrade`-/`Connection`-Header entsprechend an und verlängert die Timeouts, damit die Karte live mitläuft und Verbindungen nicht abbrechen.
## Lokal testen (ohne Coolify)
```bash
docker compose up -d
curl http://localhost:8080/ # sollte die Bluemap-Startseite liefern
curl http://localhost:8080/health # -> ok
```