Prerequisites
- Docker installed on your host machine
.envfile configured with your credentials (copy from.env.example)reacher.config.yamlconfigured (copy fromreacher.config.example.yaml)
Docker Compose (recommended)
Docker Compose is the simplest path for most deployments. It builds the image, maps ports, loads your.env, and restarts automatically on crash or reboot.
1
Clone the repository
2
Configure environment and config files
3
Start the service
4
Verify it is running
{"status":"ok",...} from the health check endpoint.docker-compose.yml
This is the full Compose file included in the repository:docker-compose.yml
Manual docker run
If you prefer to manage the container directly without Compose:1
Build the image
2
Run the container
-d— run in the background (detached)-p 3000:3000— map host port 3000 to container port 3000--env-file .env— inject all variables from your.envfile--restart unless-stopped— restart automatically on crash or host reboot--name reacher— give the container a stable name for log and management commands
Checking logs
Health check
The/health endpoint returns the current server status. It requires the same token as the /mcp endpoint:
Updating to a new version
1
Pull the latest code
2
Rebuild and restart
Dockerfile reference
The included Dockerfile produces a minimal production image:Dockerfile
- Base image:
node:22-alpine— small Alpine-based Node 22 image openssh-client: required for thessh_exectool to reach Tailscale devicesnpm install --omit=dev: installs only production dependencies to keep the image lean- Built-in health check: polls the server’s HTTP port every 30 seconds