11 Configuration
Forgeagent edited this page 2026-07-20 18:52:09 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Vollständige Konfigurationsreferenz

Quellen und Priorität

Die Priorität ist Flag > Environment > Datei > Default. Datei-Keys sind hierarchisch. Die zugehörige Environment-Variable entsteht immer aus PRIVATE_PROXY_MCP_ plus dem großgeschriebenen Key mit _ statt .; alle Variablen sind in den Tabellen explizit genannt. Komplexe Listen und Maps sollten in der Datei gepflegt werden.

Flags existieren nur, wenn die Spalte dies nennt. Alle anderen Keys sind über Datei und Environment verfügbar. Zeitwerte verwenden Go-Duration-Syntax wie 250ms, 10s oder 2m; Größen sind Bytes; Ports sind Ganzzahlen.

Logging

Datei-Key Environment Flag Default
log.level PRIVATE_PROXY_MCP_LOG_LEVEL --log-level info
log.format PRIVATE_PROXY_MCP_LOG_FORMAT --log-format json
log.redact_headers PRIVATE_PROXY_MCP_LOG_REDACT_HEADERS []

Level ist debug, info, warn oder error; Format ist json oder text. Die Anwendung redigiert sensible Standardheader und Shared Keys unabhängig von redact_headers; die Liste ergänzt anwendungsspezifische Headernamen.

MCP

Datei-Key Environment Flag Default
mcp.listen_address PRIVATE_PROXY_MCP_MCP_LISTEN_ADDRESS --mcp-listen-address 127.0.0.1:9334
mcp.endpoint PRIVATE_PROXY_MCP_MCP_ENDPOINT --mcp-endpoint /mcp
mcp.allowed_origins PRIVATE_PROXY_MCP_MCP_ALLOWED_ORIGINS --mcp-allowed-origins []
mcp.tls_terminated_by_proxy PRIVATE_PROXY_MCP_MCP_TLS_TERMINATED_BY_PROXY false
mcp.trusted_proxy_cidrs PRIVATE_PROXY_MCP_MCP_TRUSTED_PROXY_CIDRS []
mcp.read_header_timeout PRIVATE_PROXY_MCP_MCP_READ_HEADER_TIMEOUT --mcp-read-header-timeout 10s
mcp.idle_timeout PRIVATE_PROXY_MCP_MCP_IDLE_TIMEOUT --mcp-idle-timeout 2m
mcp.shutdown_timeout PRIVATE_PROXY_MCP_MCP_SHUTDOWN_TIMEOUT --mcp-shutdown-timeout 10s
mcp.max_header_bytes PRIVATE_PROXY_MCP_MCP_MAX_HEADER_BYTES --mcp-max-header-bytes 1048576

Endpoint muss mit / beginnen und darf weder Query noch Fragment besitzen. Eine Non-Loopback-Adresse wird nur akzeptiert, wenn tls_terminated_by_proxy=true und mindestens eine exakte, absolute Origin gesetzt ist. Forwarded-Header werden nur von trusted_proxy_cidrs ausgewertet. Alle Zeit- und Größenlimits müssen positiv sein.

Reverse Connector und Runtime

Datei-Key Environment Flag Default
private_proxy.identity PRIVATE_PROXY_MCP_PRIVATE_PROXY_IDENTITY --private-proxy-identity default
private_proxy.listen_address PRIVATE_PROXY_MCP_PRIVATE_PROXY_LISTEN_ADDRESS --private-proxy-listen-address¹ 0.0.0.0:9335
private_proxy.connector_url PRIVATE_PROXY_MCP_PRIVATE_PROXY_CONNECTOR_URL --private-proxy-connector-url² https://localhost:9335/connector
private_proxy.shared_key PRIVATE_PROXY_MCP_PRIVATE_PROXY_SHARED_KEY --private-proxy-shared-key leer
private_proxy.tls_ca_file PRIVATE_PROXY_MCP_PRIVATE_PROXY_TLS_CA_FILE --private-proxy-tls-ca-file² leer
private_proxy.tls_server_name PRIVATE_PROXY_MCP_PRIVATE_PROXY_TLS_SERVER_NAME --private-proxy-tls-server-name² leer
private_proxy.insecure_skip_verify PRIVATE_PROXY_MCP_PRIVATE_PROXY_INSECURE_SKIP_VERIFY --private-proxy-insecure-skip-verify² false
private_proxy.allow_insecure_http PRIVATE_PROXY_MCP_PRIVATE_PROXY_ALLOW_INSECURE_HTTP --private-proxy-allow-insecure-http² false
private_proxy.handshake_timeout PRIVATE_PROXY_MCP_PRIVATE_PROXY_HANDSHAKE_TIMEOUT --private-proxy-handshake-timeout² 10s
private_proxy.ping_interval PRIVATE_PROXY_MCP_PRIVATE_PROXY_PING_INTERVAL --private-proxy-ping-interval² 30s
private_proxy.pong_timeout PRIVATE_PROXY_MCP_PRIVATE_PROXY_PONG_TIMEOUT --private-proxy-pong-timeout² 10s
private_proxy.drain_timeout PRIVATE_PROXY_MCP_PRIVATE_PROXY_DRAIN_TIMEOUT --private-proxy-drain-timeout² 10s
private_proxy.reconnect_delay PRIVATE_PROXY_MCP_PRIVATE_PROXY_RECONNECT_DELAY --private-proxy-reconnect-delay² 100ms
private_proxy.backoff_initial PRIVATE_PROXY_MCP_PRIVATE_PROXY_BACKOFF_INITIAL --private-proxy-backoff-initial² 250ms
private_proxy.backoff_max PRIVATE_PROXY_MCP_PRIVATE_PROXY_BACKOFF_MAX --private-proxy-backoff-max² 30s
private_proxy.backoff_jitter PRIVATE_PROXY_MCP_PRIVATE_PROXY_BACKOFF_JITTER --private-proxy-backoff-jitter² 0.2
runtime.connect_timeout PRIVATE_PROXY_MCP_RUNTIME_CONNECT_TIMEOUT --runtime-connect-timeout² 10s

¹ nur mcp-server; ² nur private-proxy. Der Shared Key ist für beide Modi zum Start erforderlich. identity ist 1128 Zeichen und nicht geheim. connector_url muss /connector, einen expliziten Port und normalerweise https verwenden. Backoff-Jitter liegt zwischen 0 und 1; Maximum ist nicht kleiner als Initialwert.

HTTP-Ausführung

Datei-Key Environment Default
http.dns_timeout PRIVATE_PROXY_MCP_HTTP_DNS_TIMEOUT 5s
http.request_timeout PRIVATE_PROXY_MCP_HTTP_REQUEST_TIMEOUT 30s
http.request_body_limit PRIVATE_PROXY_MCP_HTTP_REQUEST_BODY_LIMIT 6291456
http.response_body_limit PRIVATE_PROXY_MCP_HTTP_RESPONSE_BODY_LIMIT 6291456
http.decompressed_body_limit PRIVATE_PROXY_MCP_HTTP_DECOMPRESSED_BODY_LIMIT 6291456
http.max_redirects PRIVATE_PROXY_MCP_HTTP_MAX_REDIRECTS 5
http.max_concurrent_requests PRIVATE_PROXY_MCP_HTTP_MAX_CONCURRENT_REQUESTS 32
http.allowed_methods PRIVATE_PROXY_MCP_HTTP_ALLOWED_METHODS [GET, HEAD, POST, PUT, PATCH, DELETE]
http.allowed_sensitive_request_headers PRIVATE_PROXY_MCP_HTTP_ALLOWED_SENSITIVE_REQUEST_HEADERS []
http.allowed_client_profiles PRIVATE_PROXY_MCP_HTTP_ALLOWED_CLIENT_PROFILES [default, chrome-desktop, firefox-desktop, mobile-chrome]
http.client_profiles PRIVATE_PROXY_MCP_HTTP_CLIENT_PROFILES {}

Timeouts und Limits sind positiv; request_timeout darf höchstens die Tunnel-Deadline (Wire 1.1: 30m, Legacy 1.0: 120s) sein. Nur Authorization und Cookie können über allowed_sensitive_request_headers opt-in freigeschaltet werden. Proxy-Authorization, Host, Framing- und Hop-by-hop-Header bleiben verboten. Ein eigenes Profil wird unter http.client_profiles.<name>.headers.<header>: [values] definiert und muss in allowed_client_profiles stehen. default muss freigegeben bleiben.

Netzwerk-Policy

Datei-Key Environment Default
http.network_policy.allowed_schemes PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_ALLOWED_SCHEMES [http, https]
http.network_policy.allowed_hosts PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_ALLOWED_HOSTS []
http.network_policy.allowed_host_suffixes PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_ALLOWED_HOST_SUFFIXES []
http.network_policy.denied_hosts PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_DENIED_HOSTS []
http.network_policy.denied_host_suffixes PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_DENIED_HOST_SUFFIXES []
http.network_policy.allowed_ports PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_ALLOWED_PORTS []
http.network_policy.denied_ports PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_DENIED_PORTS []
http.network_policy.allow_cidrs PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_ALLOW_CIDRS []
http.network_policy.deny_cidrs PRIVATE_PROXY_MCP_HTTP_NETWORK_POLICY_DENY_CIDRS []

Leere Host-/Port-Allowlisten schränken öffentliche Ziele nicht zusätzlich ein. Private, Loopback-, Link-local-, Multicast-, unspezifizierte und weitere nicht öffentliche Adressen bleiben trotzdem gesperrt. Nur allow_cidrs schaltet konkrete interne Zielnetze frei; Deny-Regeln haben Vorrang.

Media

Datei-Key Environment Default
media.enabled PRIVATE_PROXY_MCP_MEDIA_ENABLED true (Auto-Discovery; false = Hard-Off)
media.yt_dlp_path PRIVATE_PROXY_MCP_MEDIA_YT_DLP_PATH yt-dlp (PATH-Lookup)
media.yt_dlp_version PRIVATE_PROXY_MCP_MEDIA_YT_DLP_VERSION leer (optionaler Pin)
media.ffmpeg_path PRIVATE_PROXY_MCP_MEDIA_FFMPEG_PATH leer
media.ffmpeg_version PRIVATE_PROXY_MCP_MEDIA_FFMPEG_VERSION leer
media.temp_root PRIVATE_PROXY_MCP_MEDIA_TEMP_ROOT leer/System-Temp
media.artifact_ttl PRIVATE_PROXY_MCP_MEDIA_ARTIFACT_TTL 10m
media.max_bytes PRIVATE_PROXY_MCP_MEDIA_MAX_BYTES 268435456
media.max_duration PRIVATE_PROXY_MCP_MEDIA_MAX_DURATION 15m
media.max_concurrent PRIVATE_PROXY_MCP_MEDIA_MAX_CONCURRENT 2
media.max_starts_per_minute PRIVATE_PROXY_MCP_MEDIA_MAX_STARTS_PER_MINUTE 30
media.format_profiles PRIVATE_PROXY_MCP_MEDIA_FORMAT_PROFILES {}
media.client_profiles PRIVATE_PROXY_MCP_MEDIA_CLIENT_PROFILES {}
media.allowed_hosts PRIVATE_PROXY_MCP_MEDIA_ALLOWED_HOSTS www.youtube.com, youtu.be
media.allowed_host_suffixes PRIVATE_PROXY_MCP_MEDIA_ALLOWED_HOST_SUFFIXES youtube.com
media.allowed_ports PRIVATE_PROXY_MCP_MEDIA_ALLOWED_PORTS [80, 443]
media.artifact_base_url PRIVATE_PROXY_MCP_MEDIA_ARTIFACT_BASE_URL leer; auf mcp-server HTTPS-Pflicht
media.transcript_providers PRIVATE_PROXY_MCP_MEDIA_TRANSCRIPT_PROVIDERS ytdlp, innertube

Standard ist Auto-Discovery: der Private Proxy sucht yt-dlp im PATH bzw. unter yt_dlp_path und aktiviert die Capability bei Erfolg. Ein Versions-Pin ist optional. Fehlt die Host-Allowlist, gelten YouTube-Defaults. ffmpeg-Pfad und -Version werden nur gemeinsam akzeptiert. Alle Limits sind positiv; max_duration ist höchstens 30m (Wire 1.1). artifact_base_url ist auf dem mcp-server bei media.enabled: true verpflichtend und muss auf die externe HTTPS-MCP-Basis-URL ohne Credentials, Query oder Fragment zeigen. Der Private Proxy braucht diese URL nicht. Ein Fallback auf den lokalen HTTP-Listener ist nicht zulässig.

transcript_providers steuert die Transcript-Kette: yt-dlp primär, InnerTube als HTTP-Fallback (und für translation_language via YouTube tlang=). yt-dlp-CDN-Ziele bleiben Host-/Container-Egress; InnerTube läuft über httpexec/http.network_policy.

Browser

Datei-Key Environment Default
browser.enabled PRIVATE_PROXY_MCP_BROWSER_ENABLED false
browser.backend PRIVATE_PROXY_MCP_BROWSER_BACKEND chromedp
browser.executable_path PRIVATE_PROXY_MCP_BROWSER_EXECUTABLE_PATH leer
browser.executable_version PRIVATE_PROXY_MCP_BROWSER_EXECUTABLE_VERSION leer
browser.stealth PRIVATE_PROXY_MCP_BROWSER_STEALTH true
browser.default_client_profile PRIVATE_PROXY_MCP_BROWSER_DEFAULT_CLIENT_PROFILE chrome-desktop
browser.allowed_client_profiles PRIVATE_PROXY_MCP_BROWSER_ALLOWED_CLIENT_PROFILES chrome-desktop, mobile-chrome
browser.playwright_node_path PRIVATE_PROXY_MCP_BROWSER_PLAYWRIGHT_NODE_PATH leer
browser.playwright_sidecar_path PRIVATE_PROXY_MCP_BROWSER_PLAYWRIGHT_SIDECAR_PATH leer
browser.temp_root PRIVATE_PROXY_MCP_BROWSER_TEMP_ROOT leer/System-Temp
browser.artifact_base_url PRIVATE_PROXY_MCP_BROWSER_ARTIFACT_BASE_URL leer/MCP-Basis-URL
browser.artifact_ttl PRIVATE_PROXY_MCP_BROWSER_ARTIFACT_TTL 10m
browser.max_sessions PRIVATE_PROXY_MCP_BROWSER_MAX_SESSIONS 4
browser.max_tabs_per_session PRIVATE_PROXY_MCP_BROWSER_MAX_TABS_PER_SESSION 1
browser.max_session_lifetime PRIVATE_PROXY_MCP_BROWSER_MAX_SESSION_LIFETIME 5m
browser.max_memory_mb PRIVATE_PROXY_MCP_BROWSER_MAX_MEMORY_MB 256
browser.max_concurrent_actions PRIVATE_PROXY_MCP_BROWSER_MAX_CONCURRENT_ACTIONS 4
browser.max_wait PRIVATE_PROXY_MCP_BROWSER_MAX_WAIT 30s
browser.max_snapshot_bytes PRIVATE_PROXY_MCP_BROWSER_MAX_SNAPSHOT_BYTES 262144
browser.max_screenshot_bytes PRIVATE_PROXY_MCP_BROWSER_MAX_SCREENSHOT_BYTES 4194304
browser.max_artifacts PRIVATE_PROXY_MCP_BROWSER_MAX_ARTIFACTS 32

Bei Aktivierung sind Binary-Pfad und gepinnte Versionszeichenfolge erforderlich. browser.backend ist chromedp oder playwright; bei playwright sind Node- und Sidecar-Pfad Pflicht. Alle Limits sind positiv, max_tabs_per_session ist exakt 1 und max_wait höchstens die Tunnel-Deadline. Browsernavigation verwendet dieselbe http.network_policy wie direkte HTTP-Aufträge. Plattform-Setup (Linux/macOS/Windows): Browser-Tools.

Datei-Key Environment Default
search.enabled PRIVATE_PROXY_MCP_SEARCH_ENABLED true
search.max_results PRIVATE_PROXY_MCP_SEARCH_MAX_RESULTS 10

Bei search.enabled: true kündigt der Private Proxy die Capability web_search an und führt DuckDuckGo-HTML-Suchen über httpexec aus. max_results muss zwischen 1 und 50 liegen; Tool-Aufrufe dürfen das Limit nur verkleinern. Es gibt keinen Network-Policy-Bypass — Suchhosts bleiben unter http.network_policy. Details: Search-Tools.

Vollständiges Beispiel

config.example.yaml enthält alle Bereiche mit sicheren Beispielwerten. Es enthält keine produktiven Secrets, privaten Hostnamen oder internen IP-Adressen.