Guide · Open source
How to use FlareSolverr: Docker setup, requests and sessions
Updated · written with AI from the project's own documentation and checked against our catalogue data
FlareSolverr is an open-source proxy server, licensed under MIT and written in Python, that handles requests to pages protected by Cloudflare or DDoS-GUARD. It runs on your own machine, opens a Chrome browser for each request, waits for the protection challenge to be solved, and returns the HTML and cookies. This guide shows you how to start it with Docker, send a first request, and avoid the common memory and security pitfalls. It is intended for pages you are allowed to access.
Quick start
- 1Install Docker. Make sure Docker is installed and running on the machine where FlareSolverr will run.
- 2Start the container. Run the docker run command from the README, which maps the service to 127.0.0.1:8191 and sets LOG_LEVEL to info.
- 3Send a test request. POST JSON with cmd set to request.get, a url and a maxTimeout to http://localhost:8191/v1.
- 4Read the response. Take the HTML and cookies from the JSON response and pass the cookies to your other HTTP client.
- 5Use sessions for repeated access. Create a session with sessions.create, reuse it, and close it with sessions.destroy when finished.
- 6Protect memory and disk. Limit parallel requests on low-RAM machines and add a tmpfs mount for /tmp if you run it in Docker.
What FlareSolverr does and how it works
FlareSolverr starts a proxy server and waits for requests in an idle state, using few resources. When a request arrives, it uses Selenium with undetected-chromedriver to start a Chrome browser, opens the URL with your parameters, and waits until the Cloudflare challenge is solved or a timeout is reached.
The HTML and cookies are sent back to you. Those cookies can then be used by other HTTP clients to access the page.
Install FlareSolverr with Docker
The README recommends Docker because the project depends on an external browser that is already included in the image. Your only listed prerequisite is Docker. Start the container with the Docker CLI using the command below. It binds the service to 127.0.0.1 on port 8191, so only your own machine can reach it.
The project also provides a docker-compose.yml file. You can clone the repository and run docker compose up -d (Compose V2) or docker-compose up -d (Compose V1).
- Images are published to the GitHub Registry and DockerHub.
- Supported architectures are x86, x86-64, ARM32 and ARM64.
docker run -d --name=flaresolverr -p 127.0.0.1:8191:8191 -e LOG_LEVEL=info --restart unless-stopped ghcr.io/flaresolverr/flaresolverr:latestSend your first request to the REST endpoint
FlareSolverr listens on http://localhost:8191/v1 and accepts JSON POST requests. Set cmd to request.get, give the url, and set maxTimeout in milliseconds. The example below asks for http://www.google.com/ with a 60-second timeout.
The same request can be sent from Python with the requests library, or from PowerShell. The response body is JSON and contains the page HTML and cookies.
curl -L -X POST 'http://localhost:8191/v1' -H 'Content-Type: application/json' --data-raw '{
"cmd": "request.get",
"url": "http://www.google.com/",
"maxTimeout": 60000
}'Use sessions to avoid solving challenges repeatedly
The sessions.create command launches a browser instance that keeps its cookies until you destroy it with sessions.destroy. This means you do not have to solve the challenge again on every request, and you do not have to resend cookies. It also speeds up requests because a new browser does not start each time.
Sessions keep a browser in memory, so close them as soon as you finish. The optional session parameter sets your own session ID; if you leave it out, a random UUID is assigned. The optional proxy parameter, disabled by default, accepts a URL that includes the scheme, such as http://, socks4:// or socks5://.
- Always close sessions with sessions.destroy when you are done.
- Set the session parameter if you want a predictable ID to reuse.
Manage memory and disk wear
Web browsers use a lot of memory, and with each request a new browser is launched. If you run FlareSolverr on a machine with little RAM, do not send many requests at once. The README estimates usage at 10MB to 30MB per request, cleared when the request finishes.
By default, temporary browser profiles are written to /tmp. In Docker without a RAM-backed mount, that writes to host storage. The README suggests mounting /tmp as tmpfs. For Docker CLI, add --tmpfs /tmp:size=256M,mode=1777. The size is a ceiling, so adjust it to your usage.
docker run -d --name=flaresolverr -p 127.0.0.1:8191:8191 -e LOG_LEVEL=info --tmpfs /tmp:size=256M,mode=1777 --restart unless-stopped ghcr.io/flaresolverr/flaresolverr:latestKeep the service private
The README says not to expose FlareSolverr to the internet, because it can be abused. The port mapping in the install command binds to 127.0.0.1 for this reason. If you run it on a Debian host, the README also notes that libseccomp2 should be version 2.5.x and gives apt commands for that package. Restart the Docker daemon and the container after changing it.
What people use it for
- A developer script that is blocked by a Cloudflare challenge on a site the developer is allowed to access.
- A self-hosted tool that needs to fetch Cloudflare-protected pages through a local REST endpoint.
- Reusing cookies from FlareSolverr in another HTTP client for repeated requests within a session.
Frequently asked questions
Is FlareSolverr free to use?
FlareSolverr is released under the MIT licence, according to the project's listing. The README does not describe any paid tier, so the code can be used under the terms of that licence.
What do I need to install FlareSolverr?
The only prerequisite listed for the recommended install is Docker. The image already includes the browser it needs. Precompiled binaries and source installs are for x64 only, and source installs require Python 3.11 and Chrome or Chromium.
How do I install FlareSolverr with Docker?
Run the docker run command from the README, which binds port 8191 to 127.0.0.1 and uses the ghcr.io/flaresolverr/flaresolverr:latest image. You can also use the docker-compose.yml file in the repository.
Can I run FlareSolverr on a Raspberry Pi or ARM machine?
Docker images are published for ARM32 and ARM64 as well as x86 and x86-64. The README says precompiled binaries and source installs only work on x64, so use Docker on other architectures.
Why is FlareSolverr using so much memory?
Each request launches a new Chrome browser, and browsers use a lot of memory. The README estimates 10MB to 30MB per request, cleared when the request finishes. Send fewer parallel requests on machines with little RAM.
Should I expose FlareSolverr to the internet?
No. The README warns that it can be abused if exposed to the internet, so keep the port bound to 127.0.0.1 or your local network.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
FlareSolverr suits developers and self-hosters who need a local REST endpoint that can fetch Cloudflare-protected pages they are allowed to access, especially inside Docker. It is a poor fit if you need to expose it publicly, if your machine has little RAM, or if you need a non-x64 install outside Docker. For those cases, the README names cloudscraper, undetected-chromedriver and Byparr as comparable projects to look at.
Install options & downloads