# 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 ```bash 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://: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. ```bash 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`.