duffyduckandClaude Opus 5.5 8a2fece643 Beispiel-Konfiguration und .gitignore hinzufügen
.env (enthält Admin-Passwort) und data/ (Datenbank) werden ignoriert.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:35:35 +02:00
2026-10-05 13:33:59 +02:00
2026-10-05 13:33:59 +02:00
2026-10-05 13:33:59 +02:00
2026-10-05 13:33:59 +02:00
2026-10-05 13:33:59 +02:00

Proxy Manager

Ein Proxy-Server im Docker-Container, ähnlich wie Squid, aber mit WebUI und REST-API.

  • HTTP/HTTPS-Proxy (Port 3128) für Browser, Systemproxy, Outlook/Exchange (EWS, MAPI over HTTP, OWA, ActiveSync)
  • SOCKS5-Proxy (Port 1080) mit TCP und UDP. Darüber läuft jedes TCP-Protokoll, z. B. SMTP (25/465/587), IMAP (143/993), POP3 (110/995), SSH, RDP oder FTP-Steuerverbindungen.
  • Portweiterleitungen TCP/UDP für Programme ohne Proxy-Unterstützung, z. B. WireGuard, Outlook-Mailkonten oder Geräte
  • Beide Proxy-Ports verstehen HTTP und SOCKS5, das Protokoll wird automatisch erkannt.
  • Benutzerverwaltung mit Login am Proxy (Basic-Auth bzw. SOCKS5-Login)
  • Black-/Whitelist für Domains, Wildcards, Regex, IPs/Netze und Ports, global oder pro Benutzer
  • Verlauf: Wer hat wann was aufgerufen, mit Datenmenge, Dauer und Status, als CSV exportierbar
  • Live-Verbindungen ansehen und trennen
  • Dashboard mit Statistik
  • REST-API mit API-Tokens und Swagger-Doku unter /api/docs
  • PAC-Datei für automatische Browser-Konfiguration unter /proxy.pac
  • Daten liegen in einer SQLite-Datei im Bind Mount ./data, es gibt keine Docker-Volumes.

Start

cp .env.example .env        # ADMIN_PASSWORD setzen (sonst wird eins generiert, siehe Log)
docker-compose up -d --build
docker-compose logs proxy   # zeigt ggf. das generierte Admin-Passwort

WebUI: http://<host>:8080 (Host-Ports in .env änderbar: HTTP_PORT_HOST, SOCKS_PORT_HOST, WEB_PORT_HOST)

Ports

Port Zweck
3128/tcp HTTP/HTTPS-Proxy (+ SOCKS5)
1080/tcp SOCKS5 (+ HTTP)
8080/tcp WebUI + API
10800-10819/udp SOCKS5 UDP ASSOCIATE (ein Port pro aktiver UDP-Sitzung)
40000-40019/tcp+udp Frei für Portweiterleitungen

Die Bereiche sind in docker-compose.yml einstellbar (SOCKS_UDP_PORTS, FORWARD_PORTS plus das Port-Mapping). Mit network_mode: host entfällt das Mapping. Dann ist jeder Port für Weiterleitungen nutzbar.

Für SOCKS5-UDP muss SOCKS_UDP_ADVERTISE in .env die IP des Docker-Hosts enthalten, wie sie die Clients erreichen. Im Host-Netzwerk-Modus ist das nicht nötig.

Clients einrichten

Client Einstellung
Browser HTTP-Proxy host:3128 oder PAC-URL http://host:8080/proxy.pac
Windows-Systemproxy / Outlook (Exchange) HTTP-Proxy host:3128
Thunderbird (SMTP/IMAP/POP3) SOCKS5 host:1080, „DNS über SOCKS“ aktivieren
Kommandozeile export https_proxy=http://user:pass@host:3128
WireGuard Weiterleitung UDP 40000 → vpn.example.com:51820, im Client Endpoint = host:40000
Outlook IMAP/SMTP-Konto Weiterleitungen, z. B. TCP 40001 → imap.example.com:993 und 40002 → smtp.example.com:587. Achtung: Das TLS-Zertifikat lautet auf den echten Servernamen, ggf. per hosts-Eintrag auf den Proxy zeigen lassen.
Programme ohne Proxy-Support Proxifier/proxychains mit SOCKS5 oder eine Weiterleitung

Regeln

Auswertung in dieser Reihenfolge:

  1. Loopback-Schutz (127.0.0.0/8, ::1), abschaltbar
  2. Sperr-Regeln des Benutzers
  3. Erlaubt-Regeln des Benutzers
  4. Globale Sperr-Regeln
  5. Globale Erlaubt-Regeln
  6. Standardrichtlinie des Benutzers bzw. die globale Standardrichtlinie
Host-Muster Bedeutung
leer / * alle Ziele
example.com Domain inkl. aller Subdomains
*.example.com Platzhalter
10.0.0.0/8, 1.2.3.4 IP/Netz, wird gegen die aufgelöste Ziel-IP geprüft
re:^ads?\. regulärer Ausdruck

Ports: leer = alle, sonst z. B. 25, 8000-9000 oder 25,465,587.

Whitelist für einen Benutzer: Standardrichtlinie des Benutzers auf „Alles sperren“ stellen und Erlaubt-Regeln anlegen. Blocklisten importieren: „Liste importieren“ versteht eine Domain pro Zeile und das Hosts-Datei-Format (0.0.0.0 ads.example.com).

Hinweise

  • Bei HTTPS sieht der Proxy nur Host und Port, nicht die komplette URL, weil es kein SSL-Aufbrechen gibt. Bei unverschlüsseltem HTTP wird die volle URL protokolliert.
  • Bei SOCKS5 mit lokaler DNS-Auflösung (socks5:// statt socks5h://) kennt der Proxy nur die IP. Dann greifen nur IP-Regeln, Domain-Regeln nicht. In den Clients deshalb „DNS über Proxy“ aktivieren.
  • Der Verlauf wird nach log_retention_days (Standard 90 Tage) automatisch bereinigt. Rechtliche Vorgaben (DSGVO, Betriebsrat) beachten.
  • Backup: Ordner ./data sichern.

API

Interaktive Doku: http://host:8080/api/docs. Token in der WebUI unter „API“ erzeugen.

TOKEN=...
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -X POST http://host:8080/api/users -d '{"username":"max","password":"geheim123"}'
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -X POST http://host:8080/api/rules -d '{"action":"deny","host":"tiktok.com"}'
curl -H "Authorization: Bearer $TOKEN" "http://host:8080/api/history?username=max&limit=50"

Wichtige Endpunkte: /api/users, /api/rules (+ /bulk, /test), /api/forwards, /api/history (+ /export.csv), /api/stats, /api/connections, /api/settings, /api/tokens.

S
Description
No description provided
Readme
77 KiB
Languages
Python 62.3%
JavaScript 29.5%
CSS 6.6%
HTML 1.2%
Dockerfile 0.4%