Oracle Cloud Free Tier의 VM.Standard.A1.Flex 인스턴스가 Out of capacity 에러로 생성 불가능할 때, 자동으로 반복 시도하여 인스턴스를 확보하는 봇입니다.
- 🔄 자동 반복 시도: 설정한 간격(기본 60초)으로 인스턴스 생성 반복 요청
- 🔍 자동 탐색: Availability Domain, Subnet, OS Image 자동 탐색
- 🔔 알림: Discord Webhook / Telegram Bot 알림 지원
- 🛡️ 중복 방지: 이미 생성된 인스턴스가 있으면 자동 종료
- 📝 로그:
logs/oci_bot.log에 상세 로그 기록 - ⚡ Graceful Shutdown:
Ctrl+C로 안전하게 종료
- OCI 콘솔 로그인
- 우측 상단 프로필 → User settings
- API Keys → Add API Key
- Generate API Key Pair → Private Key 다운로드 → Add
- Configuration Preview 내용 복사
- OCI 콘솔 → Networking → Virtual Cloud Networks
- Start VCN Wizard → Create VCN with Internet Connectivity
- 생성된 Public Subnet의 OCID 복사
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa# 1. 의존성 설치
pip install -r requirements.txt
# 2. 설정 파일 복사 & 편집
cp .env.example .env
nano .env # 또는 vim .env
# 3. 실행
python oci_bot.py| 변수 | 필수 | 설명 |
|---|---|---|
OCI_USER_OCID |
✅ | User OCID |
OCI_FINGERPRINT |
✅ | API Key Fingerprint |
OCI_TENANCY_OCID |
✅ | Tenancy OCID |
OCI_REGION |
✅ | 리전 (예: ap-chuncheon-1) |
OCI_KEY_FILE |
✅ | Private Key 경로 |
OCI_COMPARTMENT_ID |
✅ | Compartment OCID |
OCI_AVAILABILITY_DOMAIN |
❌ | AD (비워두면 자동 탐색) |
OCI_SUBNET_ID |
❌ | Subnet OCID (비워두면 자동 탐색) |
OCI_INSTANCE_NAME |
❌ | 인스턴스 이름 (기본: my-free-a1) |
OCI_OCPUS |
❌ | OCPU 수 (기본: 4) |
OCI_MEMORY_IN_GBS |
❌ | 메모리 GB (기본: 24) |
OCI_BOOT_VOLUME_SIZE_IN_GBS |
❌ | 부트볼륨 GB (기본: 100) |
OCI_OS_NAME |
❌ | OS (기본: Canonical Ubuntu) |
OCI_OS_VERSION |
❌ | OS 버전 (기본: 22.04) |
OCI_IMAGE_ID |
❌ | Image OCID 직접 지정 |
OCI_SSH_PUBLIC_KEY_FILE |
❌ | SSH 공개키 경로 |
RETRY_INTERVAL_SECONDS |
❌ | 재시도 간격 초 (기본: 60) |
DISCORD_WEBHOOK_URL |
❌ | Discord 알림 URL |
TELEGRAM_BOT_TOKEN |
❌ | Telegram Bot Token |
TELEGRAM_CHAT_ID |
❌ | Telegram Chat ID |
- 리전: 서울(
ap-seoul-1)보다 춘천(ap-chuncheon-1)이 경쟁이 덜합니다 - 시간대: 새벽~아침(KST)에 성공 확률이 높습니다
- 간격: 너무 짧으면 Rate Limit에 걸릴 수 있으므로 30~60초 권장
- 인내: 며칠 걸릴 수 있습니다. 백그라운드로 돌려두세요
# nohup으로 백그라운드 실행
nohup python oci_bot.py > /dev/null 2>&1 &
# 로그 실시간 확인
tail -f logs/oci_bot.log
# 프로세스 확인 & 종료
ps aux | grep oci_bot
kill <PID>- 봇이 자동으로 종료됩니다 (
.instance_created파일 생성) - OCI 콘솔에서 인스턴스 확인
- SSH 접속:
ssh ubuntu@<Public-IP> - 다시 실행하려면:
rm .instance_created