
들어가며
ChatGPT, Claude 같은 AI를 매번 웹에서 열어 쓰는 시대는 지났습니다. 2025년 현재, AI는 내 서버에서 24시간 상주하며 알아서 일하는 비서로 진화하고 있습니다.
OpenClaw는 Anthropic의 Claude를 핵심 두뇌로 사용하는 오픈소스 AI 에이전트 프레임워크입니다. 단순한 챗봇이 아니라, 실제로 서버의 터미널을 조작하고, 웹 브라우저를 제어하며, 파일을 읽고 쓰고, 메신저로 대화하는 자율적 AI 비서를 구축할 수 있습니다.
이 글에서는 리눅스 서버에 OpenClaw를 설치하고, 실제로 활용 가능한 수준까지 설정하는 전 과정을 다룹니다.
이 글에서 다루는 내용
- OpenClaw 아키텍처와 핵심 개념
- 리눅스 서버 설치 및 초기 설정
- Telegram 메신저 연동
- 브라우저 자동화 (CDP 연결)
- 크론 작업과 자동화 스케줄링
- 메모리 시스템과 페르소나 커스터마이징
- 보안 고려사항과 운영 팁
OpenClaw란?

OpenClaw는 LLM(대규모 언어 모델) 기반 에이전트 프레임워크입니다. Claude Code의 도구 사용 능력을 활용해, AI가 단순히 텍스트를 생성하는 것을 넘어 실제 환경에서 행동할 수 있도록 합니다.
핵심 특징
| 기능 | 설명 |
|---|---|
| 터미널 제어 | 서버에서 직접 셸 명령어 실행 |
| 브라우저 자동화 | Chrome을 제어하여 웹 작업 수행 |
| 메신저 통합 | Telegram, Discord, Signal 등과 연동 |
| 크론 스케줄링 | 정해진 시간에 자동으로 작업 실행 |
| 메모리 시스템 | 대화 맥락과 장기 기억을 파일로 관리 |
| 멀티 세션 | 메인 세션과 독립 세션을 분리하여 병렬 작업 |
| 노드 연동 | 모바일 기기, 다른 서버와 연결 |
아키텍처 개요
┌─────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ ┌───────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Session │ │ Cron │ │ Channel │ │
│ │ Manager │ │ Scheduler│ │ Router │ │
│ └─────┬─────┘ └────┬─────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌─────▼──────────────▼───────────────▼───────┐ │
│ │ Claude Code (LLM Core) │ │
│ │ 도구 호출 / 추론 / 계획 수립 │ │
│ └─────┬──────────┬──────────┬────────────────┘ │
│ │ │ │ │
│ ┌─────▼───┐ ┌───▼────┐ ┌──▼─────────┐ │
│ │ Terminal │ │Browser │ │ File I/O │ │
│ │ (exec) │ │ (CDP) │ │ (read/edit)│ │
│ └─────────┘ └────────┘ └────────────┘ │
└─────────────────────────────────────────────────┘
│ │ │
┌────▼────┐ ┌────▼─────┐ ┌────▼────┐
│ Telegram│ │ Chrome │ │Workspace│
│ Bot │ │ Browser │ │ Files │
└─────────┘ └──────────┘ └─────────┘
Gateway는 OpenClaw의 핵심 데몬으로, 모든 세션과 채널, 스케줄러를 관리합니다. Claude Code가 실제 AI 추론을 담당하고, 다양한 도구(터미널, 브라우저, 파일 등)를 통해 외부 환경과 상호작용합니다.
사전 준비
시스템 요구사항
| 항목 | 최소 사양 | 권장 사양 |
|---|---|---|
| OS | Ubuntu 20.04+ / Rocky Linux 9+ | Ubuntu 22.04 LTS |
| CPU | 2코어 | 4코어+ |
| RAM | 2GB | 4GB+ |
| 디스크 | 10GB | 20GB+ |
| Node.js | v20+ | v22 LTS |
| 네트워크 | 인터넷 접속 필수 | 고정 IP 권장 |
💡 OpenClaw 자체는 가볍습니다. AI 추론은 Anthropic 클라우드에서 처리되므로, 서버에는 GPU가 필요 없습니다.
필요한 API 키
- Anthropic API Key: Claude 모델 사용을 위한 필수 키 (console.anthropic.com)
- Telegram Bot Token: 메신저 연동 시 필요 (BotFather에서 발급)
설치하기

1단계: Node.js 설치
Rocky Linux / CentOS 기준:
# NodeSource 저장소 추가
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
# Node.js 설치
sudo dnf install -y nodejs
# 버전 확인
node -v # v22.x.x
npm -v # 10.x.x
Ubuntu / Debian 기준:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
2단계: 전용 사용자 생성
보안을 위해 OpenClaw 전용 사용자를 생성하는 것을 권장합니다.
# openclaw 사용자 생성
sudo useradd -m -s /bin/bash openclaw
# 사용자 전환
sudo su - openclaw
3단계: OpenClaw 설치
# 글로벌 npm 경로 설정 (sudo 없이 설치하기 위함)
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# OpenClaw 설치
npm install -g openclaw
# 설치 확인
openclaw --version
4단계: 초기 설정
# 대화형 설정 시작
openclaw configure
설정 과정에서 다음 항목들을 입력합니다:
- Anthropic API Key:
sk-ant-...형태의 키 - 기본 모델:
anthropic/claude-sonnet-4-5(비용 효율적) 또는anthropic/claude-opus-4-6(최고 성능) - 작업 디렉토리: 기본값
~/.openclaw/workspace사용
5단계: Gateway 시작
# Gateway 데몬 시작
openclaw gateway start
# 상태 확인
openclaw gateway status
정상적으로 시작되면 다음과 같은 출력을 볼 수 있습니다:
✔ Gateway is running
PID: 12345
Uptime: 5s
Sessions: 0 active
Telegram 연동하기
OpenClaw의 가장 강력한 기능 중 하나는 메신저를 통한 자연어 제어입니다. Telegram을 연동하면 스마트폰에서 AI 비서에게 직접 지시할 수 있습니다.
BotFather에서 봇 생성
- Telegram에서 @BotFather를 검색하여 대화 시작
/newbot명령어 입력- 봇 이름 입력 (예:
My OpenClaw Bot) - 봇 유저네임 입력 (예:
my_openclaw_bot—_bot으로 끝나야 함) - 발급된 Bot Token을 복사
OpenClaw에 Telegram 설정
openclaw configure --section telegram
설정 항목:
# Telegram Bot Token
token: "7123456789:AAH..."
# 허용할 사용자 ID (보안을 위해 반드시 설정)
allowedUsers:
- "YOUR_TELEGRAM_USER_ID"
⚠️ 보안 주의:
allowedUsers를 설정하지 않으면 누구나 봇에게 명령을 내릴 수 있습니다. 반드시 자신의 Telegram User ID만 허용하세요.
Telegram User ID 확인 방법
- @userinfobot에게 아무 메시지나 보내면 ID를 알려줍니다
- 또는 @RawDataBot을 사용
연동 테스트
Gateway를 재시작한 후 Telegram에서 봇에게 메시지를 보내봅니다:
나: 안녕! 넌 누구야?
봇: 안녕하세요! 저는 OpenClaw로 구동되는 AI 비서입니다.
무엇을 도와드릴까요?
브라우저 자동화 설정

OpenClaw의 진정한 힘은 웹 브라우저를 직접 제어할 수 있다는 것입니다. Chrome DevTools Protocol(CDP)을 통해 Chrome 브라우저를 조작하여, 웹사이트 로그인, 폼 작성, 데이터 수집 등을 자동화할 수 있습니다.
Chrome 설치
# Rocky Linux / CentOS
sudo dnf install -y google-chrome-stable
# Ubuntu / Debian
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt update && sudo apt install -y google-chrome-stable
CDP 모드로 Chrome 실행
기존 Chrome 프로필과 충돌을 방지하기 위해 별도 프로필 디렉토리를 사용합니다:
# 별도 프로필로 Chrome 실행 (디스플레이 환경 필요)
DISPLAY=:0 google-chrome-stable \
--remote-debugging-port=9222 \
--no-first-run \
--no-default-browser-check \
--user-data-dir=$HOME/.openclaw/chrome-debug
💡 핵심 포인트: 기존 Chrome 프로필(
~/.config/google-chrome)로는--remote-debugging-port가 열리지 않습니다. 반드시 별도--user-data-dir을 지정하세요.
헤드리스 서버에서 실행 (GUI 없는 환경)
GUI 데스크톱이 없는 서버에서는 가상 디스플레이를 사용합니다:
# Xvfb 설치
sudo dnf install -y xorg-x11-server-Xvfb # Rocky Linux
# sudo apt install -y xvfb # Ubuntu
# 가상 디스플레이 시작
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
# Chrome 실행
google-chrome-stable \
--remote-debugging-port=9222 \
--no-first-run \
--no-default-browser-check \
--user-data-dir=$HOME/.openclaw/chrome-debug
OpenClaw 브라우저 설정
openclaw configure --section browser
설정 내용:
{
"browser": {
"cdpUrl": "http://127.0.0.1:9222",
"defaultProfile": "openclaw",
"noSandbox": true
}
}
연결 확인
# CDP 엔드포인트 확인
curl -s http://127.0.0.1:9222/json/version | python3 -m json.tool
정상 응답 예시:
{
"Browser": "Chrome/145.0.6422.60",
"Protocol-Version": "1.3",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/..."
}
브라우저 자동화 활용 예시
Telegram에서 다음과 같은 지시를 내릴 수 있습니다:
나: 네이버에 접속해서 오늘 날씨 알려줘
봇: 네이버에 접속하여 날씨를 확인했습니다.
서울 현재 기온 28°C, 맑음 ☀️
오후부터 구름 많아지며 내일 비 예보가 있습니다.
나: 동행복권 사이트에서 로또 5장 사줘
봇: 로또 6/45 자동번호 5장 구매 완료했습니다! 🎰
구매금액: 5,000원
잔액: 42,350원
크론 작업 설정

OpenClaw의 크론 시스템을 사용하면 정해진 시간에 자동으로 AI가 작업을 수행합니다. 일반 crontab과 달리, AI가 상황을 판단하여 유연하게 대응할 수 있다는 것이 큰 장점입니다.
크론 작업 유형
OpenClaw은 두 가지 크론 페이로드를 지원합니다:
1. systemEvent (메인 세션)
메인 세션에 시스템 이벤트를 주입합니다. 간단한 알림이나 체크에 적합합니다.
{
"sessionTarget": "main",
"payload": {
"kind": "systemEvent",
"text": "일일 보안 점검을 수행하세요."
}
}
2. agentTurn (독립 세션)
별도 세션에서 AI가 독립적으로 작업을 수행합니다. 복잡한 작업에 적합합니다.
{
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "동행복권 사이트에서 로또 6/45 자동번호 5장을 구매하세요.",
"model": "anthropic/claude-sonnet-4-5"
}
}
스케줄 유형
| 유형 | 설명 | 예시 |
|---|---|---|
at |
한 번만 실행 | "at": "2025-07-20T09:00:00+09:00" |
cron |
Cron 표현식 | "expr": "0 19 * * 5" (매주 금 19시) |
every |
반복 간격 | "everyMs": 3600000 (매 1시간) |
실전 예시: 매주 로또 자동 구매
{
"name": "로또 자동구매",
"schedule": {
"kind": "cron",
"expr": "0 19 * * 5",
"tz": "Asia/Seoul"
},
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "동행복권 사이트에서 로또 6/45 자동번호 5장을 구매해주세요. 예치금이 부족하면 알려주세요."
},
"delivery": {
"mode": "announce"
}
}
실전 예시: 매일 아침 보안 점검
{
"name": "일일 보안 점검",
"schedule": {
"kind": "cron",
"expr": "0 7 * * *",
"tz": "Asia/Seoul"
},
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "서버의 보안 상태를 점검해주세요. SSH 접속 로그, 방화벽 상태, 시스템 업데이트를 확인하고 요약해주세요."
}
}
크론 작업 관리
Telegram에서 직접 크론을 관리할 수도 있습니다:
나: 현재 등록된 크론 작업 목록 보여줘
봇: 현재 4개의 크론 작업이 등록되어 있습니다:
1. 🎰 로또 자동구매 - 매주 금 19:00
2. 🔍 로또 당첨확인 - 매주 월 09:00
3. 🔒 일일 보안점검 - 매일 07:00
4. 🛡️ 주간 종합점검 - 매주 수 08:00
메모리 시스템 이해하기
OpenClaw는 매 세션마다 초기화되지만, 파일 기반 메모리 시스템을 통해 연속성을 유지합니다.
메모리 파일 구조
~/.openclaw/workspace/
├── SOUL.md # AI의 성격과 행동 원칙
├── IDENTITY.md # AI의 이름, 이모지, 정체성
├── USER.md # 사용자 정보 (이름, 선호, 메모)
├── MEMORY.md # 장기 기억 (큐레이션된 핵심 정보)
├── AGENTS.md # 행동 규칙과 작업 가이드라인
├── HEARTBEAT.md # 주기적 체크 항목
├── TOOLS.md # 로컬 도구 설정 메모
└── memory/
├── 2025-07-17.md # 일일 기록
└── 2025-07-18.md # 일일 기록
각 파일의 역할
SOUL.md — AI의 영혼
AI가 어떤 성격으로 대화할지 정의합니다. 친근한 비서, 전문적인 엔지니어, 유머러스한 동료 등 원하는 페르소나를 자유롭게 설정할 수 있습니다.
# SOUL.md
## 핵심 원칙
- 진짜 도움이 되는 비서가 되자 (형식적 인사 금지)
- 의견을 가지고 있어도 된다
- 먼저 스스로 알아보고, 안 되면 그때 물어보자
- 외부 행동(메일, 메시지 전송)은 신중하게
## 분위기
간결하면서 필요할 때 상세하게. 딱딱하지 않게, 아부하지 않게.
MEMORY.md — 장기 기억
세션을 넘어 유지되어야 하는 중요한 정보를 기록합니다:
# MEMORY.md - 장기 기억
## 사용자 정보
- GitHub: developer-joon
- 블로그: Jekyll + GitHub Pages
- 투자에 관심: 비트코인, 국내주식
## 서버 환경
- OS: Rocky Linux 9.7
- Chrome CDP 포트: 9222
- 별도 프로필: ~/.openclaw/chrome-debug
## 교훈
- 기존 Chrome 프로필로는 CDP 포트가 안 열림
- 동행복권 사이트는 PC/모바일 버전이 다름
하트비트 시스템
OpenClaw는 주기적으로 하트비트 폴링을 수행합니다. HEARTBEAT.md에 체크 항목을 정의하면 AI가 알아서 확인합니다:
# HEARTBEAT.md
- [ ] 이메일 확인 (8시간마다)
- [ ] 서버 디스크 사용량 체크
- [ ] 로또 구매 여부 확인 (금요일)
systemd 서비스 등록
서버 재부팅 시 OpenClaw가 자동으로 시작되도록 systemd 서비스를 등록합니다.
OpenClaw Gateway 서비스
sudo tee /etc/systemd/system/openclaw.service << 'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/.openclaw
Environment=HOME=/home/openclaw
Environment=PATH=/home/openclaw/.npm-global/bin:/usr/local/bin:/usr/bin:/bin
Environment=DISPLAY=:0
ExecStart=/home/openclaw/.npm-global/bin/openclaw gateway start --foreground
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
Chrome CDP 서비스 (선택)
브라우저 자동화를 사용한다면 Chrome도 서비스로 등록합니다:
sudo tee /etc/systemd/system/chrome-debug.service << 'EOF'
[Unit]
Description=Chrome CDP Debug Instance
After=display-manager.service
[Service]
Type=simple
User=openclaw
Environment=DISPLAY=:0
ExecStart=/usr/bin/google-chrome-stable \
--remote-debugging-port=9222 \
--no-first-run \
--no-default-browser-check \
--user-data-dir=/home/openclaw/.openclaw/chrome-debug
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable chrome-debug
sudo systemctl start chrome-debug
보안 고려사항

AI에게 서버 접근 권한을 주는 만큼, 보안은 매우 중요합니다.
필수 보안 설정
1. Gateway는 loopback에만 바인딩
OpenClaw Gateway는 기본적으로 127.0.0.1에만 바인딩됩니다. 외부에서 직접 접근할 수 없도록 이 설정을 유지하세요.
2. Telegram 사용자 제한
{
"telegram": {
"allowedUsers": ["YOUR_USER_ID"]
}
}
반드시 자신의 User ID만 허용하세요.
3. API 키 보호
# 설정 파일 권한 제한
chmod 600 ~/.openclaw/openclaw.json
4. 전용 사용자 사용
root가 아닌 전용 사용자(openclaw)로 실행하여, AI가 시스템 전체에 영향을 줄 수 없도록 합니다.
5. 방화벽 설정
# CDP 포트는 외부 차단 (로컬만 허용)
sudo firewall-cmd --permanent --remove-port=9222/tcp 2>/dev/null
sudo firewall-cmd --reload
보안 체크리스트
| 항목 | 상태 | 비고 |
|---|---|---|
| Gateway loopback 바인딩 | ✅ | 기본값 |
| Telegram 사용자 제한 | ✅ | allowedUsers 설정 |
| 설정 파일 권한 (600) | ⚠️ | 수동 설정 필요 |
| 전용 사용자 실행 | ✅ | openclaw 유저 |
| SSH 키 인증 | ✅ | 패스워드 비활성화 권장 |
| 방화벽 활성화 | ✅ | firewalld 사용 |
| CDP 포트 외부 차단 | ✅ | 로컬만 허용 |
실전 활용 시나리오
시나리오 1: 로또 자동 구매 봇
매주 금요일 저녁, AI가 자동으로 동행복권 사이트에 접속하여 로또를 구매합니다.
[금요일 19:00 크론 작업 실행]
AI: 동행복권 사이트에 접속합니다...
AI: 로또 6/45 구매 페이지로 이동합니다...
AI: 자동번호 5게임 선택 완료
AI: 구매 버튼 클릭...
AI: ✅ 구매 완료!
- A조: 03, 11, 36, 39, 41, 44
- B조: 03, 04, 16, 19, 22, 38
- C조: 03, 06, 20, 32, 37, 44
- D조: 14, 25, 31, 34, 38, 42
- E조: 07, 15, 23, 29, 35, 43
구매금액: 5,000원 | 잔액: 42,350원
시나리오 2: 서버 모니터링
나: 서버 상태 확인해줘
봇: 🖥️ 서버 상태 요약
─────────────────
CPU: 12% (4코어)
RAM: 3.2GB / 8GB (40%)
디스크: 45GB / 100GB (45%)
가동시간: 23일 4시간
⚠️ 주의사항:
- /var/log 디렉토리가 5GB 차지 중
- 3개의 보안 업데이트 대기 중
시나리오 3: 블로그 포스트 작성 도우미
나: Jekyll 블로그에 OpenClaw 가이드 포스트 작성해줘.
저작권 없는 이미지도 포함하고 PR 올려줘.
봇: 포스트 작성을 시작합니다...
1. ✅ Unsplash에서 이미지 6장 다운로드
2. ✅ 포스트 마크다운 작성 완료 (약 4,000자)
3. ✅ Git 브랜치 생성 및 커밋
4. ✅ PR #4 생성 완료
리뷰해주세요: https://github.com/.../pull/4
트러블슈팅
Chrome CDP 연결이 안 될 때
# 1. Chrome이 실행 중인지 확인
ps aux | grep chrome
# 2. CDP 포트가 열려 있는지 확인
curl -s http://127.0.0.1:9222/json/version
# 3. 기존 Chrome 프로필이 잠금 중인지 확인
# → 별도 user-data-dir 사용으로 해결
ls ~/.openclaw/chrome-debug/SingletonLock 2>/dev/null && \
echo "잠금 파일 존재 - Chrome이 이미 실행 중"
Gateway가 시작되지 않을 때
# 로그 확인
journalctl -u openclaw -f
# 설정 파일 검증
openclaw gateway status
# 포트 충돌 확인
ss -tlnp | grep :3000
Telegram 봇이 응답하지 않을 때
- Bot Token이 올바른지 확인
allowedUsers에 자신의 ID가 포함되어 있는지 확인- Gateway가 실행 중인지 확인
- 네트워크에서 Telegram API 접속이 가능한지 확인
유용한 명령어 모음
# Gateway 상태 확인
openclaw gateway status
# Gateway 재시작
openclaw gateway restart
# 설정 확인
openclaw configure
# 브라우저 섹션 설정
openclaw configure --section browser
# 텔레그램 섹션 설정
openclaw configure --section telegram
# 로그 실시간 확인
journalctl -u openclaw -f
# Chrome CDP 상태 확인
curl -s http://127.0.0.1:9222/json/list | python3 -m json.tool
마무리
OpenClaw를 사용하면 AI가 단순히 대답하는 것을 넘어, 실제로 일을 하는 환경을 구축할 수 있습니다. 서버 관리, 웹 자동화, 일정 관리, 반복 업무 처리까지 — 한번 설정해두면 24시간 묵묵히 일하는 비서가 생기는 셈입니다.
핵심을 정리하면:
- 설치는 간단합니다 — Node.js + npm 한 줄이면 끝
- Telegram 연동으로 어디서든 AI에게 지시 가능
- 브라우저 자동화로 웹 기반 업무도 처리
- 크론 시스템으로 반복 업무를 완전 자동화
- 메모리 시스템으로 AI가 맥락을 기억
아직 초기 단계이지만, AI 에이전트가 일상의 반복적인 업무를 대신 처리하는 미래는 이미 시작되었습니다. 직접 설치해보고, 자신만의 AI 비서를 만들어보세요!
참고 링크:
이 글은 Rocky Linux 9.7 + OpenClaw 환경에서 실제 구축한 경험을 바탕으로 작성되었습니다.