Fly.io를 선택하는 이유
Fly.io는 개발자 지향 현대 클라우드 플랫폼으로, 전 세계 여러 엣지 노드에 애플리케이션을 배포할 수 있습니다. OpenClaw과 같은 AI Agent 게이트웨이에 Fly.io는 몇 가지 뚜렷한 장점을 제공합니다: 무료 쿼터로 소규모 인스턴스 운영 가능, 간결하고 효율적인 배포 프로세스, 영속 스토리지 볼륨 지원, 그리고 사용자에게 가장 가까운 데이터 센터 선택 가능.
이 글에서는 Fly.io에서 OpenClaw의 전체 배포 과정을 처음부터 안내합니다.
사전 준비
시작하기 전에 다음 항목을 준비해야 합니다:
- Fly.io 계정 (fly.io에서 등록)
- 로컬에 flyctl 명령줄 도구 설치
- 설정이 완료된 OpenClaw 프로젝트 (또는 처음부터 시작할 준비)
flyctl 설치
macOS 또는 Linux에서 다음 명령으로 flyctl을 설치합니다:
curl -L https://fly.io/install.sh | sh
설치가 완료되면 Fly.io 계정에 로그인합니다:
fly auth login
Dockerfile 생성
Fly.io는 Docker 배포를 기본 지원합니다. 먼저 프로젝트 디렉토리에 Dockerfile을 생성합니다:
FROM node:22-slim
WORKDIR /app
RUN npm install -g openclaw@latest
RUN mkdir -p /root/.openclaw
EXPOSE 3000
CMD ["openclaw", "start"]
이 Dockerfile은 Node.js 22 공식 이미지를 베이스로 사용하고, OpenClaw을 전역으로 설치하며, 기본 포트 3000을 노출합니다. 다른 런타임이 아닌 node:22-slim을 사용하는 이유는 OpenClaw이 Node.js 22+ 환경을 요구하며, Bun 사용을 권장하지 않기 때문입니다 (WhatsApp 및 Telegram 연결 처리 시 알려진 문제 존재).
Fly.io 애플리케이션 초기화
프로젝트 디렉토리에서 다음 명령을 실행합니다:
fly launch
flyctl이 Dockerfile을 자동으로 감지하고 초기화 과정을 안내합니다. 다음 항목을 선택해야 합니다:
- 애플리케이션 이름: 예를 들어
my-openclaw-gateway - 배포 지역: 대상 사용자에게 가장 가까운 지역 선택, 예:
hkg(홍콩) 또는nrt(도쿄) - 리소스 구성: OpenClaw 실행 메모리는 최소 256MB 이상, 512MB 권장
초기화가 완료되면 프로젝트 루트 디렉토리에 fly.toml 설정 파일이 생성됩니다.
fly.toml 설정
생성된 fly.toml 파일을 열고 다음 핵심 설정을 확인합니다:
app = "my-openclaw-gateway"
primary_region = "hkg"
[build]
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = false
auto_start_machines = true
min_machines_running = 1
[mounts]
source = "openclaw_data"
destination = "/root/.openclaw"
여기서 몇 가지 중요한 설정 항목에 주의해야 합니다. auto_stop_machines를 false로 설정하면 Fly.io가 유휴 시 인스턴스를 종료하는 것을 방지합니다 -- OpenClaw은 메시지 게이트웨이로서 WhatsApp, Telegram, Discord 등 채팅 플랫폼의 메시지를 수신하기 위해 지속적으로 실행되어야 합니다. mounts 부분은 영속 스토리지 볼륨을 OpenClaw의 설정 디렉토리 ~/.openclaw에 마운트하여 재시작 후에도 설정과 데이터가 유지되도록 합니다.
영속 스토리지 볼륨 생성
배포 전에 스토리지 볼륨을 먼저 생성합니다:
fly volumes create openclaw_data --region hkg --size 1
이 명령은 홍콩 지역에 1GB 스토리지 볼륨을 생성하며, OpenClaw의 설정 파일과 데이터를 저장하는 데 사용됩니다.
환경 변수 설정
OpenClaw의 민감한 설정은 Fly.io의 Secrets 기능을 통해 안전하게 관리할 수 있습니다:
fly secrets set OPENCLAW_API_KEY="당신의API키"
fly secrets set OPENCLAW_WEBHOOK_URL="https://my-openclaw-gateway.fly.dev/webhook"
배포 실행
모든 준비가 완료되면 배포 명령을 실행합니다:
fly deploy
flyctl이 자동으로 Docker 이미지를 빌드하고, Fly.io의 이미지 레지스트리에 푸시한 후 애플리케이션을 시작합니다. 전체 과정은 보통 2-5분 소요됩니다.
배포가 완료되면 애플리케이션 상태를 확인합니다:
fly status
실행 로그를 확인하여 OpenClaw이 정상적으로 시작되었는지 확인합니다:
fly logs
배포 후 설정
애플리케이션이 성공적으로 실행되면 OpenClaw의 초기 설정을 완료해야 합니다. SSH로 인스턴스에 연결합니다:
fly ssh console
인스턴스에서 OpenClaw의 가이드 프로그램을 실행합니다:
openclaw onboard --install-daemon
대화형 안내에 따라 AI 모델 설정과 채팅 플랫폼 연결을 완료합니다. 완료 후 진단 명령을 실행하여 모든 것이 정상인지 확인합니다:
openclaw doctor
다음 명령으로 OpenClaw 관리 패널에 접근할 수도 있습니다:
openclaw dashboard
관리 패널은 기본적으로 포트 3000에서 실행되며, https://my-openclaw-gateway.fly.dev를 통해 접근할 수 있습니다.
커스텀 도메인
자체 도메인을 사용하려면 다음 명령으로 추가할 수 있습니다:
fly certs create openclaw.yourdomain.com
그런 다음 DNS 서비스 제공업체에서 Fly.io가 할당한 주소를 가리키는 CNAME 레코드를 추가합니다.
확장 및 모니터링
사용자 수가 증가하면 간편하게 확장할 수 있습니다:
fly scale count 2
fly scale vm shared-cpu-2x
Fly.io에 내장된 모니터링 대시보드를 통해 CPU, 메모리 사용률 및 네트워크 트래픽을 추적할 수 있습니다.
일반적인 문제 해결
배포 후 문제가 발생하면 먼저 로그를 확인합니다:
fly logs --app my-openclaw-gateway
스토리지 볼륨이 올바르게 마운트되었는지, 포트 설정이 정확한지, Node.js 버전이 22 이상인지 확인합니다. 애플리케이션이 반복적으로 충돌하는 경우 메모리 쿼터를 늘리거나 OpenClaw 설정 파일 ~/.openclaw/openclaw.json이 올바른지 확인해 보세요.
정리
Fly.io를 통한 OpenClaw 배포는 가볍고 경제적인 방안으로, 개인 개발자와 소규모 팀에 특히 적합합니다. 전 세계 다지역 배포 능력과 간결한 CLI 도구를 통해 몇 분 안에 OpenClaw AI Agent 게이트웨이를 배포하고, 선호하는 채팅 플랫폼과 AI 모델을 연결할 수 있습니다.