Zum Inhalt

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:

Setup Wizard Landing Page

Setup Wizard Landing Page

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.

Setup Wizard Schritt 2
Setup Wizard Schritt 2

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.

Setup Wizard Schritt 2
Setup Wizard Schritt 2 (erweitert)

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.

Setup Wizard PRO-Schritt

Setup Wizard PRO-Schritt

Ü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.

Setup Wizard letzter Schritt

Setup Wizard letzter Schritt

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/).

Weboberfläche Anmeldeseite

Weboberfläche Anmeldeseite

Sie können sich nun mit dem während des Einrichtungsassistenten erstellten Administratorkonto anmelden.

Weboberfläche Startseite

Weboberfläche Startseite

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.

Weboberfläche Dienst erstellen einfach
Weboberfläche Dienst erstellen einfach

  • 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.

Weboberfläche Dienst erstellen erweitert
Weboberfläche Dienst erstellen erweitert

  • 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.

Weboberfläche Dienst erstellen ROH
Weboberfläche Dienst erstellen ROH

  • 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.

Weboberfläche Diensteseite
Weboberfläche Diensteseite

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: