Saltar a contenido

Guía de inicio rápido

Requisitos previos

Esperamos que ya estés familiarizado con los conceptos básicos y que hayas seguido las instrucciones de integración para tu entorno.

Esta guía de inicio rápido asume que BunkerWeb es accesible desde Internet y que has configurado al menos dos dominios: uno para la interfaz de usuario web y otro para tu servicio web.

Requisitos del sistema

Las especificaciones mínimas recomendadas para BunkerWeb son una máquina con 2 (v)CPUs y 8 GB de RAM. Ten en cuenta que esto debería ser suficiente para entornos de prueba o configuraciones con muy pocos servicios.

Para entornos de producción con muchos servicios que proteger, recomendamos al menos 4 (v)CPUs y 16 GB de RAM. Los recursos deben ajustarse en función de tu caso de uso, el tráfico de red y los posibles ataques DDoS que puedas enfrentar.

Se recomienda encarecidamente habilitar la carga global de las reglas CRS (estableciendo el parámetro USE_MODSECURITY_GLOBAL_CRS en yes) si te encuentras en entornos con RAM limitada o en producción con muchos servicios. Puedes encontrar más detalles en la sección de usos avanzados de la documentación.

Esta guía de inicio rápido te ayudará a instalar rápidamente BunkerWeb y a proteger un servicio web utilizando la interfaz de usuario web.

Proteger las aplicaciones web existentes que ya son accesibles con el protocolo HTTP(S) es el objetivo principal de BunkerWeb: actuará como un proxy inverso clásico con características de seguridad adicionales.

Consulta la carpeta de ejemplos del repositorio para obtener ejemplos del mundo real.

Configuración básica

Para desplegar el contenedor todo en uno, ejecuta el siguiente comando:

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

Por defecto, el contenedor expone:

  • 8080/tcp para HTTP
  • 8443/tcp para HTTPS
  • 8443/udp para QUIC
  • 7000/tcp para el acceso a la interfaz de usuario web sin BunkerWeb delante (no recomendado para producción)

La imagen Todo en Uno viene con varios servicios integrados, que se pueden controlar mediante variables de entorno. Consulta la sección de la imagen Todo en Uno (AIO) de la página de integraciones para más detalles.

Usa el script de instalación fácil para configurar BunkerWeb en las distribuciones de Linux compatibles. Instala y configura automáticamente NGINX, añade el repositorio de BunkerWeb y configura los servicios necesarios.

# Descargar el script y su suma de comprobación
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

# Verificar la suma de comprobación
sha256sum -c install-bunkerweb.sh.sha256

# Si la comprobación es exitosa, ejecuta el script
chmod +x install-bunkerweb.sh
sudo ./install-bunkerweb.sh

Aviso de seguridad

Verifica siempre la integridad del script con la suma de comprobación proporcionada antes de ejecutarlo.

Para métodos de instalación avanzados (gestor de paquetes, tipos de instalación, indicadores no interactivos, integración con CrowdSec, etc.), consulta la Integración con Linux.

Aquí está el archivo docker compose completo que puedes usar; ten en cuenta que más adelante conectaremos el servicio web a la red bw-services:

x-bw-env: &bw-env
  # Usamos un ancla para evitar repetir las mismas configuraciones para ambos servicios
  API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24" # Asegúrate de establecer el rango de IP correcto para que el programador pueda enviar la configuración a la instancia
  # Opcional: establece un token de API y refléjalo en ambos contenedores
  API_TOKEN: ""
  DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Recuerda establecer una contraseña más segura para la base de datos

services:
  bunkerweb:
    # Este es el nombre que se usará para identificar la instancia en el Programador
    image: bunkerity/bunkerweb:1.6.5
    ports:
      - "80:8080/tcp"
      - "443:8443/tcp"
      - "443:8443/udp" # Para soporte de QUIC / HTTP3
    environment:
      <<: *bw-env # Usamos el ancla para evitar repetir las mismas configuraciones para todos los servicios
    restart: "unless-stopped"
    networks:
      - bw-universe
      - bw-services

  bw-scheduler:
    image: bunkerity/bunkerweb-scheduler:1.6.5
    environment:
      <<: *bw-env
      BUNKERWEB_INSTANCES: "bunkerweb" # Asegúrate de establecer el nombre de instancia correcto
      SERVER_NAME: ""
      MULTISITE: "yes"
      UI_HOST: "http://bw-ui:7000" # Cámbialo si es necesario
      USE_REDIS: "yes"
      REDIS_HOST: "redis"
    volumes:
      - bw-storage:/data # Se usa para persistir la caché y otros datos como las copias de seguridad
    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
    # Establecemos el tamaño máximo de paquete permitido para evitar problemas con consultas grandes
    command: --max-allowed-packet=67108864
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
      MYSQL_DATABASE: "db"
      MYSQL_USER: "bunkerweb"
      MYSQL_PASSWORD: "changeme" # Recuerda establecer una contraseña más segura para la base de datos
    volumes:
      - bw-data:/var/lib/mysql
    restart: "unless-stopped"
    networks:
      - bw-db

  redis: # Servicio de Redis para la persistencia de informes/baneos/estadísticas
    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 # Asegúrate de establecer el rango de IP correcto para que el programador pueda enviar la configuración a la instancia
  bw-services:
    name: bw-services
  bw-db:
    name: bw-db

Aquí está el archivo docker compose completo que puedes usar; ten en cuenta que más adelante conectaremos el servicio web a la red bw-services:

x-ui-env: &bw-ui-env
  # Anclamos las variables de entorno para evitar la duplicación
  AUTOCONF_MODE: "yes"
  DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Recuerda establecer una contraseña más segura para la base de datos

services:
  bunkerweb:
    image: bunkerity/bunkerweb:1.6.5
    ports:
      - "80:8080/tcp"
      - "443:8443/tcp"
      - "443:8443/udp" # Para soporte de QUIC / HTTP3
    labels:
      - "bunkerweb.INSTANCE=yes" # Establecemos la etiqueta de la instancia para permitir que la autoconfiguración detecte la instancia
    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" # Cámbialo si es necesario
      USE_REDIS: "yes"
      REDIS_HOST: "redis"
    volumes:
      - bw-storage:/data # Se utiliza para persistir la caché y otros datos como las copias de seguridad
    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" # Recuerda establecer una clave secreta más segura (consulta la sección de Requisitos previos)
    restart: "unless-stopped"
    networks:
      - bw-universe
      - bw-db

  bw-db:
    image: mariadb:11
    # Establecemos el tamaño máximo de paquete permitido para evitar problemas con consultas grandes
    command: --max-allowed-packet=67108864
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
      MYSQL_DATABASE: "db"
      MYSQL_USER: "bunkerweb"
      MYSQL_PASSWORD: "changeme" # Recuerda establecer una contraseña más segura para la base de datos
    volumes:
      - bw-data:/var/lib/mysql
    restart: "unless-stopped"
    networks:
      - bw-db

  redis: # Servicio de Redis para la persistencia de informes/baneos/estadísticas
    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

La forma recomendada de instalar Kubernetes es usar el chart de Helm disponible en https://repo.bunkerweb.io/charts:

helm repo add bunkerweb https://repo.bunkerweb.io/charts

Luego puedes usar el chart de helm bunkerweb de ese repositorio:

helm install mybw bunkerweb/bunkerweb --namespace bunkerweb --create-namespace

Una vez instalado, puedes obtener la dirección IP del LoadBalancer para configurar tus dominios:

kubectl -n bunkerweb get svc mybw-external -o=jsonpath='{.status.loadBalancer.ingress[0].ip}'

Obsoleto

La integración de Swarm está obsoleta y se eliminará en una futura versión. Por favor, considera usar la integración de Kubernetes en su lugar.

Se puede encontrar más información en la documentación de la integración de Swarm.

Aquí está el archivo de la pila de docker compose completo que puedes usar; ten en cuenta que más adelante conectaremos el servicio web a la red bw-services:

x-ui-env: &bw-ui-env
  # Anclamos las variables de entorno para evitar la duplicación
  SWARM_MODE: "yes"
  DATABASE_URI: "mariadb+pymysql://bunkerweb:changeme@bw-db:3306/db" # Recuerda establecer una contraseña más segura para la base de datos

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 # Para soporte de QUIC / HTTP3
    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" # Cámbialo si es necesario
    volumes:
      - bw-storage:/data # Se utiliza para persistir la caché y otros datos como las copias de seguridad
    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" # Recuerda establecer una clave secreta más segura (consulta la sección de Requisitos previos)
    restart: "unless-stopped"
    networks:
      - bw-universe
      - bw-db

  bw-db:
    image: mariadb:11
    # Establecemos el tamaño máximo de paquete permitido para evitar problemas con consultas grandes
    command: --max-allowed-packet=67108864
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
      MYSQL_DATABASE: "db"
      MYSQL_USER: "bunkerweb"
      MYSQL_PASSWORD: "changeme" # Recuerda establecer una contraseña más segura para la base de datos
    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

Completa el asistente de configuración

Accediendo al asistente de configuración

Puedes acceder al asistente de configuración navegando a la URI https://tu-fqdn-o-direccion-ip/setup de tu servidor.

Crea una cuenta de administrador

Deberías ver una página de configuración como esta:

Página de inicio del Asistente de configuración

Página de inicio del Asistente de configuración

Una vez en la página de configuración, puedes introducir el nombre de usuario, correo electrónico y contraseña del administrador y hacer clic en el botón "Siguiente".

Configura el Proxy Inverso, HTTPS y otros ajustes avanzados

El siguiente paso te pedirá que introduzcas el nombre del servidor (dominio/FQDN) que utilizará la interfaz de usuario web.

También puedes optar por habilitar Let's Encrypt

Asistente de configuración paso 2
Asistente de configuración paso 2

El siguiente paso te pedirá que introduzcas el nombre del servidor (dominio/FQDN) que utilizará la interfaz de usuario web.

También puedes optar por habilitar Let's Encrypt.

Si expandes la sección Ajustes avanzados, también puedes configurar las siguientes opciones:

  • Proxy Inverso: Ajusta la configuración del Proxy Inverso para tu interfaz de administrador (p. ej., si quieres usar una ruta).
  • IP Real: Configura los ajustes de IP Real para identificar correctamente la dirección IP del cliente (p. ej., si estás detrás de un balanceador de carga o un CDN).
  • Certificado Personalizado: Sube un certificado TLS personalizado si no quieres usar Let's Encrypt.

Asistente de configuración paso 2
Asistente de configuración paso 2 (avanzado)

Activación PRO

Si tienes una licencia PRO, puedes activarla introduciendo tu clave de licencia en la sección Actualizar a PRO. Esto habilitará las características PRO de BunkerWeb.

Paso PRO del Asistente de configuración

Paso PRO del Asistente de configuración

Resumen de tu configuración

El último paso te dará un resumen de la configuración que has introducido. Puedes hacer clic en el botón "Configurar" para completar la configuración.

Paso final del Asistente de configuración

Paso final del Asistente de configuración

Accediendo a la interfaz web

Ahora puedes acceder a la interfaz web navegando al dominio que configuraste en el paso anterior y a la URI si la cambiaste (el valor predeterminado es https://tu-dominio/).

Página de inicio de sesión de la interfaz web

Página de inicio de sesión de la interfaz web

Ahora puedes iniciar sesión con la cuenta de administrador que creaste durante el asistente de configuración.

Inicio de la interfaz web

Inicio de la interfaz web

Creando un nuevo servicio

Puedes crear un nuevo servicio navegando a la sección Servicios de la interfaz web y haciendo clic en el botón ➕ Crear nuevo servicio.

Hay múltiples formas de crear un servicio usando la interfaz web:

  • El Modo fácil te guiará a través del proceso de creación de un nuevo servicio.
  • El Modo avanzado te permitirá configurar el servicio con más opciones.
  • El Modo sin formato te permitirá introducir la configuración directamente como si editaras el archivo variables.env.

Servicio en borrador

Puedes crear un servicio en borrador para guardar tu progreso y volver a él más tarde. Simplemente haz clic en el botón 🌐 En línea para cambiar el servicio al modo borrador.

En este modo, puedes elegir entre las plantillas disponibles y rellenar los campos obligatorios.

Creación de servicio en modo fácil en la interfaz web
Creación de servicio en modo fácil en la interfaz web

  • Una vez que hayas seleccionado la plantilla, puedes rellenar los campos obligatorios y seguir las instrucciones para crear el servicio.
  • Una vez que hayas terminado de configurar el servicio, puedes hacer clic en el botón 💾 Guardar para guardar la configuración.

En este modo, puedes configurar el servicio con más opciones mientras ves todas las configuraciones disponibles de todos los diferentes plugins.

Creación de servicio en modo avanzado en la interfaz web
Creación de servicio en modo avanzado en la interfaz web

  • Para navegar entre los diferentes plugins, puedes usar el menú de navegación en el lado izquierdo de la página.
  • Cada configuración tiene una pequeña pieza de información que te ayudará a entender lo que hace.
  • Una vez que hayas terminado de configurar el servicio, puedes hacer clic en el botón 💾 Guardar para guardar la configuración.

En este modo, puedes introducir la configuración directamente como si editaras el archivo variables.env.

Creación de servicio en modo SIN FORMATO en la interfaz web
Creación de servicio en modo SIN FORMATO en la interfaz web

  • Una vez que hayas terminado de configurar el servicio, puedes hacer clic en el botón 💾 Guardar para guardar la configuración.

🚀 Una vez que hayas guardado la configuración, deberías ver tu nuevo servicio en la lista de servicios.

Página de servicios de la interfaz web
Página de servicios de la interfaz web

Si deseas editar el servicio, puedes hacer clic en el nombre del servicio o en el botón 📝 Editar.

Cuando se utiliza la imagen Todo en Uno, los nuevos servicios se configuran añadiendo variables de entorno al comando docker run para el contenedor bunkerweb-aio. Si el contenedor ya está en ejecución, debes detenerlo y eliminarlo, y luego volver a ejecutarlo con las variables de entorno actualizadas.

Supongamos que quieres proteger una aplicación myapp (que se ejecuta en otro contenedor y es accesible como http://myapp:8080 desde BunkerWeb) y hacerla disponible en www.example.com. Añadirías o modificarías las siguientes variables de entorno en tu comando docker run:

# Primero, detén y elimina el contenedor existente si está en ejecución:
# docker stop bunkerweb-aio
# docker rm bunkerweb-aio

# Luego, vuelve a ejecutar el contenedor bunkerweb-aio con variables de entorno adicionales/actualizadas:
docker run -d \
  --name bunkerweb-aio \
  -v bw-storage:/data \
  -p 80:8080/tcp \
  -p 443:8443/tcp \
  -p 443:8443/udp \
  # --- Añade/modifica estas variables de entorno para tu nuevo servicio ---
  -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=/" \
  # --- Incluye cualquier otra variable de entorno existente para la UI, Redis, CrowdSec, etc. ---
  bunkerity/bunkerweb-all-in-one:1.6.5

Tu contenedor de aplicación (myapp) y el contenedor bunkerweb-aio deben estar en la misma red de Docker para que BunkerWeb pueda alcanzarlo usando el nombre de host myapp.

Ejemplo de configuración de red:

# 1. Crea una red de Docker personalizada (si aún no lo has hecho):
docker network create my-app-network

# 2. Ejecuta tu contenedor de aplicación en esta red:
docker run -d --name myapp --network my-app-network tu-imagen-de-aplicacion

# 3. Añade --network my-app-network al comando docker run de bunkerweb-aio:
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 \
#   ... (todas las demás variables de entorno relevantes como se muestra en el ejemplo principal anterior) ...
  bunkerity/bunkerweb-all-in-one:1.6.5

Asegúrate de reemplazar myapp con el nombre o IP real de tu contenedor de aplicación y http://myapp:8080 con su dirección y puerto correctos.

Asumimos que has seguido la Configuración básica y que la integración con Linux está funcionando en tu máquina.

Puedes crear un nuevo servicio editando el archivo variables.env ubicado en el directorio /etc/bunkerweb/.

nano /etc/bunkerweb/variables.env

Luego puedes añadir la siguiente configuración:

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

Luego puedes recargar el servicio bunkerweb-scheduler para aplicar los cambios.

systemctl reload bunkerweb-scheduler

Asumimos que has seguido la Configuración básica y que la integración con Docker está funcionando en tu máquina.

Debes tener una red llamada bw-services para que puedas conectar tu aplicación existente y configurar BunkerWeb:

services:
  myapp:
      image: nginxdemos/nginx-hello
      networks:
        - bw-services

networks:
  bw-services:
    external: true
    name: bw-services

Después de eso, puedes añadir manualmente el servicio en el archivo docker compose que creaste en el paso anterior:

...

services:
  ...
  bw-scheduler:
    ...
    environment:
      ...
      SERVER_NAME: "www.example.com" # Cuando usas la integración con Docker, puedes establecer la configuración directamente en el programador, asegúrate de establecer el nombre de dominio correcto
      MULTISITE: "yes" # Habilita el modo multisitio para que puedas añadir múltiples servicios
      www.example.com_USE_REVERSE_PROXY: "yes"
      www.example.com_REVERSE_PROXY_URL: "/"
      www.example.com_REVERSE_PROXY_HOST: "http://myapp:8080"
      ...

Luego puedes reiniciar el servicio bw-scheduler para aplicar los cambios.

docker compose down bw-scheduler && docker compose up -d bw-scheduler

Asumimos que has seguido la Configuración básica y que la integración de autoconfiguración de Docker está funcionando en tu máquina.

Debes tener una red llamada bw-services para que puedas conectar tu aplicación existente y configurar BunkerWeb con etiquetas:

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

Hacer esto creará automáticamente un nuevo servicio con las etiquetas proporcionadas como configuración.

Asumimos que has seguido la Configuración básica y que la pila de Kubernetes está funcionando en tu clúster.

Supongamos que tienes un Despliegue típico con un Servicio para acceder a la aplicación web desde dentro del clúster:

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

Aquí está la definición de Ingress correspondiente para servir y proteger la aplicación web:

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

Obsoleto

La integración de Swarm está obsoleta y se eliminará en una futura versión. Por favor, considera usar la integración de Kubernetes en su lugar.

Se puede encontrar más información en la documentación de la integración de Swarm.

Asumimos que has seguido la Configuración básica y que la pila de Swarm está funcionando en tu clúster y conectada a una red llamada bw-services para que puedas conectar tu aplicación existente y configurar BunkerWeb con etiquetas:

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

Para saber más

¡Felicidades! Acabas de instalar BunkerWeb y de asegurar tu primer servicio web. Ten en cuenta que BunkerWeb ofrece mucho más, tanto en términos de seguridad como de integraciones con otros sistemas y soluciones. Aquí tienes una lista de recursos y acciones que pueden ayudarte a seguir profundizando en el conocimiento de la solución: