Hetzner 소개
Hetzner는 독일의 유서 깊은 클라우드 서비스 제공업체로, 뛰어난 가성비로 유명합니다. 유럽에 위치한 CX22 인스턴스(2코어 4GB 메모리)는 월 몇 유로에 불과하여, OpenClaw과 같은 AI Agent 게이트웨이를 배포하기에 매우 적합합니다. 이 글에서는 Hetzner Cloud에서 Docker Compose를 사용하여 OpenClaw을 배포하는 방법을 상세히 소개합니다.
Hetzner 클라우드 서버 생성
Hetzner Cloud Console(console.hetzner.cloud)에 로그인하고, 새 프로젝트를 생성하거나 기존 프로젝트에 서버를 추가합니다.
서버 사양 선택
- 위치: 사용자 분포에 따라 선택합니다. 예: Falkenstein(독일), Helsinki(핀란드), Ashburn(미국)
- 이미지: Ubuntu 24.04 LTS 선택
- 타입: CX22(2 vCPU, 4GB RAM) 이상 권장
- SSH 키: 안전한 로그인을 위해 공개 키 추가
- 네트워크: IPv4 및 IPv6 활성화
생성 완료 후 서버의 공인 IP 주소를 기록합니다.
서버 연결 및 Docker 설치
SSH로 새 서버에 연결합니다:
ssh root@서버IP주소
먼저 시스템을 업데이트하고 Docker를 설치합니다:
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Docker 설치를 확인합니다:
docker --version
docker compose version
프로젝트 디렉터리 생성
OpenClaw 전용 디렉터리를 생성합니다:
mkdir -p /opt/openclaw
cd /opt/openclaw
Docker Compose 설정 작성
docker-compose.yml 파일을 생성합니다:
version: "3.8"
services:
openclaw:
image: node:22-slim
container_name: openclaw-gateway
restart: unless-stopped
working_dir: /app
volumes:
- openclaw_config:/root/.openclaw
- openclaw_app:/app
ports:
- "3000:3000"
environment:
- NODE_ENV=production
command: >
bash -c "
npm install -g openclaw@latest &&
openclaw start
"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
openclaw_config:
openclaw_app:
이 설정 파일은 Node.js 22 기반 컨테이너를 정의하며, 최신 OpenClaw을 자동 설치하고 서비스를 시작합니다. 네임드 볼륨 openclaw_config를 사용하여 OpenClaw의 설정 디렉터리 ~/.openclaw를 영구화하므로, 컨테이너가 재시작되어도 설정 데이터가 유실되지 않습니다.
여기서 Bun 런타임을 사용하지 않는 점에 주의하세요. Bun이 일부 시나리오에서는 더 빠르지만, WhatsApp과 Telegram의 WebSocket 연결 처리 시 알려진 버그가 있어 OpenClaw 공식에서는 Node.js 사용을 권장합니다.
서비스 시작
다음 명령어로 OpenClaw을 시작합니다:
docker compose up -d
컨테이너 로그를 확인하여 시작 상태를 확인합니다:
docker compose logs -f openclaw
최초 시작 시 컨테이너가 먼저 OpenClaw을 설치하므로 1-2분 정도 소요될 수 있습니다. 서비스가 성공적으로 시작된 로그를 확인한 후 Ctrl+C로 로그 보기를 종료합니다.
OpenClaw 설정 초기화
실행 중인 컨테이너에 접속하여 초기화를 수행합니다:
docker compose exec openclaw bash
컨테이너 내에서 가이드 프로그램을 실행합니다:
openclaw onboard --install-daemon
대화형 안내에 따라 다음 설정을 완료합니다:
- AI 모델 제공자 선택 및 설정(OpenAI, Anthropic 등)
- 연결할 채팅 플랫폼 설정(WhatsApp, Telegram, Discord 등)
- Webhook URL 및 관련 자격 증명 설정
완료 후 진단 명령어를 실행하여 모든 것이 정상인지 확인합니다:
openclaw doctor
컨테이너에서 나갑니다:
exit
방화벽 설정
Hetzner Cloud는 내장 방화벽 기능을 제공합니다. Cloud Console에서 다음 규칙을 설정합니다:
- SSH: TCP 22 포트 인바운드 허용
- HTTP: TCP 80 포트 인바운드 허용
- HTTPS: TCP 443 포트 인바운드 허용
- OpenClaw Dashboard: TCP 3000 포트 인바운드 허용(또는 리버스 프록시를 통해 전달)
서버에서 UFW로도 설정할 수 있습니다:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 3000/tcp
ufw enable
Nginx 리버스 프록시 설정(권장)
HTTPS 활성화와 더 나은 보안을 위해 Nginx 리버스 프록시 설정을 권장합니다:
apt install -y nginx certbot python3-certbot-nginx
Nginx 설정 파일 /etc/nginx/sites-available/openclaw을 생성합니다:
server {
server_name openclaw.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설정을 활성화하고 SSL 인증서를 신청합니다:
ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d openclaw.yourdomain.com
OpenClaw 자동 업데이트
간단한 업데이트 스크립트 /opt/openclaw/update.sh를 생성합니다:
#!/bin/bash
cd /opt/openclaw
docker compose down
docker compose pull
docker compose up -d
docker compose exec -T openclaw npm install -g openclaw@latest
docker compose restart openclaw
crontab에 추가하여 정기 자동 업데이트를 구현합니다:
chmod +x /opt/openclaw/update.sh
crontab -e
# 다음 줄을 추가하여 매주 일요일 새벽 3시에 자동 업데이트
0 3 * * 0 /opt/openclaw/update.sh >> /var/log/openclaw-update.log 2>&1
백업 전략
OpenClaw의 핵심 데이터는 ~/.openclaw/ 디렉터리에 저장됩니다. Hetzner의 스냅샷 기능으로 전체 서버를 백업하거나, 설정 파일을 수동으로 백업할 수 있습니다:
docker compose exec -T openclaw tar czf - /root/.openclaw > /opt/openclaw/backup-$(date +%Y%m%d).tar.gz
정리
Hetzner Cloud와 Docker Compose의 조합은 OpenClaw을 배포하기 위한 높은 가성비 방안입니다. 이 글의 설정을 통해 안정적으로 운영되는 OpenClaw AI Agent 게이트웨이를 구축하여, 다양한 채팅 플랫폼과 AI 모델을 연결할 수 있습니다. Hetzner의 유럽 데이터 센터는 유럽 사용자에게 특히 유리하며, 미국 노드도 글로벌 배포 요구를 충족할 수 있습니다.