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 주소를 먼저 설정한다.

  1. OCI 콘솔 메뉴 → NetworkingIP ManagementReserved Public IPs
  2. Reserve Public IP Address 클릭
  3. IP 명 등록: 프로젝트 식별을 위해 명확한 이름 사용 (ip-project)
  4. IP Source: (기본) Oracle 선택 후 생성
  5. 결과: 158.xx.xx.xx와 같은 고정 IP를 확보

네트워크(VCN) 및 보안 설정

서버가 활동할 가상 네트워크 도로를 깔아준다. 가장 실수가 잦은 방화벽(Security List) 설정이 핵심이다.

VCN 생성

  1. NetworkingVirtual Cloud Networks
  2. Start VCN Wizard 클릭 → “Create VCN with Internet Connectivity” 선택
  3. VCN Name: vcn-project
  4. CIDR 등은 기본값 유지 후 생성

방화벽(Security List) 포트 개방

생성된 VCN 클릭 → Security ListsDefault Security List

**Ingress Rules(수신 규칙)**에 다음 규칙을 추가한다.

주의

Source Port는 비워두고, 반드시 **Destination Port**에 입력해야 한다.

용도Source CIDRProtocolDestination Port설명
SSH0.0.0.0/0TCP22원격 접속용
Airflow0.0.0.0/0TCP8080웹 UI 접속용
DB0.0.0.0/0TCP5432PostgreSQL 접속용

인스턴스 생성 (방화벽 자동 해제 꿀팁 포함)

ComputeInstancesCreate Instance

Basic information

  • Name: inst-project
  • Image & Shape
    • Image: Ubuntu 24.04 Minimal
    • Shape: Ampere (ARM) VM.Standard.A1.Flex (4 OCPU, 24GB RAM)

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 save

Networking

  • 앞서 만든 vcn과 Public Subnet 선택
  • SSH key: Generate a key pair 선택 후 Private Key 다운로드(필수)

고정 IP 할당 (생성 후 교체 방식)

인스턴스 생성 시 고정 IP를 바로 붙이지 못한 경우, 기존 임시 IP 제거 후 고정 IP를 할당한다.

인스턴스 상세 페이지 → Networking 탭 → Attached VNICsPrimary VNIC 클릭

IPv4 Addresses 탭 클릭 → ... 클릭 → edit

  1. 임시 IP 제거: Edit Public IP → No public IP 선택 후 업데이트
  2. 예약 IP 할당: Edit Public IP → Reserved public IP 선택 후 업데이트
  3. 결과 확인: 인스턴스에 고정 IP(158.xx...)가 정상적으로 할당됨

로컬 접속 환경 구성 (Mac, VSCode)

SSH 키 권한 설정

mkdir -p ~/.ssh
mv ~/Downloads/ssh-key-xxxx.key ~/.ssh/key_name.key
chmod 600 ~/.ssh/key_name.key

SSH Config 구성

vi ~/.ssh/config
Host ssh_name
    HostName xxx.xx.xx.xx  (할당받은 고정 IP)
    User ubuntu
    IdentityFile ~/.ssh/key_name.key
    Port 22

VSCode 접속

  • Cmd + Shift + PRemote-SSH: Connect to Host...
  • ssh_name 클릭 → continue 선택 → 접속 성공

마치며

이제 OCI의 인스턴스 위에 Airflow와 PostgreSQL을 올릴 준비가 끝났다. 특히 초기화 스크립트를 통한 방화벽 해제VNIC 설정을 통한 고정 IP 교체 과정 덕분에 연결 타임아웃(Timeout) 문제 없이 쾌적한 환경을 구축할 수 있다.