openclaw OCI 배포 저장소
이 저장소는 openclaw를 OCI의 ARM 기반 Ampere A1 인스턴스에 올리기 위한 모노레포입니다.
현재 구성 기준:
- 단일 환경만 운영
- Terraform Cloud(HCP Terraform) VCS 연동 전제
- OpenClaw 공식 소스를
apps/openclaw에 vendoring - GitHub Actions로 ARM64 이미지를 빌드하고 OCIR에 push
- OCI
VM.Standard.A1.Flex1대 생성 - 새
VCN,public subnet,internet gateway,security list를 함께 생성 - 인스턴스 부팅 시 Docker를 설치하고 private registry 로그인 후
openclaw컨테이너를 자동 실행
디렉터리 구조
apps/
openclaw/ # vendored upstream source
docker/
openclaw.Dockerfile # OCI 배포용 커스텀 이미지
infra/
terraform/
cloud-init/
openclaw.yaml.tftpl
compute.tf
network.tf
outputs.tf
providers.tf
shared.auto.tfvars
variables.tf
versions.tf
ops/
openclaw-seed/ # 이미지에 포함할 초기 시드
scripts/
openclaw-entrypoint.sh
빠른 사용 흐름
1. apps/openclaw 소스와 커스텀 seed를 수정한 뒤 GitHub에 push합니다. 2. GitHub Actions build-openclaw가 ARM64 이미지를 빌드하고 OCIR에 push합니다. 3. 같은 워크플로가 infra/terraform/shared.auto.tfvars의 app_image를 새 SHA 태그로 갱신합니다. 4. HCP Terraform workspace가 VCS 변경을 감지하고 infra/terraform을 plan/apply 합니다. 5. OCI VM은 새 이미지를 pull하고 컨테이너를 재기동합니다.
자동 로드되는 변수 파일
HCP Terraform의 VCS 실행에서도 작업 디렉터리 안의 terraform.tfvars, .auto.tfvars, .auto.tfvars.json 파일은 자동으로 로드됩니다.
- 추천: 공용 비민감값만
*.auto.tfvars로 커밋 - 비추천:
private_key_pem, 토큰, 비밀번호 같은 민감값을 저장소에 커밋 - 민감값은 Workspace Variables 또는 Variable Set으로 관리
현재 저장소는 shared.auto.tfvars에 비민감 공용값을 두고, 나머지는 HCP Terraform Variables로 관리하는 구성을 사용합니다.
HCP Terraform 변수
민감값은 모두 Workspace의 Sensitive 변수로 등록합니다.
tenancy_ociduser_ocidfingerprintprivate_key_pemcompartment_ocidssh_authorized_keys(HCL)registry_usernameregistry_password
비민감 기본값은 infra/terraform/shared.auto.tfvars에 둡니다.
ssh_authorized_keys는 HCP Terraform에서 HCL 형식으로 아래처럼 넣는 편이 편합니다.
[
"ssh-ed25519 AAAA... your-key"
]
GitHub Actions 변수와 시크릿
Repository Variables:
OCIR_REGIONOCIR_NAMESPACEOCIR_REPOSITORY(선택, 기본값openclaw)
Repository Secrets:
OCIR_USERNAMEOCIR_AUTH_TOKEN
운영 원칙
container_env변수에 비밀값을 넣으면 Terraform state에 남습니다.- 앱 비밀값은 나중에 OCI Vault나 별도 런타임 주입 방식으로 분리하는 편이 안전합니다.
- 이 골격은 Ubuntu ARM 이미지 기준의 cloud-init을 사용합니다.
- OpenClaw 자체 update 기능은 서버 운영 절차에서 사용하지 않습니다.
- GitHub repo와 빌드된 이미지 태그만 배포의 기준으로 인정합니다.










