Oracle Cloud Infrastructure 가상 서버(Compute Instance) 생성

OCI에서 가상 서버(Compute Instance)를 생성하고 MQTT 통신을 개방하는 핵심 세팅 프로세스입니다.

 

1. OCI 인스턴스(가상 서버) 생성

  1. OCI 콘솔 로그인 후, 좌측 상단 메뉴에서 Compute > Instances로 이동하여 [Create Instance]를 클릭합니다.
  2. Name: IoT-Edge-Server 등 직관적인 이름을 지정합니다.
  3. Image and Shape: * Image: Ubuntu 22.04 또는 24.04를 선택합니다.
    • Shape: VM.Standard.E2.1.Micro (AMD, Always Free) 또는
      VM.Standard.A1.Flex (ARM, Always Free, 최대 4코어 24GB 램) 중 'Always Free' 태그가 붙은 것을 선택합니다.
  4. Networking: 기본 생성되는 VCN(Virtual Cloud Network)과 Public Subnet을 그대로 둡니다. "Assign a public IPv4 address"가 활성화되어 있는지 반드시 확인합니다.
  5. Add SSH keys: [Save private key]를 눌러 .key 파일을 안전한 곳에 저장합니다. (서버 접속용 마스터키입니다.)
  6. 하단의 [Create]를 눌러 인스턴스를 생성합니다. 주황색 아이콘이 초록색(Running)으로 바뀌면 퍼블릭 IP가 할당된 것입니다.

2. OCI 네트워크 보안 목록 (VCN 방화벽) 개방

AWS의 보안 그룹과 같은 역할입니다. 클라우드 외부에서 들어오는 포트를 열어주어야 합니다.

  1. 생성된 인스턴스 정보 페이지에서 Subnet 링크를 클릭합니다.
  2. Security Lists 아래에 있는 기본 보안 목록(Default Security List)을 클릭합니다.
  3. [Add Ingress Rules]를 누르고 다음 규칙들을 추가합니다.
    • Source CIDR: 0.0.0.0/0 (모든 IP 허용)
    • IP Protocol: TCP
    • Destination Port Range: 1883 (MQTT 용)
    • (선택) 향후 API 서버용으로 80, 443 포트도 동일한 방식으로 미리 열어두시면 편리합니다.

3. 서버 접속 및 Ubuntu 내부 방화벽 (iptables) 해제

이 부분이 OCI를 처음 쓸 때 가장 많이 꼬이는 함정입니다.
OCI 콘솔에서 포트를 열었더라도, OCI의 Ubuntu 이미지는 내부적으로 iptables 방화벽이 모든 외부 포트를 막고 있습니다.


다운로드한 SSH 키를 이용해 터미널에서 서버에 접속합니다.

# 권한 설정 (Windows의 경우 생략 가능, Linux/Mac 필수)
chmod 400 <다운로드한_키파일.key>

# SSH 접속 (기본 계정명은 ubuntu 입니다)
ssh -i <다운로드한_키파일.key> ubuntu@<OCI_퍼블릭_IP>

 

접속 후, Ubuntu 내부 방화벽에서 1883 포트를 개방하고 설정을 저장합니다.

# 1883 포트 개방
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 1883 -j ACCEPT

# 재부팅 시에도 방화벽 설정이 유지되도록 저장
sudo netfilter-persistent save

 

 

4. Mosquitto (MQTT 브로커) 설치

이제 환경이 열렸으니, 메시지 중계기를 설치합니다.

# 패키지 업데이트 및 Mosquitto 설치
sudo apt update
sudo apt install mosquitto mosquitto-clients -y

# 외부 접속 허용 설정 파일 작성
echo -e "listener 1883\nallow_anonymous true" | sudo tee /etc/mosquitto/conf.d/default.conf

# 서비스 재시작 및 자동 실행 등록
sudo systemctl restart mosquitto
sudo systemctl enable mosquitto