This repo packages OpenClaw for Northflank with a small /setup web wizard so users can deploy and onboard without running any commands.
- OpenClaw Gateway + Control UI (served at
/and/openclaw) - A friendly Setup Wizard at
/setup(protected by a password) - Persistent state via Northflank Volume (so config/credentials/memory survive redeploys)
- The container runs a wrapper web server.
- The wrapper protects
/setupwithSETUP_PASSWORD. - During setup, the wrapper runs
openclaw onboard --non-interactive ...inside the container, writes state to the volume, and then starts the gateway. - After setup,
/is OpenClaw. The wrapper reverse-proxies all traffic (including WebSockets) to the local gateway process.
- Create an account on Northflank
- Click Deploy OpenClaw now
- Click Deploy stack to build and run the OpenClaw template
- Wait for the deployment to complete
- Open the public OpenClaw URL
Then:
- Visit
https://p01--<your-app>--xxxx.code.run/setup - Complete setup
- Visit
https://p01--<your-app>--xxxx.code.run/and/openclaw
- Open Telegram and message @BotFather
- Run
/newbotand follow the prompts - BotFather will give you a token that looks like:
123456789:AA... - Paste that token into
/setup
- Go to the Discord Developer Portal: https://discord.com/developers/applications
- New Application → pick a name
- Open the Bot tab → Add Bot
- Copy the Bot Token and paste it into
/setup - Invite the bot to your server (OAuth2 URL Generator → scopes:
bot,applications.commands; then choose permissions)
docker build -t openclaw-northflank-template .
docker run --rm -p 8080:8080 \
-e PORT=8080 \
-e SETUP_PASSWORD=test \
-e OPENCLAW_STATE_DIR=/data/.openclaw \
-e OPENCLAW_WORKSPACE_DIR=/data/workspace \
-v $(pwd)/.tmpdata:/data \
openclaw-northflank-template
# open http://localhost:8080/setup (password: test)