우분투 서버에 도메인을 추가하기(가비아, CloudFlare, Ngnix Proxy Manager)

kk21·2025년 10월 18일
0

우분투 서버 구축

목록 보기
20/20

도메인 구매

먼저 가비아에 들어가서 도메인을 구매하자

내가 자주쓰는 kk21로 하고 검색했다

근데 마음에 드는 건 꽤나 비싸다 ...


고민하다가 .dev가 그래두 맘에 들어서 구매!
근데 .dev나 .app은 제한이 조금 있지만 .. 뭐 괜찮아서 그냥...

챱챱 구매하기


구매 완료!!!

구매한 도메인이 바로 안 떠서 당황했는데,,,,
찾아보니깐 첫 구매하고 한 10분정도는 걸릴 수 있다고 해서 얌전히 기다렸다


한 5분 정도 기다리니깐 바로 떴다 !!!


문자도 왔다!

CloudFlare 설정하기

이번에는 DNS를 위해 CloudFlare를 설정하자

[CloudFlare 바로 가기]

회원가입


먼저 회원가입을 하자

도메인 등록

[DashBoard 바로 가기]


회원가입 후 링크로 들어가게 되면 이런 화면이 뜬다

도메인 입력


저기 입력칸에 방금 구매한 도메인을 입력하자


continue 버튼을 누르면 위 처럼 화면이 바뀐다

DNS 레코드 추가


이번에는 DNS 레코드를 추가해보자

3가지 옵션이 있는데 추천 옵션인 Quick로 해보자

요금제 선택


여러 요금제가 있는데....

나는 뭐 간단한 홈서버에 1년짜리 도메인이니깐 Free로 선택해야지 ㅎㅎ

무료는 이정도 ...

레코드 추가

들어오면 레코드가 없으므로 레코드를 추가해보자!


아래로 조금 내리면 레코드 추가가 있다
이걸 눌러보자


이렇게 뜨는데 일단 A로 도메인부타 등록하자

이때

DNS(Domain Name Space) 레코드 등록

먼저 DNS에 레코드를 추가해야 한다
아래처럼 하자

네임서버 변경

이번에는 네임서버를 바꿔보자!

먼저 가비아에서 네임서버를 보면 가비아 껄로 3차까지 들어가있다

이렇게 3개인데 수정해야 한다


아래처럼 제공하는 걸로 바꾸자

소유자 인증을 해야 한다

인증 완료되면 적용 누르기

확인을 하면 끝

확인 메일도 온다 ㅎㅎ

활성 상태 굿굿


Proxy manager 설정

이제는 한 도메인에서 여러 서비스를 쓰기 위해 nginx로 proxy 를 설정할 것이다

일단 내 목표는
각각 서비스를 항상 도커로 특정 포트로 열어서 실행하고
특정 주소로 들어가면 특정 포트의 도커 안 서비스로 실행되게 하고 싶다

순서로 보면 아래처럼

[사용자 브라우저]
    │ 1) [https://시스템명.도메인] 요청 (443)
    ▼
[Cloudflare DNS]
    │ 2) [https://시스템명.도메인] <공인IP> 응답
    ▼
[인터넷]
    ▼
[공유기]
    │ 3) 포트포워딩: 443(외부) → 443(내부 서버)
    ▼
┌───────────────────────────────────────────────────────────┐
│                      내부 서버(리눅스)                        │
│  ┌─────────────────────────────────────────────────────┐  │
│  │ Nginx Proxy Manager (NPM) 컨테이너 :443/:80           │  |
│  │  - SSL 종료/적용(LE 인증서)                             |  |
│  │  - Host 헤더로 가상호스트 구분                            │  │
│  └───────┬─────────────────────────────────────────────┘  │
│          │ 4) 프록시 라우팅 (도메인 기준으로 분기)                 |
│          ▼                                                │
│   Docker 네트워크 "web" (내부 전용 L2)                        |
│      └──────────────→ [새컨테이너]◀ 현재 요청                  |
│                (컨테이너 이름으로 접근)                         |
└───────────────────────────────────────────────────────────┘
[컨테이너 응답] → NPM → 공유기 → 인터넷 → Cloudflare → 브라우저

이런 느낌으로 흐름이 가고 싶었따
참고로 내 홈서버는 와이파이에 물려 있다 ...

자 그럼 이제 천천히 해보자

docker network 생성

먼저 도커끼리 소통을 하기 위해서 network를 만들자!

sudo docker network create web

ls로 확인하면아래와 같다

proxy maneger를 위한 컨테이너 생성

명령어로 컨테이너를 생성한다

나는 80 포트가 잡혀있다고 해서 확인해보았다

서버 세팅할 때 초반에 apache를 썼었어서 80이 아파치로 잡혀있다

apache랑 nginx를 비교했을 때 apache가 더 무겁기도 하고 요새 잘 안 쓰인다고 해서 이제 nginx로 갈아탈 예정 ...

ssl let's로 했을 때 충돌나서 apache로 했었는데 ssl은 이제 내가 신경 안 써도 되니깐 ...

그러니 중단 3종 세트를 일단 하자 !!!

sudo systemctl stop apache2
sudo systemctl disable apache2
sudo systemctl mask apache2

그리고 머 어차피 안 쓸거니깐 그냥 지워버리자 .. ^>^

sudo apt purge -y apache2 apache2-bin apache2-data
sudo apt autoremove -y

이제 아까 만들어졌던 이미지랑 컨테이너를 없애서 아무것도 없게 만들자

docker rm [컨테이너]
docker rmi [이미지 이름]

아래처럼 아무것도 안 나와야 한다

이제 다시 실행해보자!

잘 실행이 되어서 확인해보니 잘 떴다

proxymanager 접속

http://서버 ip:81

위 주소로 접속하면 아래처럼 로그인 화면이 뜬다

먼저 기본 계정으로 로그인해보자

Email: admin@example.com
Password: changeme

로그인하면 아래처럼 뜬다

이때 계정 정보를 설정하자

비밀번호까지 입력하고 save를 누르면 계정 정보가 뜬다

이렇게 관리자로 잘 설정이된다 !!

테스트 컨테이너 생성

테스트로 streamlit 컨테이너를 하나 켜보자

sudo docker run -d \
  --name sys1 \
  --network web \
  -p 1222:1222 \
  python:3.11 \
  bash -lc "pip install -q streamlit && streamlit hello --server.port=1222 --server.address=0.0.0.0"

잘 돌았다

Proxy host 설정하기

이제 proxy Host 설정을 해보자

먼저 다시 웹에서 host-Proxy Host를 들어가자

그러면 아래처럼 사진이 뜬다

Add Proxy Host를 누르고 아래 정보를 넣자

테스트 정보로 이렇게 채워봤다

그리고 save를 눌러 저장하자 !!

SSL 설정

이번에는 ssl 설정을 해보자

먼저 cloudflare에서 ssl 설정이 필요하다
SSL/TLS 아래 Overview를 누르면 아래처럼 나온다

이걸 일단 Flexible로 바꾸자

다음 우리가 만들었던 host를 edit을 눌르고 ssl 탭을 누른다
그러면 양식이 뜨는ㅔ 이렇게 채우자

그러고 save를 누르면 아래처럼 ssl칸이 채워진다

이제 다시 cloudflare에서 ssl을 full로 변경하자

최종 확인

이제 주소로 접속해보자 !!

그러면 잘 뜬 걸 볼 수 있다 ..^.^


서비스 개발부터 배포까지 과정

이제 새로운 서비스를 배포할 땐 여기부터 쭉 하면 된다 ~~~

1. 개발

먼저 개발을 한다

테스트로 fastapi 코드를 작성했다

2. 컨테이너 생성

이번에는 Dockerfile을 작성하자

3. 파일 확인

파일이 이렇게 있어야 한다

4. 이미지 빌드

docker build -t test-main:latest .

5. 이미지 확인

docker iamges

6. 컨테이너 실행

docker run -d --name test-main --network web -p 3333:3333 test-main:latest

-p 3333:3333은 테스트용하기 위해 포함시켰다
만약 테스트 필요없다면 제거해도 된다

컨테이너까지 잘 실행이 됐다면 이제 터미널에서 하는 건 없다

7. Cloudflare dns 레코드 추가

파란색 add record를 누르자

Type은 A
Nmae은 접속할 이름
IPv4 address 본인 서버의 외부 주소
Proxy status 꼭 회색으로 설정
TTL Auto

8. NPM Proxy Manager host 추가


Add Proxy Host를 누르자


Domain Names 에는 위에서 설정한이름.도메인이름
즉, 여기서는 test.kk21.dev

Forward Hostnamed은 컨테이너 이름
여기서는 test-main

Forward Post는 설정한 포트 번호

소켓 사용하면 Websockets Support 켜기 (선택)

Block Common Exploits 켜기

이번에는 ssl 탭

SSL Certificate는 Request a new SSL Certificate
Force SSL 켜기
HTTP/2 SUpport 켜기
HSTS Enabed 켜기

9. 확인

이제 설정한 경로로 들어가면 잘 뜨는 걸 볼 수 있다 ^.^


일단은 이렇게 도메인 적용 끝!!!
역시 네트워크랑 서버쪽은 어려운데 쉽고 재미있는데 어렵다 🙄

지금은 npm으로 하지만.. 다음에는 쿠버네티스로 변경하는 걸 정리해봐야겠다 !!!

쿠버네티스로 쓰면 흐름은 이렇게..

쿠버네티스 도메인 흐름

Cloudflare
   ↓
Ingress Controller (ex: Nginx Ingress / Traefik / Istio)
   ↓
Ingress (도메인 라우팅 규칙)
   ↓
Service (로컬 DNS, 로드밸런서)
   ↓
Pods (FastAPI, Streamlit, etc)

그럼 오늘 기록 끝 !

profile
LLM Engineer의 성장 일기 ing. . . ✨

0개의 댓글