Summary
- 오라클 클라우드에서 제공하는 평생 무료 ARM 인스턴스를 활용하여 개인 프로젝트용 서버를 구축하는 전체 과정을 다룬다.
- 안정적인 서비스 운용을 위해 인스턴스 생성 전 고정 IP를 미리 확보하고 VCN 보안 목록에서 필요한 포트를 개방하여 네트워크 기초를 마련한다.
- 인스턴스 생성 시 초기화 스크립트를 사용해 OS 내부 방화벽을 자동으로 해제함으로써 접속 타임아웃 문제를 사전에 차단한다.
- 서버 생성 완료 후 VNIC 설정에서 기본 할당된 임시 IP를 고정 IP로 교체하여 주소가 변하지 않는 접속 환경을 확정한다.
- 최종적으로 SSH 키 권한 설정 및 로컬 Config 파일 구성을 통해 VSCode 등에서 간편하고 안전하게 서버에 원격 접속할 수 있도록 설정한다.
들어가며
사용자 환경
- 운영체제: Mac
- 클라우드: Oracle
- 리젼: 싱가포르
- 인스턴스: Ubuntu / Ampere (4 OCPU, 24GB RAM)
AWS나 GCP와 달리 오라클 클라우드는 **ARM 기반 인스턴스(4 OCPU, 24GB RAM)**를 **평생 무료(Always Free)**로 제공하기 때문에, 개인 프로젝트용 서버로는 좋다.
그러나 위와 같이 좋은 사양의 인스턴스를 생성하는데 사용자의 리젼이 가득차서 생성되지 않는 경우가 있다. 이런 경우 리전을 싱가포르로 설정하고 유료로 전환하면 해결된다(사용량을 초과하지 않는다면, 유료 계정이라도 금액이 부과되지 않는다).
이 글은 이러한 환경을 구성한 후 나만의 서버 구축을 위해 VCN 네트워크 구성부터 인스턴스 생성, 그리고 가장 까다로웠던 고정 IP 할당과 방화벽 해제까지의 전 과정을 다룬다.
사전 준비: 고정 IP(Reserved Public IP) 확보
Airflow UI나 API 이용을 위해 IP가 변경되지 않는 환경이 필요하므로, 인스턴스 생성 전 IP 주소를 먼저 설정한다.
- OCI 콘솔 메뉴 → Networking → IP Management → Reserved Public IPs
Reserve Public IP Address클릭- IP 명 등록: 프로젝트 식별을 위해 명확한 이름 사용 (
ip-project) - IP Source: (기본)
Oracle선택 후 생성 - 결과:
158.xx.xx.xx와 같은 고정 IP를 확보
네트워크(VCN) 및 보안 설정
서버가 활동할 가상 네트워크 도로를 깔아준다. 가장 실수가 잦은 방화벽(Security List) 설정이 핵심이다.
VCN 생성
- Networking → Virtual Cloud Networks
Start VCN Wizard클릭 → “Create VCN with Internet Connectivity” 선택- VCN Name:
vcn-project - CIDR 등은 기본값 유지 후 생성
방화벽(Security List) 포트 개방
생성된 VCN 클릭 → Security Lists → Default Security List
**Ingress Rules(수신 규칙)**에 다음 규칙을 추가한다.
주의
Source Port는 비워두고, 반드시 **Destination Port**에 입력해야 한다.
| 용도 | Source CIDR | Protocol | Destination Port | 설명 |
|---|---|---|---|---|
| SSH | 0.0.0.0/0 | TCP | 22 | 원격 접속용 |
| Airflow | 0.0.0.0/0 | TCP | 8080 | 웹 UI 접속용 |
| DB | 0.0.0.0/0 | TCP | 5432 | PostgreSQL 접속용 |
인스턴스 생성 (방화벽 자동 해제 꿀팁 포함)
Compute → Instances → Create Instance
Basic information
- Name:
inst-project - Image & Shape
- Image:
Ubuntu 24.04 Minimal - Shape:
Ampere (ARM) VM.Standard.A1.Flex(4 OCPU, 24GB RAM)
- Image:
Shape 고급 옵션 (Advanced Options)
Management 탭 중 Initialization script →
Paste cloud-init script란에 아래 코드를 붙여넣으면, 서버 생성 시 OS 방화벽을 자동으로 내릴 수 있다.
#cloud-config
bootcmd:
- iptables -F
- netfilter-persistent save
runcmd:
- ufw disable
- iptables -P INPUT ACCEPT
- iptables -P OUTPUT ACCEPT
- iptables -P FORWARD ACCEPT
- netfilter-persistent saveNetworking
- 앞서 만든
vcn과 Public Subnet 선택 - SSH key:
Generate a key pair선택 후 Private Key 다운로드(필수)
고정 IP 할당 (생성 후 교체 방식)
인스턴스 생성 시 고정 IP를 바로 붙이지 못한 경우, 기존 임시 IP 제거 후 고정 IP를 할당한다.
인스턴스 상세 페이지 → Networking 탭 → Attached VNICs → Primary VNIC 클릭
IPv4 Addresses 탭 클릭 → ... 클릭 → edit
- 임시 IP 제거: Edit Public IP →
No public IP선택 후 업데이트 - 예약 IP 할당: Edit Public IP →
Reserved public IP선택 후 업데이트 - 결과 확인: 인스턴스에 고정 IP(
158.xx...)가 정상적으로 할당됨
로컬 접속 환경 구성 (Mac, VSCode)
SSH 키 권한 설정
mkdir -p ~/.ssh
mv ~/Downloads/ssh-key-xxxx.key ~/.ssh/key_name.key
chmod 600 ~/.ssh/key_name.keySSH Config 구성
vi ~/.ssh/configHost ssh_name
HostName xxx.xx.xx.xx (할당받은 고정 IP)
User ubuntu
IdentityFile ~/.ssh/key_name.key
Port 22VSCode 접속
Cmd + Shift + P→Remote-SSH: Connect to Host...ssh_name클릭 →continue선택 → 접속 성공
마치며
이제 OCI의 인스턴스 위에 Airflow와 PostgreSQL을 올릴 준비가 끝났다. 특히 초기화 스크립트를 통한 방화벽 해제와 VNIC 설정을 통한 고정 IP 교체 과정 덕분에 연결 타임아웃(Timeout) 문제 없이 쾌적한 환경을 구축할 수 있다.