Connection reset by peer

  1. My goal: run retool selfhosted on remote server
  2. Issue: failure: Connection reset by peer
  3. Retool version & hosting setup (Docker, K8s, cloud provider, etc.): 3.253.8-stable , last version of docker, remote server with putty (ubuntu with vnc viewer)
  4. Error message(s) or screenshots: failure: Connection reset by peer
  5. What I’ve tried so far:

I installed retool on my laptop with windows 11 into wsl (ubuntu) and it run fast and without any problems about 30 mins and without changing compose.yml. but when i install retool on a remote server that has putty and I connect to ubuntu (last version) with vnc viewer , I get lots of errors like I can’t run with privilage true and I have to set unprivilage mode and ignore code executor to run all containers without errors. now all containers are up and there is no container restarting but still i get

curl http://localhost:3000/auth/signup
curl: (56) Recv failure: Connection reset by peer

port 3000 is open and every thing is ok but connection reset again and I tryed multiple weeks to run it by lots of ways but I could’t.

do you know why I can’t run it on the server but in my laptop everything is ok?

thanks in advance

I added this to docker.env for resolving code executor errors

ALLOW_UNSAFE_CODE_EXECUTION=true
CONTAINER_UNPRIVILEGED_MODE=true
IGNORE_CODE_EXECUTOR_STARTUP_CHECK=true

Hi @Bahar_Jalali,

There could be a couple reasons why this error message is appearing. Let me give you some steps to test out and see if we can isolate where the issue is coming from.

Step 1: Identify which container is actually serving port 3000

Run this in the same directory as your docker-compose.yml:

docker ps --format "table {{.Names}}\t{{.Ports}}"

Look for something like:

retool-onpremise-frontend    0.0.0.0:3000->3000/tcp

If you don’t see port 3000 mapped, that’s the issue — your frontend container isn’t exposing it to the host.

In that case, open your docker-compose.yml and ensure the frontend service has:

ports:
  - "3000:3000"

Then restart:

docker compose down
docker compose up -d

Step 2: Check that the service is actually listening inside the container

Run inside the frontend container:

docker exec -it retool-onpremise-frontend bash
apt-get update && apt-get install -y net-tools curl
netstat -tuln | grep 3000

You should see something like:

tcp6       0      0 :::3000                 :::*                    LISTEN

If not listening, that means the Retool frontend didn’t start properly — even if the container looks healthy.

To verify logs:

docker logs retool-onpremise-frontend --tail 50

Look for errors like:

  • Cannot connect to Retool backend
  • ECONNREFUSED
  • Connection reset by peer