Installation (Standalone)
Run a single NanoFleet agent with Docker — no dashboard needed. Ideal for simple setups or testing.
With a Telegram channel (recommended)
The agent has no built-in authentication. The safest setup keeps it off the public internet entirely — the Telegram channel is the only entry point, talking to the agent over an internal Docker network.
services:
agent:
image: ghcr.io/nanofleet/nanofleet-agent:latest
restart: unless-stopped
env_file: .env
volumes:
- ./workspace:/workspace
networks:
- agent-net
# No ports: — not exposed to the host
telegram:
image: ghcr.io/nanofleet/nanofleet-channel-telegram:latest
restart: unless-stopped
environment:
AGENT_URL: http://agent:4111
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
ALLOWED_USERS: ${ALLOWED_USERS}
NOTIFICATION_USER_ID: ${NOTIFICATION_USER_ID}
depends_on:
- agent
networks:
- agent-net
networks:
agent-net:
Copy the example env file and fill in the required values:
cp .env.example .env
Start with:
docker compose up -d
With the port exposed (dev / custom integrations)
If you need direct access to the agent’s HTTP API — for development, webhooks, or custom integrations — expose the port:
services:
agent:
image: ghcr.io/nanofleet/nanofleet-agent:latest
restart: unless-stopped
env_file: .env
volumes:
- ./workspace:/workspace
ports:
- "4111:4111"
Note: The agent API has no authentication. Do not expose port 4111 to the internet without a reverse proxy or firewall rule restricting access.
The agent is accessible at http://localhost:4111.
Upgrade
docker compose pull
docker compose up -d
Your workspace data is preserved because it lives in the ./workspace volume mount.