요약
- 오라클 클라우드에서 제공하는 평생 무료 ARM 인스턴스를 활용하여 개인 프로젝트용 서버를 구축하는 전체 과정을 상세히 설명함.
- 안정적인 서비스 운용을 위해 인스턴스 생성 전 고정 IP를 미리 확보하고 VCN 보안 목록에서 필요한 포트를 개방하여 네트워크 기초를 마련함.
- 인스턴스 생성 시 초기화 스크립트를 사용하여 OS 내부 방화벽을 자동으로 해제함으로써 빈번하게 발생하는 접속 타임아웃 문제를 사전에 차단함.
- 서버 생성 완료 후 VNIC 설정에서 기본 할당된 임시 IP를 미리 준비해 둔 고정 IP로 교체하여 주소가 변하지 않는 접속 환경을 확정함.
- 최종적으로 SSH 키 권한 설정 및 로컬 Config 파일 구성을 통해 VSCode 등에서 간편하고 안전하게 서버에 원격 접속할 수 있도록 설정함.
0. 들어가며
사용자 환경
- 운영체제: Mac
- 클라우드: Oracle
- 리젼: 싱가포르
- 인스턴스: Ubuntu / Ampere (4 OCPU, 24GB RAM)
AWS나 GCP와 달리 오라클 클라우드는 ARM 기반 인스턴스(4 OCPU, 24GB RAM) 를 평생 무료(Always Free) 로 제공하기 때문에, 개인 프로젝트용 서버로는 좋다.
그러나, 위와 같이 좋은 사양의 인스턴스를 생성하는데 사용자의 리젼이 가득차서 생성되지 않는 경우가 있다. 그래서 저는 리전을 싱가포르로 설정하고, 유료로 전환하였다.(사용량을 초과하지 않는다면, 유료 계정이라도 금액이 부과되지 않는다.)
이러한 환경을 구성한 후 나만의 서버 구축을 위해 VCN 네트워크 구성부터 인스턴스 생성, 그리고 가장 까다로웠던 고정 IP 할당과 방화벽 해제까지의 전 과정을 상세히 기록하였다.
1. 사전 준비: 고정 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를 확보
2. 네트워크(VCN) 및 보안 설정
서버가 활동할 가상 네트워크 도로를 깔아줍니다. 가장 실수가 잦은 방화벽(Security List) 설정이 핵심
2.1 VCN 생성
- Networking → Virtual Cloud Networks
Start VCN Wizard클릭 → “Create VCN with Internet Connectivity” 선택- VCN Name :
vcn-project - CIDR 등은 기본값 유지 후 생성
2.2 방화벽(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 접속용 |
3. 인스턴스 생성 (방화벽 자동 해제 꿀팁 포함)
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 다운로드 (필수!)
4. 고정 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...)가 정상적으로 할당됨
5. 로컬 접속 환경 구성 (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) 문제없이 쾌적한 환경을 구축할 수 있다.
Reference