How to run Multilogin in a Docker container
You can run Multilogin launcher inside a Docker container. This is useful if you want to run automation on your local machine, a server, or a cloud setup without installing everything manually. To run Multilogin in Docker, you’ll create a docker-compose.yaml file, download a pre-built image, and start the container.
Before you start
- Install Docker by following the official installation guide for your operating system:
- Open Terminal or Command Prompt and check that Docker is installed correctly:
docker version
If you installed Docker Desktop, make sure it’s open before you continue.
Create the Docker Compose file
- Create a folder for your Docker files in any directory
- Open a text editor and paste this text:
docker-compose.yaml
services: launcher: image: public.ecr.aws/d3n0b1o9/mlx-launcher:mlx-latest ports: - "45001:45001" # HTTPS REST API - "45003:45003" # WSS restart: unless-stopped - Save it as
docker-compose.yamlinside the folder from Step 1
Start the container
Make sure you have at least 500 MB of free disk space for the image.
- Open Terminal or Command prompt (depending on your OS)
- Download the Docker image. It includes a modified Ubuntu setup with Multilogin launcher preinstalled:
docker pull public.ecr.aws/d3n0b1o9/mlx-launcher:mlx-latest - Go to the folder with your
docker-compose.yamlfile using thecdcommandLet's say you made a folder called “
container” in your user folder. Terminal sets the user folder as the default one. In this case, run:cd container - Type the following command to create a container:
docker compose up -d
The command will create a network called %your folder%_default and a container %your folder%-launcher-1. Copy the container name, as you will need to execute it.
Here are some useful Docker commands:
-
docker compose up -d– creates and starts the container -
docker compose logs -f– shows logs with the Launcher status and command results inside the container -
docker compose down– stops and removes the container
Open the container terminal
To open the container terminal, run:
docker exec -it %container name% bashIf it works, you’ll see the container terminal. You’re inside the container now. In the next sections, you’ll run a few test API commands.

Check if the launcher is running
To send API requests from inside the container, you’ll use cURL. Use the command below to make sure the launcher is working:
curl -sS https://launcher.mlx.yt:45001/api/v1/versionIf you see that the launcher is running, you’ll see a response with code 200:
{"data":{"env":"Multilogin EU","version":"master"},"status":{"error_code":"","http_code":200,"message":""}}The next sections show how to start and stop profiles. For more API requests, check the Multilogin API documentation.
Get your API token
To run the API requests, you need a bearer token. To get the bearer token, run the POST User Sign In request with cURL.
- Visit MD5 Hash Generator and convert your Multilogin account password
- Edit the command below by putting your Multilogin email and password (converted from Step 1) there:
cURL command with User Sign In request
curl --location 'https://api.multilogin.com/user/signin' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"email": "your email",
"password": "your password in MD5"
}'
3. Copy and paste the cURL request into the terminal.
You will get the following response:
{"status":{"error_code":"","http_code":200,"message":"Successful signin"},"data":{"refresh_token":"YOUR BEARER TOKEN"}}Copy the value of the refresh_token. You’ll need it for the next requests.

You can also use an automation token instead of a regular bearer token: How to generate Multilogin automation tokens with Postman
Start a quick profile
To see if the profiles can run inside the container, try using the POST Start Quick Profile v3 request. You’ll need to add an authorization header with your bearer token. You can use the reference below. You can change the profile parameters if needed. Don't forget to put your bearer token (replace YOUR_TOKEN with your bearer token):
cURL command with Start Quick Profile v3 request
curl --location 'https://launcher.mlx.yt:45001/api/v3/profile/quick' \
--header 'Authorization: YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"browser_type": "mimic",
"os_type": "macos",
"parameters": {
"flags": {
"navigator_masking": "mask",
"audio_masking": "mask",
"localization_masking": "mask",
"geolocation_popup": "prompt",
"geolocation_masking": "mask",
"timezone_masking": "mask",
"canvas_noise": "natural",
"graphics_noise": "natural",
"graphics_masking": "mask",
"webrtc_masking": "natural",
"fonts_masking": "mask",
"media_devices_masking": "mask",
"screen_masking": "mask",
"proxy_masking": "custom",
"ports_masking": "mask"
}
}
}'A successful response looks like this:
{"data":{"browser_type":"mimic","core_version":148,"id":"PROFILE_ID","is_quick":true},"status":{"error_code":"","http_code":200,"message":"Quick profile started successfully"}}

Copy the profile ID. You’ll need it to stop the profile.
To learn more about quick profiles, check this article: How to create a quick Multilogin profile with Postman.
Stop the profile
Now stop the profile using the GET Stop Browser Profile request. Change PROFILE_ID and YOUR_TOKEN values:
cURL command with Stop Browser Profile request
curl --location 'https://launcher.mlx.yt:45001/api/v1/profile/stop/p/PROFILE_ID' \
--header 'Authorization: YOUR_TOKEN' \
--header 'Accept: application/json'The profile should stop after the request.
Note: The API may still close the profile even if you see this message:
{"status":{"error_code":"INTERNAL_SERVER_ERROR","http_code":500,"message":"profile already stopped"}}
This usually means the profile was already stopped, so you’re good.
How to use your own cURL commands
You can use any requests from the Multilogin API documentation, but you will need to adjust them for cURL. First, copy a request:
- Go to the Multilogin API documentation
- Expand the folder in the library dashboard
- Choose the endpoint you want to use
- Set the request example language to cURL
- Click “Copy”

Then edit the request:
- Add the authentication header under the first line:
--header 'Authorization: YOUR_TOKEN' \ - Change the parameter values.
After that, copy the command and paste it into the terminal inside your container.

Extra tips
-
Docker image in the article is a modified Ubuntu setup. If you want to install additional tools (for example, Python script support), run the following command to execute the container as a super user:
docker exec -it -u 0 %container name% bash - If you need to stop the container without removing it, type this command:
docker stop %container name% -
If you need to start an inactive container, type this command:
docker start %container name%