{"id":35767161,"url":"https://github.com/ercindedeoglu/cloudflare-warp","last_synced_at":"2026-05-27T02:04:09.824Z","repository":{"id":326701389,"uuid":"1106467397","full_name":"ErcinDedeoglu/cloudflare-warp","owner":"ErcinDedeoglu","description":"Dockerized Cloudflare WARP client with SOCKS5 \u0026 HTTP proxy support. Features authentication, rate limiting, IP whitelisting, and dual-mode routing (WARP or direct exit). Perfect for privacy, geo-bypass, and secure browsing.","archived":false,"fork":false,"pushed_at":"2026-05-21T00:47:30.000Z","size":25955,"stargazers_count":12,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"v1.0","last_synced_at":"2026-05-21T07:19:05.662Z","etag":null,"topics":["cloudflare","docker","gost","privacy","proxy","socks5","vpn","warp","zero-trust"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/dublok/cloudflare-warp","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ErcinDedeoglu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-29T10:04:15.000Z","updated_at":"2026-05-21T00:47:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ErcinDedeoglu/cloudflare-warp","commit_stats":null,"previous_names":["ercindedeoglu/cloudflare-warp"],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/ErcinDedeoglu/cloudflare-warp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErcinDedeoglu%2Fcloudflare-warp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErcinDedeoglu%2Fcloudflare-warp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErcinDedeoglu%2Fcloudflare-warp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErcinDedeoglu%2Fcloudflare-warp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErcinDedeoglu","download_url":"https://codeload.github.com/ErcinDedeoglu/cloudflare-warp/tar.gz/refs/heads/v1.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErcinDedeoglu%2Fcloudflare-warp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33546836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","docker","gost","privacy","proxy","socks5","vpn","warp","zero-trust"],"created_at":"2026-01-07T02:13:05.091Z","updated_at":"2026-05-27T02:04:09.768Z","avatar_url":"https://github.com/ErcinDedeoglu.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudflare WARP\n\n[![Build, Test \u0026 Push](https://img.shields.io/github/actions/workflow/status/ErcinDedeoglu/cloudflare-warp/build-test-push.yml?branch=v1.0\u0026logo=github\u0026label=Build)](https://github.com/ErcinDedeoglu/cloudflare-warp/actions/workflows/build-test-push.yml)\n[![Docker Pulls](https://img.shields.io/docker/pulls/dublok/cloudflare-warp?logo=docker\u0026label=Pulls)](https://hub.docker.com/r/dublok/cloudflare-warp)\n[![Docker Image Size](https://img.shields.io/docker/image-size/dublok/cloudflare-warp/latest?logo=docker\u0026label=Size)](https://hub.docker.com/r/dublok/cloudflare-warp)\n[![GitHub Stars](https://img.shields.io/github/stars/ErcinDedeoglu/cloudflare-warp?logo=github\u0026label=Stars)](https://github.com/ErcinDedeoglu/cloudflare-warp)\n[![License: CC BY-NC 4.0](https://img.shields.io/badge/License-CC%20BY--NC%204.0-blue.svg)](https://github.com/ErcinDedeoglu/cloudflare-warp/blob/v1.0/LICENSE)\n\nRun [Cloudflare WARP](https://1.1.1.1/) in Docker. Provides SOCKS5 and HTTP proxies that route traffic through Cloudflare's network. Supports multiple WARP instances in a single container for IP rotation.\n\n## Quick Start\n\n```yaml\nservices:\n  warp:\n    image: dublok/cloudflare-warp:latest\n    container_name: warp\n    restart: always\n    ports:\n      - \"1080:1080\"  # SOCKS5 proxy\n      # - \"8080:8080\"  # HTTP proxy\n    volumes:\n      - warp-data:/var/lib/cloudflare-warp\n\nvolumes:\n  warp-data:\n```\n\n```bash\ndocker compose up -d\n\n# Test SOCKS5 proxy\ncurl --socks5-hostname 127.0.0.1:1080 https://cloudflare.com/cdn-cgi/trace\n\n# Test HTTP proxy (if port 8080 exposed)\ncurl -x http://127.0.0.1:8080 https://cloudflare.com/cdn-cgi/trace\n```\n\nIf working, you'll see `warp=on` in the output.\n\n## Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `WARP_INSTANCES` | Number of WARP instances. Each gets a unique Cloudflare IP. Traffic is round-robined across all instances. No extra capabilities required | `1` |\n| `WARP_LICENSE_KEY` | WARP+ license key. Comma-separated for multiple keys — tries each in order, skips any that fail | - |\n| `WARP_ORG` | Zero Trust team name. Enables automatic enrollment via service token (see [Zero Trust](#zero-trust-free-warp-routing) section). Mutually exclusive with `WARP_LICENSE_KEY` | - |\n| `WARP_AUTH_CLIENT_ID` | Service token Client ID (required when `WARP_ORG` is set) | - |\n| `WARP_AUTH_CLIENT_SECRET` | Service token Client Secret (required when `WARP_ORG` is set) | - |\n| `WARP_CONNECT_TIMEOUT` | Max seconds to wait for WARP daemon | `30` |\n| `PROXY_USER` | Proxy authentication username | - |\n| `PROXY_PASS` | Proxy authentication password | - |\n| `PROXY_ALLOWED_IPS` | IP whitelist (comma-separated CIDRs) | - |\n| `PROXY_MAX_CONN` | Max concurrent connections per IP | `10` |\n| `PROXY_MAX_RPS` | Max requests per second per IP | `10` |\n| `SS_METHOD` | Shadowsocks encryption method | `chacha20-ietf-poly1305` |\n\n## With Authentication\n\n```yaml\nservices:\n  warp:\n    image: dublok/cloudflare-warp:latest\n    ports:\n      - \"1080:1080\"  # SOCKS5 proxy\n      - \"8080:8080\"  # HTTP proxy\n    environment:\n      - PROXY_USER=myuser\n      - PROXY_PASS=mypassword\n    volumes:\n      - warp-data:/var/lib/cloudflare-warp\n\nvolumes:\n  warp-data:\n```\n\n```bash\n# SOCKS5 with auth\ncurl --socks5-hostname myuser:mypassword@127.0.0.1:1080 https://cloudflare.com/cdn-cgi/trace\n\n# HTTP with auth\ncurl -x http://myuser:mypassword@127.0.0.1:8080 https://cloudflare.com/cdn-cgi/trace\n```\n\n## Direct Proxy (Bypass WARP)\n\nDirect proxies are always available that exit through Docker's network without routing through WARP. Useful when you need your real IP for certain services.\n\n| Port | Protocol | Route |\n|------|----------|-------|\n| 1080 | SOCKS5 | Through WARP (Cloudflare IP) |\n| 1081 | SOCKS5 | Direct (real IP) |\n| 8080 | HTTP | Through WARP (Cloudflare IP) |\n| 8081 | HTTP | Direct (real IP) |\n\n```yaml\nservices:\n  warp:\n    image: dublok/cloudflare-warp:latest\n    ports:\n      - \"1080:1080\"  # SOCKS5 WARP proxy\n      - \"1081:1081\"  # SOCKS5 Direct proxy\n      - \"8080:8080\"  # HTTP WARP proxy\n      - \"8081:8081\"  # HTTP Direct proxy\n    environment:\n      - PROXY_USER=myuser\n      - PROXY_PASS=mypassword\n    volumes:\n      - warp-data:/var/lib/cloudflare-warp\n\nvolumes:\n  warp-data:\n```\n\n```bash\n# SOCKS5 through WARP (Cloudflare IP)\ncurl --socks5-hostname myuser:mypassword@127.0.0.1:1080 https://ifconfig.me\n\n# SOCKS5 direct exit (your real IP)\ncurl --socks5-hostname myuser:mypassword@127.0.0.1:1081 https://ifconfig.me\n\n# HTTP through WARP (Cloudflare IP)\ncurl -x http://myuser:mypassword@127.0.0.1:8080 https://ifconfig.me\n\n# HTTP direct exit (your real IP)\ncurl -x http://myuser:mypassword@127.0.0.1:8081 https://ifconfig.me\n```\n\n## Multi-Instance (IP Rotation)\n\nSet `WARP_INSTANCES=N` to run multiple WARP daemons in a single container, each with a unique Cloudflare IP. Traffic is round-robined across all instances on the same ports — no extra capabilities required.\n\n```yaml\nenvironment:\n  - WARP_INSTANCES=10    # each request exits through a different IP\n```\n\nEach instance uses ~50-100 MB RAM and starts 2 seconds apart. If an instance fails, GOST skips it after 3 failures and retries after 30s.\n\n## Zero Trust (Free WARP+ Routing)\n\nEnroll devices into Cloudflare Zero Trust using service tokens for free WARP+ equivalent routing — no browser needed. See the **[Zero Trust setup guide](docs/zero-trust.md)** for configuration and usage.\n\n## Mobile VPN (Shadowsocks)\n\nConnect your mobile devices using Shadowsocks apps - works as a system-wide VPN without requiring special Docker privileges. **Shadowsocks is always enabled** on ports 8388/8389.\n\n### Supported Apps\n\n| Platform | App | Price |\n|----------|-----|-------|\n| Android | [Shadowsocks](https://play.google.com/store/apps/details?id=com.github.shadowsocks) | Free |\n| Android | [v2rayNG](https://play.google.com/store/apps/details?id=com.v2ray.ang) | Free |\n| iOS | [Shadowrocket](https://apps.apple.com/app/shadowrocket/id932747118) | ~$3 |\n| iOS | [Potatso Lite](https://apps.apple.com/app/potatso-lite/id1239860606) | Free |\n\n### Setup\n\n```yaml\nservices:\n  warp:\n    image: dublok/cloudflare-warp:latest\n    ports:\n      - \"8388:8388\"  # Shadowsocks WARP (Cloudflare IP)\n      - \"8389:8389\"  # Shadowsocks Direct (real IP)\n    environment:\n      - PROXY_PASS=your-secure-password  # Optional: sets password for all protocols\n    volumes:\n      - warp-data:/var/lib/cloudflare-warp\n\nvolumes:\n  warp-data:\n```\n\n### Mobile App Configuration\n\n| Setting | Value |\n|---------|-------|\n| Server | Your server IP or domain |\n| Port | `8388` (WARP) or `8389` (Direct) |\n| Password | Your `PROXY_PASS` or `cloudflare-warp` (default) |\n| Method | `chacha20-ietf-poly1305` (default) |\n\n### Available Encryption Methods\n\n**Recommended (AEAD):**\n- `chacha20-ietf-poly1305` (default, recommended for mobile)\n- `aes-256-gcm`\n- `aes-128-gcm`\n\n**Shadowsocks 2022 (newest, requires base64 key as password):**\n- `2022-blake3-aes-128-gcm`\n- `2022-blake3-aes-256-gcm`\n- `2022-blake3-chacha20-poly1305`\n\n**Other:**\n- `xchacha20-ietf-poly1305`\n- `chacha20-poly1305`\n\n### Port Reference\n\n| Port | Protocol | Route |\n|------|----------|-------|\n| 8388 | Shadowsocks | Through WARP (Cloudflare IP) |\n| 8389 | Shadowsocks | Direct (real IP) |\n\n## License\n\nCC-BY-NC-4.0 - Non-commercial use only with attribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fercindedeoglu%2Fcloudflare-warp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fercindedeoglu%2Fcloudflare-warp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fercindedeoglu%2Fcloudflare-warp/lists"}