오라클 무료 계정의 A1 (ARM) 인스턴스는 인기가 많아서 생성 시도 시 Out of host capacity 에러가 자주 발생합니다. 이 스크립트는 1분마다 자동으로 생성을 시도해서 자리가 날 때 인스턴스를 확보해주는 도구로 생성 후 등록 성공까지 과정을 안내 합니다.
- 오라클 클라우드 평생무료 서버 만들기: 인스턴스 생성 완벽 가이드(2026년 최신)
- OCI 무료 A1 인스턴스, "Out of host capacity" 우회하여 자동 생성하기
Oracle Cloud Infrastructure(OCI)는 Always Free Tier로 ARM 기반 A1 인스턴스를 무료로 제공합니다. 4 OCPU, 24GB RAM이라는 파격적인 사양이지만, 문제는 인스턴스를 만들려고 하면 높은 확률로 이런 에러를 만나게 된다는 것입니다.
무료 리소스를 사용하려는 사람이 너무 많아서, 해당 리전에 여유 자원이 없다는 뜻입니다. 수동으로 반복 시도할 수도 있지만, 언제 자리가 날지 알 수 없기 때문에 현실적이지 않습니다. 이 글에서는 1분마다 자동으로 인스턴스 생성을 시도하는 스크립트를 설정하여, 자리가 나는 즉시 인스턴스를 확보하는 방법을 소개합니다. 실제로 이 방법으로 춘천 리전에서 A1 인스턴스를 성공적으로 생성했습니다.
> 참고 스크립트: https://github.com/nahyeongjin1/oci-instance-creator
Step 1: OCI 콘솔에서 필요한 정보 수집
OCI 콘솔(https://cloud.oracle.com/)에 로그인하여 다음 정보를 수집합니다.
1-1. API Key 생성
OCI 콘솔 우측 상단 프로필 아이콘 → User Settings → API keys → Add API key → Generate API key pair → Download private key (.pem 파일 저장) → Add
추가 완료 후 표시되는 Configuration file preview의 내용을 복사해둡니다.
[DEFAULT] user=ocid1.user.oc1..xxxxxxxxxx fingerprint=aa:bb:cc:dd:ee:ff:... tenancy=ocid1.tenancy.oc1..xxxxxxxxxx region=ap-chuncheon-1 key_file=<path to your private keyfile>
1-2. Subnet OCID
Networking → Virtual Cloud Networks → VCN 선택 → Subnets → Public Subnet 클릭 → OCID 복사
VCN이 없는 경우 Start VCN Wizard로 생성하면 Public Subnet이 자동으로 만들어집니다.
1-3. Availability Domain
Compute → Instances → Create instance 클릭 → Placement 섹션에 표시되는 AD 이름을 확인합니다.
예: tMfv:AP-CHUNCHEON-1-AD-1
1-4. Image OCID
설치할 OS의 이미지 OCID는 Oracle 공식 문서에서 확인합니다.
Ubuntu 24.04: https://docs.oracle.com/iaas/images/ubuntu-2404/ Oracle Linux: https://docs.oracle.com/iaas/images/
해당 페이지에서 본인 리전의 OCID를 복사합니다.
1-5. 수집 정보 체크리스트
User OCID : ocid1.user.oc1..xxxxx Fingerprint : 0d:6b:d5:b6:... Tenancy OCID : ocid1.tenancy.oc1..xxxxx Region : ap-chuncheon-1 Subnet OCID : ocid1.subnet.oc1.ap-chuncheon-1..xxxxx Availability Domain: tMfv:AP-CHUNCHEON-1-AD-1 Image OCID : ocid1.image.oc1.ap-chuncheon-1..xxxxx Private Key 파일 : 다운로드한 .pem 파일
Step 2: 작업 환경 준비 (Windows의 경우)
Windows에서는 WSL(Windows Subsystem for Linux)을 사용합니다.
PowerShell을 관리자 권한으로 실행합니다.
wsl --install -d Ubuntu
설치 후 PC를 재부팅하고, 시작 메뉴에서 Ubuntu를 실행하여 사용자 이름과 비밀번호를 설정합니다.
Mac이나 Linux를 사용하는 경우 이 단계를 건너뛰고 터미널을 바로 사용하면 됩니다.
Step 3: OCI CLI 설치
Ubuntu 터미널에서:
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" -- --accept-all-defaults source ~/.bashrc oci --version
버전 번호가 출력되면 설치 성공입니다.
Step 4: OCI 인증 설정
config 파일 생성
mkdir -p ~/.oci cat > ~/.oci/config << 'EOF' [DEFAULT] user=ocid1.user.oc1..본인USER_OCID fingerprint=본인_FINGERPRINT tenancy=ocid1.tenancy.oc1..본인TENANCY_OCID region=ap-chuncheon-1 key_file=~/.oci/key.pem EOF
Private Key 배치
다운로드한 .pem 파일을 복사합니다. Windows에서 다운로드했다면:
cp "/mnt/c/Users/본인계정/Downloads/다운로드한파일.pem" ~/.oci/key.pem
권한 설정 및 테스트
chmod 600 ~/.oci/config ~/.oci/key.pem oci iam region list --output table
리전 테이블이 출력되면 인증 설정이 완료된 것입니다.
Step 5: SSH 키 생성
인스턴스에 접속할 때 사용할 SSH 키를 생성합니다.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/oci_key -N ""
~/.ssh/oci_key(개인키)와 ~/.ssh/oci_key.pub(공개키)가 생성됩니다.
Step 6: 자동 생성 스크립트 작성
아래 내용을 ~/oci-create.sh로 저장합니다.
코드가 깨져서 아래 링크에 올린 글을 참고 하세요.
https://url.kr/webzine/uploads/oci_cron.html
실행 권한 부여:
chmod +x ~/oci-create.sh
Step 7: 수동 테스트
~/oci-create.sh cat ~/oci-instance.log
로그에 Out of host capacity가 나오면 설정은 정상이고 리전에 자리가 없는 상태입니다. 401 NotAuthenticated가 나오면 Step 4의 인증 설정을 다시 확인하세요.
Step 8: 크론잡 등록 (1분마다 자동 실행)
crontab -e
편집기가 열리면 맨 아래에 추가:
* * * * * PATH=$HOME/bin:$PATH $HOME/oci-create.sh
저장 후 확인:
crontab -l
이제 1분마다 자동으로 인스턴스 생성을 시도합니다.
Step 9: 모니터링
로그 실시간 확인
tail -f ~/oci-instance.log
성공 여부 확인
ls ~/.oci-instance-created && echo "성공!" || echo "아직 시도 중..."
시도 횟수 확인
grep "Attempting" ~/oci-instance.log | wc -l
성공 후 정리
인스턴스가 생성되면 스크립트가 ~/.oci-instance-created 파일을 생성하므로 이후 실행 시 자동으로 종료됩니다. 크론잡을 삭제하려면:
crontab -r
생성된 인스턴스에 접속:
ssh -i ~/.ssh/oci_key ubuntu@생성된_Public_IP
(선택) 텔레그램 알림 설정
성공 시 텔레그램으로 알림을 받으려면 다음과 같이 설정합니다.
봇 생성
- 텔레그램에서 @BotFather 검색 → /newbot → 봇 이름과 username 입력
- 발급받은 HTTP API Token을 복사
Chat ID 확인
- 생성된 봇에게 아무 메시지 전송
- 브라우저에서 https://api.telegram.org/bot본인토큰/getUpdates 접속
- 응답에서 "chat":{"id":숫자} 부분의 숫자가 Chat ID
스크립트에 적용
~/oci-create.sh의 상단 변수를 수정:
TELEGRAM_TOKEN="발급받은_봇_토큰" TELEGRAM_CHAT_ID="확인한_Chat_ID"
주의사항
WSL 사용 시: WSL 터미널을 닫거나 PC를 재부팅하면 크론 서비스가 중지됩니다. 재부팅 후 Ubuntu를 실행하고 sudo service cron start를 입력해야 합니다.
무료 계정 한도: A1 인스턴스는 합산 4 OCPU, 24GB RAM까지 무료입니다. 이 스크립트는 한 번에 전체 한도를 사용하는 인스턴스를 생성합니다. 여러 개로 나누려면 --shape-config의 ocpus와 memoryInGBs 값을 조정하세요.
소요 시간: 리전과 시간대에 따라 다르지만, 수 시간에서 며칠까지 걸릴 수 있습니다. 새벽 시간대에 성공 확률이 높은 경향이 있습니다.
리전 선택: 춘천(ap-chuncheon-1) 외에 서울(ap-seoul-1) 등 다른 리전을 시도해볼 수도 있습니다. 계정 생성 시 선택한 Home Region에서 시도하는 것이 기본입니다.
실제 사용 후기
이 방법으로 춘천 리전에서 A1 인스턴스(4 OCPU, 24GB RAM, 100GB 디스크)를 성공적으로 확보했습니다. Out of host capacity 에러가 반복되다가, 크론잡 등록 후 약간의 시간이 지나 자동으로 생성이 완료되었습니다. 이후 HestiaCP를 설치하여 웹 호스팅 서버로 활용하고 있습니다.
무료로 이 정도 사양의 클라우드 서버를 사용할 수 있다는 것은 개인 프로젝트나 소규모 서비스에 매우 유용합니다. 초기 인스턴스 생성의 번거로움만 이 스크립트로 해결하면, 그 이후로는 안정적으로 운영할 수 있습니다.