OCI에서 가상 서버(Compute Instance)를 생성하고 MQTT 통신을 개방하는 핵심 세팅 프로세스입니다.
1. OCI 인스턴스(가상 서버) 생성
- OCI 콘솔 로그인 후, 좌측 상단 메뉴에서 Compute > Instances로 이동하여 [Create Instance]를 클릭합니다.
- Name: IoT-Edge-Server 등 직관적인 이름을 지정합니다.
- 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' 태그가 붙은 것을 선택합니다.
- Shape: VM.Standard.E2.1.Micro (AMD, Always Free) 또는
- Networking: 기본 생성되는 VCN(Virtual Cloud Network)과 Public Subnet을 그대로 둡니다. "Assign a public IPv4 address"가 활성화되어 있는지 반드시 확인합니다.
- Add SSH keys: [Save private key]를 눌러 .key 파일을 안전한 곳에 저장합니다. (서버 접속용 마스터키입니다.)
- 하단의 [Create]를 눌러 인스턴스를 생성합니다. 주황색 아이콘이 초록색(Running)으로 바뀌면 퍼블릭 IP가 할당된 것입니다.
2. OCI 네트워크 보안 목록 (VCN 방화벽) 개방
AWS의 보안 그룹과 같은 역할입니다. 클라우드 외부에서 들어오는 포트를 열어주어야 합니다.
- 생성된 인스턴스 정보 페이지에서 Subnet 링크를 클릭합니다.
- Security Lists 아래에 있는 기본 보안 목록(Default Security List)을 클릭합니다.
- [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
'Programming > Web' 카테고리의 다른 글
| OCI Oracle Free Tier 사용 시, 느린 서버 속도 해결법 (0) | 2026.03.27 |
|---|---|
| 캐싱 전략(Caching Strategy) 종류 (0) | 2025.05.12 |
| 캐싱(Caching) (0) | 2025.05.12 |
| 정적 처리 VS 동적 처리 (0) | 2025.05.12 |
| 웹 서버와 애플리케이션 서버를 분리하는 이유 (0) | 2025.05.12 |
