Skip to content

OpenClaw

Your own personal AI assistant. Any OS. Any Platform. The lobster way. ๐Ÿฆž

Install

curl -fsSL https://openclaw.ai/install.sh | bash

์˜จ๋ณด๋”ฉ ๋งˆ๋ฒ•์‚ฌ ์‹คํ–‰

openclaw onboard --install-daemon

Pi

Docker ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

WARNING

ํ˜น์‹œ๋ผ๋„ ํŒจํ‚ท ํ•„ํ„ฐ ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด iptables#Docker ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ํ•ญ๋ชฉ ์„ ์ฐธ์กฐ

docker๋ฅผ ์„ค์น˜ํ•œ ํ›„:

git clone https://github.com/openclaw/openclaw
./docker-setup.sh

์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•˜๋Š” ์ผ:

  • ๊ฒŒ์ดํŠธ์›จ์ด ์ด๋ฏธ์ง€ ๋นŒ๋“œ
  • ์˜จ๋ณด๋”ฉ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‹คํ–‰
  • ์„ ํƒ์  ๊ณต๊ธ‰์ž ์„ค์ •
  • Docker Compose ๋ฅผ ํ†ตํ•ด ๊ฒŒ์ดํŠธ์›จ์ด ์‹œ์ž‘.
  • ๊ฒŒ์ดํŠธ์›จ์ด ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. .env

์„ ํƒ์  ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

  • OPENCLAW_DOCKER_APT_PACKAGES - ๋นŒ๋“œ ์ค‘์— ์ถ”๊ฐ€ apt ํŒจํ‚ค์ง€ ์„ค์น˜
  • OPENCLAW_EXTRA_MOUNTS - ์ถ”๊ฐ€ ํ˜ธ์ŠคํŠธ ๋ฐ”์ธ๋”ฉ ๋งˆ์šดํŠธ ์ถ”๊ฐ€
  • OPENCLAW_HOME_VOLUME - /home/node ์ด๋ฆ„์˜ ๋ณผ๋ฅจ ์ง€์†์„ฑ.

๊ทธ๊ฒƒ์ด ๋๋‚œ ํ›„์—:

  • ๋ธŒ๋ผ์šฐ์ €์—์„œ http://127.0.0.1:18789/ ์ ‘์†.
  • ํ† ํฐ ์ปจํŠธ๋กค์„ UI(์„ค์ • โ†’ ํ† ํฐ)์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • URL์ด ๋‹ค์‹œ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? docker compose run --rm openclaw-cli dashboard --no-open

ํ˜ธ์ŠคํŠธ์— config/workspace๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค:

  • ~/.openclaw/ - ๊ตฌ์„ฑ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ฒฐ๊ตญ OpenClaw ๋ฉ”๋ชจ๋ฆฌ, ๊ตฌ์„ฑ, ํƒ€์‚ฌ API ํ‚ค ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ~/.openclaw/workspace - ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋  ๋•Œ ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์ด ๊ฐ€๋“ ์ฐฌ ์ž‘์—… ์˜์—ญ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ๋„ ์—ฌ๊ธฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋™์œผ๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

docker build -t openclaw:local -f Dockerfile .
docker compose run --rm openclaw-cli onboard
docker compose up -d openclaw-gateway

๋งŒ์•ฝ unauthorized ๋˜๋Š” disconnected (1008): pairing required ๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค๋ฉด ๋Œ€์‹œ ๋ณด๋“œ ๋งํฌ ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์žฅ์น˜๋ฅผ ์Šน์ธํ•ด์•ผ ํ•œ๋‹ค:

# ๋Œ€์‹œ๋ณด๋“œ ๋งํฌ ์žฌ์ƒ์„ฑ
docker compose run --rm openclaw-cli dashboard --no-open

# ์Šน์ธ ๋Œ€๊ธฐ ์ค‘์ธ ๋””๋ฐ”์ด์Šค ํ™•์ธ
docker compose run --rm openclaw-cli devices list

# ๋””๋ฐ”์ด์Šค ์Šน์ธ (์ถœ๋ ฅ๋œ requestId ์‚ฌ์šฉ)
docker compose run --rm openclaw-cli devices approve <requestId>

์ ‘์† ๋ฐฉ๋ฒ•

๊ทธ๋ƒฅ ์ ‘์†ํ•˜๋ฉด ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค:

disconnected (1008): control ui requires HTTPS or localhost (secure context)

๋ณด์•ˆ์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด localhost ๋„๋ฉ”์ธ ๋˜๋Š” https:// ์Šคํ‚ค๋งˆ๋กœ ์ ‘์† ๊ฐ€๋Šฅํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ๋กœ์ปฌ PC ํ„ฐ๋ฏธ๋„์—์„œ SSH ํ„ฐ๋„๋ง์œผ๋กœ ์ ‘์†ํ•ด์•ผ ํ•œ๋‹ค:

ssh -N -L 18789:127.0.0.1:18789 user@<์›๊ฒฉPC_IP>

์ดํ›„ http://localhost:18789 ์œผ๋กœ ์ ‘์†ํ•˜๋ฉด ๋œ๋‹ค.

ํ…”๋ ˆ๊ทธ๋žจ ๋“ฑ๋ก

ํ•ด๋‹น ์ฑ—๋ด‡์ด ์žˆ๋Š” ์ฑ„ํŒ…๋ฐฉ์— ์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค:

OpenClaw: access not configured.

Your Telegram user id: NNNNNNNN

Pairing code: XXXXXXXX

Ask the bot owner to approve with:
openclaw pairing approve telegram <code>

๋‚˜์™€์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ž.

openclaw pairing approve telegram XXXXXXXX

๋งŒ์•ฝ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ํ•˜์ž:

docker compose exec openclaw-gateway node dist/index.js pairing approve telegram XXXXXXXX

wakeMode

OpenClaw cron job์˜ ์‹คํ–‰ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๋Š” ์„ค์ •. ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด next-heartbeat๊ฐ€ ๊ธฐ๋ณธ๊ฐ’.

๊ฐ’

๊ฐ’

์„ค๋ช…

์‚ฌ์šฉ ์‚ฌ๋ก€

now

์Šค์ผ€์ค„ ์‹œ๊ฐ„์— ์ฆ‰์‹œ ์‹คํ–‰

์ •์‹œ ์•Œ๋ฆผ, ์ •ํ™•ํ•œ ํƒ€์ด๋ฐ ํ•„์š” ์‹œ

next-heartbeat

์Šค์ผ€์ค„ ์‹œ๊ฐ„ ์ดํ›„ ๋‹ค์Œ heartbeat์—์„œ ์‹คํ–‰

๋ฐฐํ„ฐ๋ฆฌ/๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ, ๋А์Šจํ•œ ํƒ€์ด๋ฐ ํ—ˆ์šฉ ์‹œ

๋™์ž‘ ๋ฐฉ์‹

now

  • ์Šค์ผ€์ค„๋œ ์‹œ๊ฐ„(์˜ˆ: 08:00)์— ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ง์ ‘ job ์‹คํ–‰
  • ๊ฒŒ์ดํŠธ์›จ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํƒ€์ด๋จธ๋ฅผ ๊ด€๋ฆฌ
  • ์ •ํ™•ํ•œ ์‹คํ–‰ ์‹œ๊ฐ„ ๋ณด์žฅ

next-heartbeat

  • ์Šค์ผ€์ค„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ
  • ๋‹ค์Œ heartbeat poll์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
  • heartbeat ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ์ง€์—ฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • heartbeat๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ์˜์›ํžˆ ์‹คํ–‰ ์•ˆ ๋จ

์ฃผ์˜์‚ฌํ•ญ

  • next-heartbeat๋Š” heartbeat polling์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•จ
  • heartbeat ๊ฐ„๊ฒฉ์ด ๊ธธ๋ฉด ์•Œ๋ฆผ ์ง€์—ฐ ๋ฐœ์ƒ
  • ์ •์‹œ ์•Œ๋ฆผ์ด ํ•„์š”ํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ now ์‚ฌ์šฉ

์˜ˆ์‹œ

{
  "name": "์•„์นจ ์•Œ๋ฆผ",
  "schedule": { "kind": "cron", "expr": "0 22 * * *", "tz": "UTC" },
  "wakeMode": "now",
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "์•Œ๋ฆผ ๋‚ด์šฉ"
  }
}

Troubleshooting

gateway closed (1006 abnormal closure (no close frame)): no close reason

๋””๋ฐ”์ด์Šค ๋“ฑ๋ก์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ–ˆ์„ ๋•Œ:

docker compose run --rm openclaw-cli devices list

๋ฅผ ์น˜๋ฉด ๋‹ค์Œ ์—๋Ÿฌ๊ฐ€ ์ถœ๋ ฅ๋จ:

WARN[0000] The "CLAUDE_WEB_COOKIE" variable is not set. Defaulting to a blank string.
WARN[0000] The "CLAUDE_AI_SESSION_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "CLAUDE_WEB_SESSION_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "CLAUDE_WEB_COOKIE" variable is not set. Defaulting to a blank string.
WARN[0000] The "CLAUDE_AI_SESSION_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "CLAUDE_WEB_SESSION_KEY" variable is not set. Defaulting to a blank string.
Container openclaw-openclaw-cli-run-4767ca06b094 Creating
Container openclaw-openclaw-cli-run-4767ca06b094 Created

๐Ÿฆž OpenClaw 2026.2.3 (unknown) โ€” I read logs so you can keep pretending you don't have to.

โ”‚
โ—‡
[openclaw] CLI failed: Error: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/node/.openclaw/openclaw.json
Bind: lan
    at Object.onClose (file:///app/dist/call-BxBOsbXG.js:262:10)
    at WebSocket.<anonymous> (file:///app/dist/client-i9GLCujO.js:1400:23)
    at WebSocket.emit (node:events:519:28)
    at WebSocket.emitClose (/app/node_modules/.pnpm/[email protected]/node_modules/ws/lib/websocket.js:263:12)
    at emitErrorAndClose (/app/node_modules/.pnpm/[email protected]/node_modules/ws/lib/websocket.js:1047:13)
    at ClientRequest.<anonymous> (/app/node_modules/.pnpm/[email protected]/node_modules/ws/lib/websocket.js:886:5)
    at ClientRequest.emit (node:events:519:28)
    at emitErrorEvent (node:_http_client:107:11)
    at Socket.socketErrorListener (node:_http_client:574:5)
    at Socket.emit (node:events:519:28)

์ด ๊ฒฝ์šฐ gateway ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•˜์„ธ์š”:

docker compose exec openclaw-gateway node dist/index.js devices list

unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)

๋””๋ฐ”์ด์Šค ๋“ฑ๋ก์‹œ:

docker compose exec openclaw-gateway node dist/index.js devices list

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค๋ฉด:

๐Ÿฆž OpenClaw 2026.2.3 (unknown) โ€” I'm not magicโ€”I'm just extremely persistent with retries and coping strategies.

โ”‚
gateway connect failed: Error: unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
โ—‡
[openclaw] CLI failed: Error: gateway closed (1008): unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/node/.openclaw/openclaw.json
Bind: lan
    at Object.onClose (file:///app/dist/call-BxBOsbXG.js:262:10)
    at WebSocket.<anonymous> (file:///app/dist/client-i9GLCujO.js:1400:23)
    at WebSocket.emit (node:events:519:28)
    at WebSocket.emitClose (/app/node_modules/.pnpm/[email protected]/node_modules/ws/lib/websocket.js:273:10)
    at Socket.socketOnClose (/app/node_modules/.pnpm/[email protected]/node_modules/ws/lib/websocket.js:1346:15)
    at Socket.emit (node:events:519:28)
    at TCP.<anonymous> (node:net:346:12)

token mismatch๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์€ ๋˜์ง€๋งŒ ์ธ์ฆ์—์„œ ์‹คํŒจํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์˜ ํ† ํฐ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

# 1. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์„ค์ •
docker compose exec openclaw-gateway cat /home/node/.openclaw/openclaw.json | grep -A2 token

# 2. ํ˜ธ์ŠคํŠธ ์„ค์ •
cat ~/.openclaw/openclaw.json | grep -A2 token

# 3. .env ํŒŒ์ผ
cat .env | grep TOKEN

์œ„์˜ ์„ธ ํ† ํฐ์ด ๋ชจ๋‘ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ํ† ํฐ์ด lNXrjBP5su9SUP4spBfNTaEYZy67WmB7b25ex4yYeXAENSDW ์ผ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ† ํฐ์„ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค:

docker compose exec openclaw-gateway node dist/index.js devices list --token "lNXrjBP5su9SUP4spBfNTaEYZy67WmB7b25ex4yYeXAENSDW"

์ถœ๋ ฅ๋œ Pending ํ…Œ์ด๋ธ”์˜ Request ์ปฌ๋Ÿผ์— UUID ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค. Request UUID ๊ฐ€ 99a9713e-be0d-469f-bca4-25153a12a670 ์ผ ๊ฒฝ์šฐ:

docker compose exec openclaw-gateway node dist/index.js devices approve 99a9713e-be0d-469f-bca4-25153a12a670 --token "lNXrjBP5su9SUP4spBfNTaEYZy67WmB7b25ex4yYeXAENSDW"

See also

  • AI Agents
  • Clawdbot
  • Moltbot
  • OpenClaw
  • Moltbook
  • NanoClaw - Apple ์ปจํ…Œ์ด๋„ˆ ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” 500์ค„์งœ๋ฆฌ TypeScript ๊ธฐ๋ฐ˜ Claude ์–ด์‹œ์Šคํ„ดํŠธ
  • Kimi Claw - OpenClaw๋ฅผ ํด๋ผ์šฐ๋“œ์— ์›ํด๋ฆญ ๋ฐฐํฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ
  • gogcli - ํ„ฐ๋ฏธ๋„์—์„œ Google Workspace๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ณ ์† CLI

Favorite site

Guides