Mac mini에서 OpenClaw를 하루 종일 실행하려는데, 원생 설치와 Docker 가운데 무엇을 골라야 할지 망설여지나요? 처음에는 두 방식 모두 단순히 명령어 몇 줄을 실행하는 작업처럼 보입니다. 하지만 API 키, 작업 폴더, 메시지 채널, 재시작 정책까지 넣으면 선택에 따라 운영 방식이 크게 달라집니다. 이 글에서는 오픈클로 맥 미니 배포를 준비하는 개인 개발자와 작은 팀이 설치 방법을 결정하고, 실제로 장애까지 복구할 수 있도록 비교 기준을 정리합니다.
왜 Mac mini가 AI Agent 상시 실행에 잘 맞을까요?
OpenClaw는 대화형 화면만 여는 도구가 아니라 Gateway를 계속 실행하면서 로컬 파일, 모델 API, 메시지 채널과 연결하는 구조입니다. 따라서 일시적으로 명령을 실행하는 노트북보다 전원과 네트워크를 오래 유지할 수 있는 Mac mini가 더 적합합니다.
특히 다음과 같은 작업에서는 상시 실행 환경의 차이가 크게 나타납니다.
- 정해진 시간에 파일을 읽고 보고서를 만드는 작업
- Telegram, Discord 같은 메시지 채널에서 요청을 받는 작업
- 로컬 개발 폴더와 Git 저장소를 읽는 작업
- CI/CD 빌드나 반복 테스트를 야간에 실행하는 작업
- 여러 사용자가 같은 Agent 상태와 작업 기록을 공유하는 작업
다만 Mac mini를 켜 두기만 하면 안정적인 서버가 되는 것은 아닙니다. 다음 세 가지 문제가 배포 뒤에 자주 나타납니다.
첫째, API 키와 Agent 상태를 어디에 저장했는지 모르면 재설치나 이미지 교체 때 인증 정보가 사라질 수 있습니다. 둘째, Web UI를 외부에 그대로 노출하면 Gateway 토큰이 유출될 위험이 커집니다. 셋째, 재부팅 뒤 프로세스가 자동으로 올라오지 않으면 Agent가 오프라인 상태가 되어도 늦게 발견하게 됩니다.
오픈클로 원생 설치와 Docker 중 무엇이 더 나을까요?
원생 설치는 macOS에 OpenClaw를 직접 설치하는 방식입니다. 로컬 파일, Homebrew 도구, macOS 권한을 자연스럽게 사용할 수 있다는 장점이 있습니다. 반면 Node 버전과 패키지 상태가 호스트 환경에 영향을 받습니다.
Docker는 Gateway를 컨테이너 안에서 실행합니다. 호스트와 실행 환경을 분리하기 쉽고, Compose 파일로 설정을 재현할 수 있습니다. 대신 컨테이너 안에서 보는 127.0.0.1은 Mac의 127.0.0.1과 다릅니다. Mac에서 실행 중인 Ollama나 LM Studio를 연결하려면 Docker 환경에서 host.docker.internal을 사용해야 합니다. (docs.openclaw.ai)
선택 기준은 다음처럼 나누면 됩니다.
- 원생 설치가 맞는 경우: Mac 파일 접근이 많고, Homebrew 도구나 macOS 앱을 직접 연결해야 하는 경우
- Docker가 맞는 경우: 팀원이 같은 구성을 반복 배포하거나, 호스트 환경을 깨끗하게 유지해야 하는 경우
- Docker가 특히 유리한 경우: 여러 Agent를 분리하거나, 실패한 버전을 빠르게 내리고 이전 상태로 복구해야 하는 경우
- 원생 설치가 더 간단한 경우: 한 대의 Mac mini에서 한 명이 장기간 운영하고, 컨테이너 네트워크를 별도로 관리하고 싶지 않은 경우
처음부터 Docker를 고집할 필요도 없습니다. OpenClaw 공식 문서도 직접 개발하는 장비에서는 일반 설치 흐름을 사용하고, 격리된 Gateway나 헤드리스 환경에서는 컨테이너를 선택하는 방향을 안내합니다. (docs.openclaw.ai)
오픈클로 맥 미니 배포는 어떤 순서로 진행할까요?
1. 전용 macOS 사용자와 작업 폴더를 준비합니다
Agent가 읽을 파일이 개인 문서와 섞이지 않도록 별도 macOS 사용자 계정을 만드는 편이 안전합니다. 작업 폴더도 예를 들어 ~/openclaw-workspace처럼 따로 정합니다.
API 키는 문서나 셸 기록에 직접 적지 않습니다. .env 파일이나 OpenClaw가 지정한 인증 저장 위치를 사용하고, 해당 파일의 권한을 계정 소유자만 읽을 수 있도록 제한합니다.
2. 원생 설치를 먼저 시험합니다
공식 설치 스크립트는 다음과 같습니다.
curl -fsSL https://openclaw.ai/install.sh | bash
설치가 끝난 뒤 온보딩을 진행하고 Gateway가 실행 중인지 확인합니다. OpenClaw의 설치 안내에는 설치 방식별 절차와 데몬 설치 흐름이 함께 정리되어 있습니다. 공식 설치 안내를 기준으로 실행해야 비공식 스크립트와 잘못된 패키지를 피할 수 있습니다. (docs.openclaw.ai)
3. Web UI와 인증을 확인합니다
기본 Control UI는 다음 주소에서 확인합니다.
http://127.0.0.1:18789/
공식 Docker 안내도 포트 18789와 Gateway 인증 토큰을 기준으로 설명합니다. 먼저 Mac 내부에서만 접속한 뒤, 토큰을 입력해 정상적으로 화면이 열리는지 확인합니다. (docs.openclaw.ai)
이 단계에서 바로 공유기 포트 포워딩을 설정하지 않는 것이 좋습니다. 외부 접속이 필요하다면 뒤에서 설명할 Tailscale 방식으로 접근 범위를 제한합니다.
4. Docker Compose 구성을 준비합니다
OpenClaw Docker 배포 튜토리얼은 Docker Desktop 또는 Docker Engine과 Docker Compose v2를 전제로 합니다. 공식 구성에서는 저장 상태와 설정을 호스트 볼륨에 연결하고, Gateway를 Compose 서비스로 실행합니다. 이미지 빌드에는 최소 2 GB 메모리가 필요하며, 메모리가 부족하면 빌드가 중단될 수 있습니다. (docs.openclaw.ai)
기본 흐름은 다음과 같습니다.
./scripts/docker/setup.sh
docker compose up -d openclaw-gateway
docker compose ps
이미지를 직접 빌드하지 않고 공식 이미지를 사용하려면 환경 변수로 이미지를 지정할 수 있습니다.
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./scripts/docker/setup.sh
운영 환경에서는 latest만 고정해서 쓰기보다 테스트 후 버전 태그를 지정하는 편이 좋습니다. 이미지가 바뀌어도 /home/node/.openclaw와 필요한 홈 디렉터리를 같은 볼륨에 유지해야 인증과 Agent 상태가 남습니다.
5. 데이터가 실제로 보존되는지 시험합니다
다음 항목을 별도로 확인합니다.
openclaw.json같은 설정 파일- Agent별 인증 프로필
- Gateway 토큰이 담긴 환경 변수
- 대화 기록과 SQLite 상태 데이터
- Agent 작업 폴더
- 추가 플러그인과 브라우저 설치 파일
컨테이너를 삭제한 뒤 다시 올려도 설정이 남아 있어야 합니다. 단순히 컨테이너 이름만 유지하는 것은 백업이 아닙니다. Docker 볼륨과 호스트 백업 위치를 함께 기록하고, 실제로 새 컨테이너를 만들어 복구 테스트를 해야 합니다.
원생 설치와 Docker의 운영 차이는 무엇인가요?
Mac의 파일과 권한을 많이 사용한다면 Docker가 불편한가요?
그럴 수 있습니다. Docker 안의 프로세스는 Mac의 파일 권한과 화면 접근 권한을 그대로 받지 않습니다. 특정 폴더를 읽으려면 명시적인 마운트가 필요하고, macOS 앱이나 로컬 서비스 연결도 별도 설정이 필요합니다. 반대로 외부에서 받은 작업을 격리해야 한다면 이 분리가 보안 장점이 됩니다.
컨테이너를 재시작하면 데이터가 사라지나요?
볼륨이 올바르게 연결되어 있다면 일반적인 컨테이너 재시작만으로 데이터가 사라지지는 않습니다. 하지만 임시 경로에 저장하거나 Compose 파일에서 볼륨을 빠뜨리면 이미지 교체 뒤 상태가 초기화될 수 있습니다. 배포 전에 저장 경로 목록을 문서화하는 것이 중요합니다.
혼자 쓰는 개발자도 Docker를 써야 하나요?
항상 그렇지는 않습니다. 한 대의 Mac mini에서 로컬 파일과 macOS 도구를 깊게 연결할 계획이라면 원생 설치가 더 짧은 경로입니다. 다만 설정을 여러 번 재현하거나, 실험용 Agent와 개인용 Agent를 분리하려면 Docker가 관리하기 쉽습니다.
오픈클로 개시 자동 실행은 어떻게 설정할까요?
오픈클로 개시 자동 실행 설정은 설치 방식에 맞춰야 합니다. 원생 설치에서는 macOS의 launchd가 기본 선택입니다. launchd는 macOS에서 데몬과 Agent를 관리하고 셸 스크립트를 실행할 수 있는 공식 관리 방식입니다. (support.apple.com)
실무 순서는 다음과 같습니다.
- OpenClaw 실행 명령의 전체 경로를 확인합니다.
- 작업 디렉터리와 환경 변수 파일의 절대 경로를 적습니다.
~/Library/LaunchAgents/아래에 plist 파일을 만듭니다.RunAtLoad로 로그인 뒤 실행하도록 설정합니다.KeepAlive로 비정상 종료 뒤 재시작하도록 설정합니다.launchctl bootstrap또는launchctl kickstart로 불러옵니다.- 로그 파일에서 실제 Gateway가 올라왔는지 확인합니다.
PM2도 사용할 수 있지만, PM2 자체를 다시 시작하는 launchd 항목이 필요할 수 있습니다. 따라서 Mac mini 한 대의 단순 운영이라면 launchd 하나로 관리하고, Node 프로세스가 여러 개인 개발 환경에서만 PM2를 고려하는 편이 낫습니다.
Docker에서는 Compose의 restart: unless-stopped 같은 재시작 정책을 사용합니다. Docker의 restart 설정은 서비스 종료 뒤 다시 시작할 조건을 정하는 방식이며, docker compose restart만 실행한다고 Compose 파일의 설정 변경이 반영되는 것은 아닙니다. 설정을 바꿨다면 컨테이너를 다시 생성해야 합니다. (docs.docker.com)
OpenClaw 원격 접속은 어떻게 안전하게 구성할까요?
처음에는 Gateway를 localhost에만 묶습니다. 외부에서 직접 접속하려고 0.0.0.0으로 열고 포트 포워딩을 추가하는 방식은 공격 표면을 빠르게 넓힙니다.
원격 접속이 필요하면 다음 순서를 권장합니다.
- Mac mini와 관리용 노트북에 Tailscale을 설치합니다.
- 두 장치를 같은 tailnet에 등록합니다.
- OpenClaw의 인증 토큰을 활성화합니다.
- Tailscale 주소를 통해서만 Web UI에 접근합니다.
- 사용하지 않는 공개 포트와 공유기 포트 포워딩을 닫습니다.
- Agent가 접근하는 작업 폴더를 최소 범위로 줄입니다.
- API 키를 팀 채팅이나 저장소에 올리지 않습니다.
Tailscale은 macOS용 공식 설치 경로를 제공하며, 기기별 접근 정책을 별도로 관리할 수 있습니다. Tailscale의 Mac 설치 안내를 기준으로 설정하면 됩니다. (tailscale.com)
배포 뒤 문제가 생기면 무엇부터 확인할까요?
- Web UI가 열리지 않는 경우:
127.0.0.1:18789에서 먼저 확인하고, 프로세스가 실제로 실행 중인지 점검합니다. - 포트 충돌이 발생한 경우:
lsof -i :18789로 점유 프로세스를 찾고, 임의로 여러 포트를 바꾸기 전에 설정 파일과 Compose 포트를 함께 확인합니다. - 컨테이너가 계속 재시작하는 경우:
docker compose logs --tail=100 openclaw-gateway로 인증 오류와 환경 변수 누락을 구분합니다. - 재부팅 뒤 Agent가 오프라인인 경우: launchd 상태나 Compose 재시작 정책이 등록되었는지 확인합니다.
- 권한 오류가 발생한 경우: 작업 폴더 소유자와 컨테이너 내부 사용자의 UID, GID가 맞는지 확인합니다.
- 데이터가 사라진 경우: 컨테이너 내부 경로가 아니라 호스트 볼륨에 기록되었는지 확인합니다.
- Docker 빌드가 메모리 부족으로 끝나는 경우: Docker Desktop의 빌더 메모리를 늘리거나, 공식 이미지 사용으로 로컬 빌드 단계를 줄입니다.
OpenClaw Docker 환경에서는 /healthz와 /readyz 상태 경로도 제공됩니다. 단순히 컨테이너가 실행 중인지보다 서비스가 실제 요청을 받을 준비가 되었는지 확인하는 데 유용합니다. (docs.openclaw.ai)
어떤 배포 환경이 장기 운영에 적합할까요?
아래 표는 설치 방식만이 아니라 운영 목적까지 함께 비교한 결정표입니다.
| 상황 | 더 적합한 방식 | 이유 | 먼저 확인할 항목 |
|---|---|---|---|
| Mac 파일과 Homebrew 도구를 자주 사용 | 원생 설치 | macOS 권한과 로컬 경로 연결이 단순함 | 전용 사용자, launchd, 파일 권한 |
| 팀원이 같은 구성을 반복 배포 | Docker Compose | 설정과 서비스 구성을 파일로 재현하기 쉬움 | 볼륨, 환경 변수, 이미지 태그 |
| 실험용 Agent를 격리 | Docker | 호스트와 실행 환경을 분리하기 쉬움 | 마운트 범위, 네트워크, UID |
| 빠른 테스트와 짧은 프로젝트 | 원생 설치 | 초기 설정과 디버깅 경로가 짧음 | 백업, 자동 시작 |
| 외부에서 상시 접속 | 둘 다 가능 | Tailscale과 인증 구성이 핵심임 | localhost, 토큰, 접근 정책 |
| 장애 뒤 빠른 교체가 중요 | Docker | 이미지와 볼륨을 분리해 복구하기 쉬움 | 상태 볼륨, 버전 태그, 복구 절차 |
로컬 Mac mini가 없으면 클라우드 맥으로 옮길 수 있을까요?
장비를 직접 구매할 수 없거나, 다른 지역의 팀원이 같은 Mac 환경에 접속해야 한다면 오픈클로 클라우드 맥 배포도 선택지가 됩니다. 다만 원격 서비스는 네트워크 지연, 계정 보안, 데이터 반출 정책을 먼저 확인해야 합니다.
SpinMac의 클라우드 Mac은 실제 Mac mini M4 물리 장비를 제공하며, 표준 구성은 10코어 CPU, 16 GB 통합 메모리, 256 GB NVMe SSD, 1 Gbps 전용 대역폭입니다. 기본 AI 연산력은 38 TOPS로 안내되어 있습니다. (spinmac.com)
배포 전에는 다음 순서로 옮깁니다.
- Mac mini에서 OpenClaw 설정과 작업 폴더를 백업합니다.
- API 키를 새 환경에 직접 복사하지 말고 필요한 키만 다시 발급합니다.
- SSH 또는 VNC 접속을 확인합니다.
- 원생 설치와 Docker 중 기존 방식과 같은 방식을 선택합니다.
- Web UI를 localhost 중심으로 설정합니다.
- Tailscale이나 별도 접근 정책을 적용합니다.
- 메시지 채널과 자동 시작을 테스트한 뒤 기존 환경을 종료합니다.
SpinMac은 서울, 도쿄, 싱가포르, 중국 홍콩, 미국 동부 노드를 제공하고 노드별 기본 요금은 동일하게 안내합니다. 결제 확인 뒤 보통 1~5분 안에 배포되며, 브라우저 VNC와 SSH 접속을 지원합니다. 월 단위 기본 임대료는 현재 $106.1, 일 단위는 $21.2부터 안내되어 있으므로, 짧은 검증인지 상시 운영인지에 따라 클라우드 맥 요금 비교를 확인하는 것이 좋습니다. (spinmac.com)
직접 Mac mini를 두는 방식은 초기 장비 확보가 필요하고, 전원·네트워크·재부팅·고장 대응을 직접 맡아야 합니다. 특히 장비가 다른 장소에 있으면 원격 화면이 끊기거나, 저장 공간이 부족하거나, 복구를 위해 현장 접근이 필요한 상황이 생깁니다. 반면 클라우드 맥은 물리 장비를 직접 구매하지 않고도 SSH와 VNC로 접근할 수 있고, SpinMac은 99.9% 가용성 SLA와 7×24 기술 지원을 안내합니다. 장기간 실행할수록 월 단위 비용과 데이터 보관 정책을 함께 비교해야 하지만, 빠른 테스트나 원격 상시 운영에서는 관리 부담을 줄일 수 있습니다.
원생 설치와 Docker 가운데 어느 쪽을 선택하든 핵심은 설치 명령보다 복구 설계입니다. 설정 파일, 인증 정보, 작업 폴더, 자동 시작, 원격 접속 경로를 문서화하면 Mac mini를 교체하거나 클라우드 맥으로 이동할 때 중단 시간을 줄일 수 있습니다. 로컬 장비 없이 먼저 OpenClaw를 검증하려면 SpinMac 주문 페이지에서 지역과 임대 기간을 구성한 뒤, 실제 업무에 맞는 Mac 환경을 시작해 보시기 바랍니다.