Zoraxy - Reverse Proxy für Homelabs

Nachdem ich in meinen letzten Beiträgen bereits erklärt habe, wie man verschiedene Docker-Applikationen in Betrieb nimmt, widme ich mich heute einem wichtigen nächsten Schritt: der Absicherung und Bereitstellung von Diensten hinter einem Reverse Proxy.

Lange Zeit habe ich mit dem Nginx Proxy Manager gearbeitet. Da mir das manuelle Erstellen und Importieren von SSL-Zertifikaten jedoch zu aufwendig war, entschied ich mich für eine Automatisierungslösung. Dabei bin ich auf Zoraxy gestoßt.

Was ist Zoraxy?

Zoraxy ist ein in Go geschriebener Reverse Proxy, der besonders benutzerfreundlich ist. Er ist ideal für Homelabs geeignet, um Webdienste ohne Port-Freigabe, über Subdomains erreichbar zu machen und abzusichern.

Dank des ACME-Features und der Unterstützung von DNS-01 Challenges (funktioniert auch mit meinem Anbieter All-Inkl) kann Zoraxy auch Wildcard-Zertifikate selbstständig aktualisieren.

Das bedeutet für mich, dass mein Homelab nicht offen im Internet stehen muss, um Zertifikate zu validieren.

Funktionsumfang von Zoraxy

  • Funktionsumfang von Zoraxy
  • Simple to use interface with detail in-system instructions
  • Reverse Proxy (HTTP/2)
    • Virtual Directory
    • WebSocket Proxy (automatic, no set-up needed)
    • Basic Auth
    • Alias Hostnames
    • Custom Headers
    • Load Balancing
  • Redirection Rules
  • TLS / SSL setup and deploy
    • ACME features like auto-renew to serve your sites in https
    • SNI support (and SAN certs)
    • DNS Challenge for Let's Encrypt and these DNS providers
  • Blacklist / Whitelist by country or IP address (single IP, CIDR or wildcard for beginners)
  • Stream Proxy (TCP & UDP)
  • Integrated Up-time Monitor
  • Web-SSH Terminal
  • Plugin System
  • Utilities
    • CIDR IP converters
    • mDNS Scanner
    • Wake-On-Lan
    • Debug Forward Proxy
    • IP Scanner
    • Port Scanner
  • Community Contributed Features
    • Forward-Auth Support (e.g. Authelia, Authentik)
    • Oauth2 Support
    • reCAPTCHA
  • Others
    • Basic single-admin management mode
    • External permission management system for easy system integration
    • SMTP config for password reset
    • Dark Theme Mode


Warum einen Reverse Proxy nutzen?

Ein wesentlicher Vorteil eines Reverse Proxys liegt in der Sicherheit: Die eigentlichen Anwendungen sowie deren Ports müssen nicht direkt am Server oder im Router freigegeben werden.

Damit Zoraxy die Container findet, müssen sich die Container ein gemeinsames Docker-Netzwerk teilen. In meiner Konfiguration habe ich dieses Netzwerk „proxy“ genannt und es bei allen Webdiensten entsprechenden eingebunden.

Zoraxy für Docker konfigurieren

Die folgende Konfiguration dient als Beispiel und muss gegebenenfalls an die eigene Umgebung angepasst werden.

services:
  zoraxy:
    image: zoraxydocker/zoraxy:latest
    container_name: zoraxy
    restart: unless-stopped
    ports:
      - 443:443
      - 8000:8000
    volumes:
      - /data/zoraxy/config/:/opt/zoraxy/config/
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/localtime:/etc/localtime
    environment:
      FASTGEOIP: "false"
      ZEROTIER: "true"
    networks:
      proxy:
        ipv4_address: 192.168.0.99

networks:
  proxy:
    external: true

Damit ein anderer Webdienst in Zoraxy gefunden werden kann muss dieser auch über das "proxy" Netzwerk verfügen. Dies sieht wie etwa wie folgt aus:

........
........
........
    networks:
      default:
      proxy:
        ipv4_address: 192.168.0.100

networks:
  proxy:
    external: true
  default: 

Screenshots