Skip to content
NanoFleet NanoFleet

Installation (Standalone)

Run a single NanoFleet agent with Docker — no dashboard needed. Ideal for simple setups or testing.

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.