{"id":28904816,"url":"https://github.com/diniboy1123/wasque","last_synced_at":"2026-04-29T04:39:17.853Z","repository":{"id":300278528,"uuid":"1005752159","full_name":"Diniboy1123/wasque","owner":"Diniboy1123","description":"Lightweight, unofficial Docker container for the official Cloudflare WARP Linux CLI client. Easily expose a SOCKS5 proxy from within a container—no elevated privileges required!","archived":false,"fork":false,"pushed_at":"2025-06-20T19:23:21.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-20T20:42:24.147Z","etag":null,"topics":["cloudflare","connect-ip","docker","masque","proxy","socks5","warp"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Diniboy1123.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2025-06-20T18:50:01.000Z","updated_at":"2025-06-20T19:32:44.000Z","dependencies_parsed_at":"2025-06-20T20:42:28.272Z","dependency_job_id":"6b481d51-204f-4992-8d02-88c2ddf1469f","html_url":"https://github.com/Diniboy1123/wasque","commit_stats":null,"previous_names":["diniboy1123/wasque"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Diniboy1123/wasque","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Diniboy1123%2Fwasque","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Diniboy1123%2Fwasque/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Diniboy1123%2Fwasque/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Diniboy1123%2Fwasque/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Diniboy1123","download_url":"https://codeload.github.com/Diniboy1123/wasque/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Diniboy1123%2Fwasque/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261126448,"owners_count":23113312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","connect-ip","docker","masque","proxy","socks5","warp"],"created_at":"2025-06-21T13:02:33.149Z","updated_at":"2026-04-29T04:39:17.848Z","avatar_url":"https://github.com/Diniboy1123.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wasque\n\nLightweight, unofficial [Docker](https://www.docker.com/) container for the official [Cloudflare WARP Linux CLI client](https://developers.cloudflare.com/warp-client/get-started/linux/). Easily expose a SOCKS5 proxy from within a container—**no elevated privileges required**!\n\n## Table of Contents\n\n- [wasque](#wasque)\n  - [Table of Contents](#table-of-contents)\n  - [Disclaimer](#disclaimer)\n  - [Usage](#usage)\n  - [What does it contain?](#what-does-it-contain)\n  - [Why the `bind_redirect.c` hack?](#why-the-bind_redirectc-hack)\n  - [Why `dbus`?](#why-dbus)\n  - [Can I use a paid WARP+ account?](#can-i-use-a-paid-warp-account)\n  - [Why was this built?](#why-was-this-built)\n  - [Known issues](#known-issues)\n  - [License](#license)\n  - [Disclaimer #2](#disclaimer-2)\n\n## Disclaimer\n\nThis project was created for my own research and development purposes. I needed a way to run the WARP client in proxy mode without installing it on my host system. As a result, the [entrypoint](entrypoint.sh) script isn't highly flexible. If you need a different setup, feel free to fork this repository and customize it.\n\n## Usage\n\nPre-built images are available on [GHCR](https://github.com/Diniboy1123/wasque/pkgs/container/wasque). Pull the latest image with:\n\n```\ndocker pull ghcr.io/diniboy1123/wasque:latest\n```\n\nRun the container with:\n\n```\ndocker run -d --name wasque --rm \\\n  -p 40000:40000 \\\n  ghcr.io/diniboy1123/wasque:latest\n```\n\n\u003e [!NOTE]  \n\u003e Only `linux/amd64` and `linux/arm64` architectures are supported at the moment. I’m not aware of other architectures that the WARP client has builds for on Linux.\n\n## What does it contain?\n\nThe image aims to be lightweight. I couldn’t use Alpine as a base, since all official [WARP Linux releases](https://pkg.cloudflareclient.com/) are built against `glibc`. Debian was too old, so I chose a less common base: [Void Linux with glibc and BusyBox](https://github.com/void-linux/void-containers/pkgs/container/void-glibc-busybox). It’s relatively lightweight and has more up-to-date packages.\n\nCurrently, the build process extracts the latest Ubuntu 24.02.2 (Noble Numbat) `.deb` package, pulls the necessary files, strips debug symbols, and copies the binaries into the image.\n\nThe image is rebuilt daily at 4 PM UTC. I plotted their release times for fun and it seems that most releases are done before 4 PM. However, there are no guarantees—things can break. If you encounter issues, feel free to open an issue.\n\n## Why the `bind_redirect.c` hack?\n\nBy default, the WARP client binds only to `127.0.0.1`, which makes it inaccessible via `-p 40000:40000` from the host. I couldn’t find a CLI flag to change the bind address *(Cloudflare folks, if you’re reading—this would be a great feature 😌)*.\n\nI didn’t want to patch a closed-source binary, so instead, I created an `LD_PRELOAD` hack. It intercepts `bind()` calls, and if the IP is `127.0.0.1`, it rewrites it to `INADDR_ANY`. It’s a simple trick, but it works.\n\n## Why `dbus`?\n\nWhile not essential for proxy functionality (based on my testing), the WARP client spams log errors if `dbus` isn’t running. So I included a minimal `dbus` setup in the image to avoid noisy logs.\n\n## Can I use a paid WARP+ account?\n\nProbably—but I haven’t tested it. You’d likely need to mount the config directory. By default, the entrypoint script registers a new free account on every launch.\n\n## Why was this built?\n\nI maintain my own unofficial Cloudflare WARP client, [usque](https://github.com/Diniboy1123/usque), which is open source. I needed a way to run the official client reproducibly for comparison and research purposes.\n\n## Known issues\n\n- No way to change the bind address or port.\n- The entrypoint script is hardcoded. To customize behavior, replace the script or use `docker exec -it wasque /bin/sh` to make changes on the fly.\n- The `h2-only` MASQUE fallback doesn’t seem to work. This appears to be a general issue within the official clients; I couldn’t get it working on Android either.\n- If you don't have internet when the container is launched, the container will exit.\n\n## License\n\nThe code in this repository is licensed under the [MIT License](LICENSE.md). However keep in mind that the WARP client itself is closed source and proprietary software, so you must comply with its [ToS](https://www.cloudflare.com/website-terms/).\n\n## Disclaimer #2\n\n**This tool is not affiliated with Cloudflare in any way.** It has not been reviewed or endorsed by Cloudflare. This is an independent research project.\n\nCloudflare Warp, Warp+, 1.1.1.1™, Cloudflare Access™, Cloudflare Gateway™, and Cloudflare One™ are registered trademarks or wordmarks of Cloudflare, Inc. If you’re a Cloudflare employee and believe this project is harmful or violates your policies, please open an issue—I’ll do my best to resolve it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiniboy1123%2Fwasque","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiniboy1123%2Fwasque","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiniboy1123%2Fwasque/lists"}