Schnellstart-Anleitung
Voraussetzungen
Wir gehen davon aus, dass Sie bereits mit den Grundkonzepten vertraut sind und die Integrationsanweisungen für Ihre Umgebung befolgt haben.
Diese Schnellstart-Anleitung setzt voraus, dass BunkerWeb aus dem Internet erreichbar ist und dass Sie mindestens zwei Domains konfiguriert haben: eine für die Web-UI und eine für Ihren Webdienst.
Systemanforderungen
Die empfohlenen Mindestspezifikationen für BunkerWeb sind eine Maschine mit 2 (v)CPUs und 8 GB RAM. Bitte beachten Sie, dass dies für Testumgebungen oder Setups mit sehr wenigen Diensten ausreichend sein sollte.
Für Produktionsumgebungen mit vielen zu schützenden Diensten empfehlen wir mindestens 4 (v)CPUs und 16 GB RAM. Die Ressourcen sollten an Ihren Anwendungsfall, den Netzwerkverkehr und potenzielle DDoS-Angriffe, denen Sie ausgesetzt sein könnten, angepasst werden.
Es wird dringend empfohlen, das globale Laden von CRS-Regeln zu aktivieren (indem der Parameter USE_MODSECURITY_GLOBAL_CRS
auf yes
gesetzt wird), wenn Sie in Umgebungen mit begrenztem RAM oder in der Produktion mit vielen Diensten arbeiten. Weitere Details finden Sie im Abschnitt Erweiterte Nutzungen der Dokumentation.
Diese Schnellstart-Anleitung hilft Ihnen, BunkerWeb schnell zu installieren und einen Webdienst über die Web-Benutzeroberfläche zu sichern.
Der Schutz bestehender Webanwendungen, die bereits über das HTTP(S)-Protokoll erreichbar sind, ist das Hauptziel von BunkerWeb: Es fungiert als klassischer Reverse-Proxy mit zusätzlichen Sicherheitsfunktionen.
Im Beispielordner des Repositorys finden Sie Beispiele aus der Praxis.
Grundlegende Einrichtung
Um den All-in-One-Container bereitzustellen, führen Sie den folgenden Befehl aus:
docker run -d \
--name bunkerweb-aio \
-v bw-storage:/data \
-p 80:8080/tcp \
-p 443:8443/tcp \
-p 443:8443/udp \
bunkerity/bunkerweb-all-in-one:1.6.5
Standardmäßig stellt der Container Folgendes bereit:
- 8080/tcp für HTTP
- 8443/tcp für HTTPS
- 8443/udp für QUIC
- 7000/tcp für den Zugriff auf die Web-UI ohne BunkerWeb davor (nicht für die Produktion empfohlen)
Das All-In-One-Image enthält mehrere integrierte Dienste, die über Umgebungsvariablen gesteuert werden können. Weitere Details finden Sie im Abschnitt All-In-One (AIO) Image der Integrationsseite.
Verwenden Sie das Easy Install-Skript, um BunkerWeb auf unterstützten Linux-Distributionen einzurichten. Es installiert und konfiguriert NGINX automatisch, fügt das BunkerWeb-Repository hinzu und richtet die erforderlichen Dienste ein.
# Laden Sie das Skript und seine Prüfsumme herunter
wget https://github.com/bunkerity/bunkerweb/releases/download/v1.6.5/install-bunkerweb.sh
wget https://github.com/bunkerity/bunkerweb/releases/download/v1.6.5/install-bunkerweb.sh.sha256
# Überprüfen Sie die Prüfsumme
sha256sum -c install-bunkerweb.sh.sha256
# Wenn die Überprüfung erfolgreich ist, führen Sie das Skript aus
chmod +x install-bunkerweb.sh
sudo ./install-bunkerweb.sh
Sicherheitshinweis
Überprüfen Sie immer die Integrität des Skripts mit der bereitgestellten Prüfsumme, bevor Sie es ausführen.
Weitere Installationsmethoden (Paketmanager, Installationstypen, nicht-interaktive Flags, CrowdSec-Integration usw.) finden Sie unter Linux-Integration.
Hier ist die vollständige Docker-Compose-Datei, die Sie verwenden können; bitte beachten Sie, dass wir später den Webdienst mit dem bw-services
-Netzwerk verbinden werden:
x-bw-env: &bw-env
# Wir verwenden einen Anker, um die Wiederholung derselben Einstellungen für beide Dienste zu vermeiden
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24" # Stellen Sie sicher, dass Sie den richtigen IP-Bereich festlegen, damit der Scheduler die Konfiguration an die Instanz senden kann
# Optional: Legen Sie einen API-Token fest und spiegeln Sie ihn in beiden Containern
API_TOKEN: ""
DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
services:
bunkerweb:
# Dies ist der Name, der zur Identifizierung der Instanz im Scheduler verwendet wird
image: bunkerity/bunkerweb:1.6.5
ports:
- "80:8080/tcp"
- "443:8443/tcp"
- "443:8443/udp" # Für QUIC / HTTP3-Unterstützung
environment:
<<: *bw-env # Wir verwenden den Anker, um die Wiederholung derselben Einstellungen für alle Dienste zu vermeiden
restart: "unless-stopped"
networks:
- bw-universe
- bw-services
bw-scheduler:
image: bunkerity/bunkerweb-scheduler:1.6.5
environment:
<<: *bw-env
BUNKERWEB_INSTANCES: "bunkerweb" # Stellen Sie sicher, dass Sie den richtigen Instanznamen festlegen
SERVER_NAME: ""
MULTISITE: "yes"
UI_HOST: "http://bw-ui:7000" # Ändern Sie dies bei Bedarf
USE_REDIS: "yes"
REDIS_HOST: "redis"
volumes:
- bw-storage:/data # Dies wird verwendet, um den Cache und andere Daten wie die Backups zu persistieren
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-ui:
image: bunkerity/bunkerweb-ui:1.6.5
environment:
<<: *bw-env
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-db:
image: mariadb:11
# Wir setzen die maximal zulässige Paketgröße, um Probleme mit großen Abfragen zu vermeiden
command: --max-allowed-packet=67108864
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: "db"
MYSQL_USER: "bunkerweb"
MYSQL_PASSWORD: "changeme" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
volumes:
- bw-data:/var/lib/mysql
restart: "unless-stopped"
networks:
- bw-db
redis: # Redis-Dienst für die Persistenz von Berichten/Sperren/Statistiken
image: redis:7-alpine
command: >
redis-server
--maxmemory 256mb
--maxmemory-policy allkeys-lru
--save 60 1000
--appendonly yes
volumes:
- redis-data:/data
restart: "unless-stopped"
networks:
- bw-universe
volumes:
bw-data:
bw-storage:
redis-data:
networks:
bw-universe:
name: bw-universe
ipam:
driver: default
config:
- subnet: 10.20.30.0/24 # Stellen Sie sicher, dass Sie den richtigen IP-Bereich festlegen, damit der Scheduler die Konfiguration an die Instanz senden kann
bw-services:
name: bw-services
bw-db:
name: bw-db
Hier ist die vollständige Docker-Compose-Datei, die Sie verwenden können; bitte beachten Sie, dass wir später den Webdienst mit dem bw-services
-Netzwerk verbinden werden:
x-ui-env: &bw-ui-env
# Wir verankern die Umgebungsvariablen, um Duplikate zu vermeiden
AUTOCONF_MODE: "yes"
DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
services:
bunkerweb:
image: bunkerity/bunkerweb:1.6.5
ports:
- "80:8080/tcp"
- "443:8443/tcp"
- "443:8443/udp" # Für QUIC / HTTP3-Unterstützung
labels:
- "bunkerweb.INSTANCE=yes" # Wir setzen das Instanz-Label, damit die Autoconf die Instanz erkennen kann
environment:
AUTOCONF_MODE: "yes"
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"
restart: "unless-stopped"
networks:
- bw-universe
- bw-services
bw-scheduler:
image: bunkerity/bunkerweb-scheduler:1.6.5
environment:
<<: *bw-ui-env
BUNKERWEB_INSTANCES: ""
SERVER_NAME: ""
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"
MULTISITE: "yes"
UI_HOST: "http://bw-ui:7000" # Ändern Sie dies bei Bedarf
USE_REDIS: "yes"
REDIS_HOST: "redis"
volumes:
- bw-storage:/data # Dies wird verwendet, um den Cache und andere Daten wie die Backups zu persistieren
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-autoconf:
image: bunkerity/bunkerweb-autoconf:1.6.5
depends_on:
- bw-docker
environment:
<<: *bw-ui-env
DOCKER_HOST: "tcp://bw-docker:2375"
restart: "unless-stopped"
networks:
- bw-universe
- bw-docker
- bw-db
bw-docker:
image: tecnativa/docker-socket-proxy:nightly
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
CONTAINERS: "1"
LOG_LEVEL: "warning"
networks:
- bw-docker
bw-ui:
image: bunkerity/bunkerweb-ui:1.6.5
environment:
<<: *bw-ui-env
TOTP_ENCRYPTION_KEYS: "mysecret" # Denken Sie daran, einen stärkeren geheimen Schlüssel festzulegen (siehe Abschnitt Voraussetzungen)
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-db:
image: mariadb:11
# Wir setzen die maximal zulässige Paketgröße, um Probleme mit großen Abfragen zu vermeiden
command: --max-allowed-packet=67108864
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: "db"
MYSQL_USER: "bunkerweb"
MYSQL_PASSWORD: "changeme" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
volumes:
- bw-data:/var/lib/mysql
restart: "unless-stopped"
networks:
- bw-db
redis: # Redis-Dienst für die Persistenz von Berichten/Sperren/Statistiken
image: redis:7-alpine
command: >
redis-server
--maxmemory 256mb
--maxmemory-policy allkeys-lru
--save 60 1000
--appendonly yes
volumes:
- redis-data:/data
restart: "unless-stopped"
networks:
- bw-universe
volumes:
bw-data:
bw-storage:
redis-data:
networks:
bw-universe:
name: bw-universe
ipam:
driver: default
config:
- subnet: 10.20.30.0/24
bw-services:
name: bw-services
bw-docker:
name: bw-docker
bw-db:
name: bw-db
Die empfohlene Methode zur Installation von Kubernetes ist die Verwendung des Helm-Charts, das unter https://repo.bunkerweb.io/charts
verfügbar ist:
helm repo add bunkerweb https://repo.bunkerweb.io/charts
Sie können dann das bunkerweb
-Helm-Chart aus diesem Repository verwenden:
helm install mybw bunkerweb/bunkerweb --namespace bunkerweb --create-namespace
Nach der Installation können Sie die IP-Adresse des LoadBalancer
abrufen, um Ihre Domains einzurichten:
kubectl -n bunkerweb get svc mybw-external -o=jsonpath='{.status.loadBalancer.ingress[0].ip}'
Veraltet
Die Swarm-Integration ist veraltet und wird in einer zukünftigen Version entfernt. Bitte erwägen Sie stattdessen die Verwendung der Kubernetes-Integration.
Weitere Informationen finden Sie in der Swarm-Integrationsdokumentation.
Hier ist die vollständige Docker-Compose-Stack-Datei, die Sie verwenden können; bitte beachten Sie, dass wir später den Webdienst mit dem bw-services
-Netzwerk verbinden werden:
x-ui-env: &bw-ui-env
# Wir verankern die Umgebungsvariablen, um Duplikate zu vermeiden
SWARM_MODE: "yes"
DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
services:
bunkerweb:
image: bunkerity/bunkerweb:1.6.5
ports:
- published: 80
target: 8080
mode: host
protocol: tcp
- published: 443
target: 8443
mode: host
protocol: tcp
- published: 443
target: 8443
mode: host
protocol: udp # Für QUIC / HTTP3-Unterstützung
environment:
SWARM_MODE: "yes"
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"
restart: "unless-stopped"
networks:
- bw-universe
- bw-services
deploy:
mode: global
placement:
constraints:
- "node.role == worker"
labels:
- "bunkerweb.INSTANCE=yes"
bw-scheduler:
image: bunkerity/bunkerweb-scheduler:1.6.5
environment:
<<: *bw-ui-env
BUNKERWEB_INSTANCES: ""
SERVER_NAME: ""
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"
MULTISITE: "yes"
USE_REDIS: "yes"
REDIS_HOST: "bw-redis"
UI_HOST: "http://bw-ui:7000" # Ändern Sie dies bei Bedarf
volumes:
- bw-storage:/data # Dies wird verwendet, um den Cache und andere Daten wie die Backups zu persistieren
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-autoconf:
image: bunkerity/bunkerweb-autoconf:1.6.5
environment:
<<: *bw-ui-env
DOCKER_HOST: "tcp://bw-docker:2375"
restart: "unless-stopped"
networks:
- bw-universe
- bw-docker
- bw-db
bw-docker:
image: tecnativa/docker-socket-proxy:nightly
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
CONFIGS: "1"
CONTAINERS: "1"
SERVICES: "1"
SWARM: "1"
TASKS: "1"
LOG_LEVEL: "warning"
networks:
- bw-docker
deploy:
placement:
constraints:
- "node.role == manager"
bw-ui:
image: bunkerity/bunkerweb-ui:1.6.5
environment:
<<: *bw-ui-env
TOTP_ENCRYPTION_KEYS: "mysecret" # Denken Sie daran, einen stärkeren geheimen Schlüssel festzulegen (siehe Abschnitt Voraussetzungen)
restart: "unless-stopped"
networks:
- bw-universe
- bw-db
bw-db:
image: mariadb:11
# Wir setzen die maximal zulässige Paketgröße, um Probleme mit großen Abfragen zu vermeiden
command: --max-allowed-packet=67108864
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: "db"
MYSQL_USER: "bunkerweb"
MYSQL_PASSWORD: "changeme" # Denken Sie daran, ein stärkeres Passwort für die Datenbank festzulegen
volumes:
- bw-data:/var/lib/mysql
restart: "unless-stopped"
networks:
- bw-db
bw-redis:
image: redis:7-alpine
networks:
- bw-universe
volumes:
bw-data:
bw-storage:
networks:
bw-universe:
name: bw-universe
driver: overlay
attachable: true
ipam:
config:
- subnet: 10.20.30.0/24
bw-services:
name: bw-services
driver: overlay
attachable: true
bw-docker:
name: bw-docker
driver: overlay
attachable: true
bw-db:
name: bw-db
driver: overlay
attachable: true
Den Einrichtungsassistenten abschließen
Zugriff auf den Einrichtungsassistenten
Sie können auf den Einrichtungsassistenten zugreifen, indem Sie die URI https://ihre-fqdn-oder-ip-adresse/setup
Ihres Servers aufrufen.
Ein Administratorkonto erstellen
Sie sollten eine Einrichtungsseite wie diese sehen:
Sobald Sie auf der Einrichtungsseite sind, können Sie den Administrator-Benutzernamen, die E-Mail-Adresse und das Passwort eingeben und auf die Schaltfläche "Weiter" klicken.
Den Reverse-Proxy, HTTPS und andere erweiterte Einstellungen konfigurieren
Im nächsten Schritt werden Sie aufgefordert, den Servernamen (Domain/FQDN) einzugeben, den die Web-UI verwenden wird.
Sie können auch Let's Encrypt aktivieren.
Im nächsten Schritt werden Sie aufgefordert, den Servernamen (Domain/FQDN) einzugeben, den die Web-UI verwenden wird.
Sie können auch Let's Encrypt aktivieren.
Wenn Sie den Abschnitt Erweiterte Einstellungen
erweitern, können Sie auch die folgenden Optionen konfigurieren:
- Reverse-Proxy: Passen Sie die Reverse-Proxy-Einstellungen für Ihre Administratoroberfläche an (z. B. wenn Sie einen Pfad verwenden möchten).
- Echte IP: Konfigurieren Sie die Einstellungen für die echte IP, um die IP-Adresse des Clients korrekt zu identifizieren (z. B. wenn Sie sich hinter einem Load Balancer oder einem CDN befinden).
- Benutzerdefiniertes Zertifikat: Laden Sie ein benutzerdefiniertes TLS-Zertifikat hoch, wenn Sie Let's Encrypt nicht verwenden möchten.
PRO-Aktivierung
Wenn Sie eine PRO-Lizenz haben, können Sie sie aktivieren, indem Sie Ihren Lizenzschlüssel im Abschnitt Upgrade auf PRO
eingeben. Dadurch werden die PRO-Funktionen von BunkerWeb aktiviert.
Übersicht über Ihre Einstellungen
Der letzte Schritt gibt Ihnen einen Überblick über die von Ihnen eingegebenen Einstellungen. Sie können auf die Schaltfläche "Einrichten" klicken, um die Einrichtung abzuschließen.
Zugriff auf die Weboberfläche
Sie können nun auf die Weboberfläche zugreifen, indem Sie die im vorherigen Schritt konfigurierte Domain und die URI aufrufen, falls Sie sie geändert haben (Standard ist https://ihre-domain/
).
Sie können sich nun mit dem während des Einrichtungsassistenten erstellten Administratorkonto anmelden.
Erstellen eines neuen Dienstes
Sie können einen neuen Dienst erstellen, indem Sie zum Abschnitt Dienste
der Weboberfläche navigieren und auf die Schaltfläche ➕ Neuen Dienst erstellen
klicken.
Es gibt mehrere Möglichkeiten, einen Dienst über die Weboberfläche zu erstellen:
- Der Einfache Modus führt Sie durch den Prozess der Erstellung eines neuen Dienstes.
- Der Erweiterte Modus ermöglicht es Ihnen, den Dienst mit mehr Optionen zu konfigurieren.
- Der Rohmodus ermöglicht es Ihnen, die Konfiguration direkt einzugeben, als ob Sie die Datei
variables.env
bearbeiten würden.
Entwurfsdienst
Sie können einen Entwurfsdienst erstellen, um Ihren Fortschritt zu speichern und später darauf zurückzukommen. Klicken Sie einfach auf die Schaltfläche 🌐 Online
, um den Dienst in den Entwurfsmodus zu schalten.
In diesem Modus können Sie aus den verfügbaren Vorlagen wählen und die erforderlichen Felder ausfüllen.
- Sobald Sie die Vorlage ausgewählt haben, können Sie die erforderlichen Felder ausfüllen und den Anweisungen folgen, um den Dienst zu erstellen.
- Wenn Sie mit der Konfiguration des Dienstes fertig sind, können Sie auf die Schaltfläche
💾 Speichern
klicken, um die Konfiguration zu speichern.
In diesem Modus können Sie den Dienst mit mehr Optionen konfigurieren und dabei alle verfügbaren Einstellungen aus allen verschiedenen Plugins sehen.
- Um zwischen den verschiedenen Plugins zu navigieren, können Sie das Navigationsmenü auf der linken Seite der Seite verwenden.
- Jede Einstellung enthält eine kleine Information, die Ihnen hilft zu verstehen, was sie bewirkt.
- Wenn Sie mit der Konfiguration des Dienstes fertig sind, können Sie auf die Schaltfläche
💾 Speichern
klicken, um die Konfiguration zu speichern.
In diesem Modus können Sie die Konfiguration direkt eingeben, als ob Sie die Datei variables.env
bearbeiten würden.
- Wenn Sie mit der Konfiguration des Dienstes fertig sind, können Sie auf die Schaltfläche
💾 Speichern
klicken, um die Konfiguration zu speichern.
🚀 Sobald Sie die Konfiguration gespeichert haben, sollten Sie Ihren neuen Dienst in der Liste der Dienste sehen.
Wenn Sie den Dienst bearbeiten möchten, können Sie auf den Dienstnamen oder die Schaltfläche 📝 Bearbeiten
klicken.
Bei Verwendung des All-in-One-Images werden neue Dienste durch Hinzufügen von Umgebungsvariablen zum docker run
-Befehl für den bunkerweb-aio
-Container konfiguriert. Wenn der Container bereits läuft, müssen Sie ihn stoppen und entfernen und dann mit den aktualisierten Umgebungsvariablen erneut ausführen.
Angenommen, Sie möchten eine Anwendung myapp
schützen (die in einem anderen Container läuft und von BunkerWeb als http://myapp:8080
erreichbar ist) und sie unter www.example.com
verfügbar machen. Sie würden die folgenden Umgebungsvariablen in Ihrem docker run
-Befehl hinzufügen oder ändern:
# Zuerst den vorhandenen Container stoppen und entfernen, falls er läuft:
# docker stop bunkerweb-aio
# docker rm bunkerweb-aio
# Dann den bunkerweb-aio-Container mit zusätzlichen/aktualisierten Umgebungsvariablen erneut ausführen:
docker run -d \
--name bunkerweb-aio \
-v bw-storage:/data \
-p 80:8080/tcp \
-p 443:8443/tcp \
-p 443:8443/udp \
# --- Fügen Sie diese Umgebungsvariablen für Ihren neuen Dienst hinzu/ändern Sie sie ---
-e MULTISITE=yes \
-e SERVER_NAME="www.example.com" \
-e "www.example.com_USE_REVERSE_PROXY=yes" \
-e "www.example.com_REVERSE_PROXY_HOST=http://myapp:8080" \
-e "www.example.com_REVERSE_PROXY_URL=/" \
# --- Fügen Sie alle anderen vorhandenen Umgebungsvariablen für UI, Redis, CrowdSec usw. hinzu ---
bunkerity/bunkerweb-all-in-one:1.6.5
Ihr Anwendungscontainer (myapp
) und der bunkerweb-aio
-Container müssen sich im selben Docker-Netzwerk befinden, damit BunkerWeb ihn über den Hostnamen myapp
erreichen kann.
Beispiel für die Netzwerkeinrichtung:
# 1. Erstellen Sie ein benutzerdefiniertes Docker-Netzwerk (falls noch nicht geschehen):
docker network create my-app-network
# 2. Führen Sie Ihren Anwendungscontainer in diesem Netzwerk aus:
docker run -d --name myapp --network my-app-network your-app-image
# 3. Fügen Sie --network my-app-network zum docker run-Befehl von bunkerweb-aio hinzu:
docker run -d \
--name bunkerweb-aio \
--network my-app-network \
-v bw-storage:/data \
-p 80:8080/tcp \
-p 443:8443/tcp \
-p 443:8443/udp \
# ... (alle anderen relevanten Umgebungsvariablen wie im Hauptbeispiel oben gezeigt) ...
bunkerity/bunkerweb-all-in-one:1.6.5
Stellen Sie sicher, dass Sie myapp
durch den tatsächlichen Namen oder die IP Ihres Anwendungscontainers und http://myapp:8080
durch dessen korrekte Adresse und Port ersetzen.
Wir gehen davon aus, dass Sie die Grundlegende Einrichtung befolgt haben und dass die Linux-Integration auf Ihrer Maschine läuft.
Sie können einen neuen Dienst erstellen, indem Sie die Datei variables.env
im Verzeichnis /etc/bunkerweb/
bearbeiten.
nano /etc/bunkerweb/variables.env
Sie können dann die folgende Konfiguration hinzufügen:
SERVER_NAME=www.example.com
MULTISITE=yes
www.example.com_USE_REVERSE_PROXY=yes
www.example.com_REVERSE_PROXY_URL=/
www.example.com_REVERSE_PROXY_HOST=http://myapp:8080
Sie können dann den bunkerweb-scheduler
-Dienst neu laden, um die Änderungen zu übernehmen.
systemctl reload bunkerweb-scheduler
Wir gehen davon aus, dass Sie die Grundlegende Einrichtung befolgt haben und dass die Docker-Integration auf Ihrer Maschine läuft.
Sie müssen ein Netzwerk namens bw-services
haben, damit Sie Ihre bestehende Anwendung verbinden und BunkerWeb konfigurieren können:
services:
myapp:
image: nginxdemos/nginx-hello
networks:
- bw-services
networks:
bw-services:
external: true
name: bw-services
Danach können Sie den Dienst manuell in der im vorherigen Schritt erstellten Docker-Compose-Datei hinzufügen:
...
services:
...
bw-scheduler:
...
environment:
...
SERVER_NAME: "www.example.com" # Bei Verwendung der Docker-Integration können Sie die Konfiguration direkt im Scheduler festlegen. Stellen Sie sicher, dass Sie den richtigen Domainnamen festlegen
MULTISITE: "yes" # Aktivieren Sie den Multisite-Modus, damit Sie mehrere Dienste hinzufügen können
www.example.com_USE_REVERSE_PROXY: "yes"
www.example.com_REVERSE_PROXY_URL: "/"
www.example.com_REVERSE_PROXY_HOST: "http://myapp:8080"
...
Sie können dann den bw-scheduler
-Dienst neu starten, um die Änderungen zu übernehmen.
docker compose down bw-scheduler && docker compose up -d bw-scheduler
Wir gehen davon aus, dass Sie die Grundlegende Einrichtung befolgt haben und dass die Docker-Autoconf-Integration auf Ihrer Maschine läuft.
Sie müssen ein Netzwerk namens bw-services
haben, damit Sie Ihre bestehende Anwendung verbinden und BunkerWeb mit Labels konfigurieren können:
services:
myapp:
image: nginxdemos/nginx-hello
networks:
- bw-services
labels:
- "bunkerweb.SERVER_NAME=www.example.com"
- "bunkerweb.USE_REVERSE_PROXY=yes"
- "bunkerweb.REVERSE_PROXY_URL=/"
- "bunkerweb.REVERSE_PROXY_HOST=http://myapp:8080"
networks:
bw-services:
external: true
name: bw-services
Dadurch wird automatisch ein neuer Dienst mit den bereitgestellten Labels als Konfiguration erstellt.
Wir gehen davon aus, dass Sie die Grundlegende Einrichtung befolgt haben und dass der Kubernetes-Stack auf Ihrem Cluster läuft.
Nehmen wir an, Sie haben ein typisches Deployment mit einem Service, um auf die Webanwendung aus dem Cluster zuzugreifen:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
labels:
app: app
spec:
replicas: 1
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: nginxdemos/nginx-hello
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: svc-app
spec:
selector:
app: app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Hier ist die entsprechende Ingress-Definition, um die Webanwendung bereitzustellen und zu schützen:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
bunkerweb.io/DUMMY_SETTING: "value"
spec:
rules:
- host: www.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-app
port:
number: 80
Veraltet
Die Swarm-Integration ist veraltet und wird in einer zukünftigen Version entfernt. Bitte erwägen Sie stattdessen die Verwendung der Kubernetes-Integration.
Weitere Informationen finden Sie in der Swarm-Integrationsdokumentation.
Wir gehen davon aus, dass Sie die Grundlegende Einrichtung befolgt haben und dass der Swarm-Stack auf Ihrem Cluster läuft und mit einem Netzwerk namens bw-services
verbunden ist, sodass Sie Ihre bestehende Anwendung verbinden und BunkerWeb mit Labels konfigurieren können:
services:
myapp:
image: nginxdemos/nginx-hello
networks:
- bw-services
deploy:
placement:
constraints:
- "node.role==worker"
labels:
- "bunkerweb.SERVER_NAME=www.example.com"
- "bunkerweb.USE_REVERSE_PROXY=yes"
- "bunkerweb.REVERSE_PROXY_URL=/"
- "bunkerweb.REVERSE_PROXY_HOST=http://myapp:8080"
networks:
bw-services:
external: true
name: bw-services
Weiterführende Informationen
Herzlichen Glückwunsch! Sie haben gerade BunkerWeb installiert und Ihren ersten Webdienst gesichert. Bitte beachten Sie, dass BunkerWeb viel mehr bietet, sowohl in Bezug auf die Sicherheit als auch in Bezug auf die Integration mit anderen Systemen und Lösungen. Hier ist eine Liste von Ressourcen und Aktionen, die Ihnen helfen können, Ihr Wissen über die Lösung weiter zu vertiefen:
- Treten Sie der Bunker-Community bei: Discord, LinkedIn, GitHub, X (ehemals Twitter)
- Schauen Sie sich den offiziellen Blog an
- Erkunden Sie fortgeschrittene Anwendungsfälle in der Dokumentation
- Nehmen Sie Kontakt mit uns auf, um die Bedürfnisse Ihrer Organisation zu besprechen