*본 글은 ChatGPT를 활용하여 작성하였습니다.
*Caddy는 간단한 설정만으로 강력한 웹 서비스를 구축할 수 있는 현대적인 오픈소스 웹 서버이자 리버스 프록시(Reverse Proxy)이다. 기존의 Apache나 Nginx보다 설정이 훨씬 간결하며, 특히 HTTPS를 매우 쉽게 사용할 수 있다는 점이 가장 큰 장점이다. Caddy의 대표적인 특징은 Let's Encrypt를 이용한 SSL/TLS 인증서를 자동으로 발급하고 갱신한다는 점이다. 사용자는 복잡한 인증서 발급 과정이나 갱신 작업을 직접 수행할 필요 없이, 도메인만 올바르게 연결되어 있으면 Caddy가 자동으로 안전한 HTTPS 환경을 제공한다. 또한 Caddy는 리버스 프록시 기능을 기본으로 제공하여 Docker 컨테이너나 다양한 웹 애플리케이션을 손쉽게 외부에 공개할 수 있다. 예를 들어 Portainer, Prowlarr, Sonarr, Radarr, Jellyfin, Nextcloud와 같은 서비스를 각각의 도메인이나 서브도메인으로 연결하여 하나의 서버에서 안전하게 운영할 수 있다. 설정 파일인 Caddyfile은 매우 직관적인 문법을 사용한다. 몇 줄의 설정만으로 도메인 연결, HTTPS 적용, 리버스 프록시, 압축(Gzip/Zstd), HTTP에서 HTTPS로 자동 리다이렉트 등을 손쉽게 구성할 수 있어 초보자도 빠르게 익힐 수 있다. 이 밖에도 Caddy는 HTTP/2와 HTTP/3를 기본 지원하며, 뛰어난 성능과 낮은 메모리 사용량을 자랑한다. 플러그인을 통해 기능을 확장할 수도 있으며, Linux, Windows, macOS, Docker 등 다양한 환경에서 동일한 방식으로 사용할 수 있다. 최근에는 홈 서버(Home Server)와 NAS 환경에서도 많은 사용자가 Caddy를 선택하고 있다. Docker와 함께 사용하면 복잡한 네트워크 설정 없이 여러 서비스를 안전하게 운영할 수 있으며, 자동 HTTPS 기능 덕분에 개인 서버도 손쉽게 보안 연결을 적용할 수 있다. 결론적으로 Caddy는 간편한 설정, 자동 HTTPS, 강력한 리버스 프록시 기능, 높은 성능을 모두 갖춘 현대적인 웹 서버이다. 특히 개인 서버나 홈랩(Home Lab), Docker 기반 서비스를 운영하는 사용자에게 매우 적합한 솔루션으로 평가받고 있다.
*서비스들은 모두 서로 다른 포트를 사용하는데, 외부에서 각각의 서브 도메인으로 연결시켜주는 역할을 Caddy가 하게 된다.
|
서비스
|
종류
|
기본 포트
|
서브 도메인
|
|
Portainer
|
Docker 관리 웹 애플리케이션
|
9443
|
|
|
Prowlarr
|
인덱서 관리 웹 애플리케이션
|
9696
|
|
|
Sonarr
|
TV 시리즈 관리 웹 애플리케이션
|
8989
|
|
|
Radarr
|
영화 관리 웹 애플리케이션
|
7878
|
|
|
Jellyfin
|
미디어 서버
|
8096
|
|
|
Emby
|
미디어 서버
|
8096
|
(1) Caddy의 GPG 키를 추가한다.
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
(2) 저장소를 추가한다.
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
(3) Caddy를 설치한다.
|
sudo apt update
sudo apt install caddy
|
(4) Caddy 서비스가 부팅시 자동 실행되게 하고, Caddy 서비스를 시작한다.
|
sudo systemctl enable caddy
sudo systemctl start caddy
|
(5) Caddy 서비스가 정상 작동하는지 확인한다. 정상 작동하면 녹색 문자로 active (running)이라는 메시지가 뜬다.
|
systemctl status caddy
|
(6) 무료 도메인 사이트인 '내도메인.한국'에 방문하여 오른쪽의 +를 클릭하여 서브 도메인과 외부 IP 설정을 한다. 외부 IP는 터미널을 열고 'curl ifconfig.me' 명령어를 입력해 확인한다.
내도메인.한국 - 한글 무료 도메인 등록센터
한글 무료 도메인 내도메인.한국, 웹포워딩, DNS 등 무료 도메인 기능 제공
xn--220b31d95hq8o.xn--3e0b707e
|
www.swkoo.p-e.kr
|
동일한 외부 IP
|
|
|
prowlarr.swkoo.p-e.kr
|
동일한 외부 IP
|
|
|
port.swkoo.p-e.kr
|
동일한 외부 IP
|
|

*서브도메인과 외부 IP가 제대로 설정되었는지 확인하려면 터미널을 열고 다음과 같이 입력한다.
|
nslookup [서브 도메인]
|
(7) Caddy 설정 파일을 불러들인다.
|
sudo nano /etc/caddy/Caddyfile
|
(8) 서브 도메인과 서비스를 연결하는 설정을 한다. 다른 내용은 지우고 색깔이 칠해진 부분만 수정하면 된다. 파일을 첨부하였다.
|
#보안 연결이 필요가 없는 경우(HTTP)
prowlarr.swkoo.p-e.kr {
reverse_proxy 192.168.0.16:9696
}
# 보안 연결이 필요한 경우(HTTPS)
port.swkoo.p-e.kr {
reverse_proxy 192.168.0.16:9443 {
transport http {
tls_insecure_skip_verify
}
}
}
|
(9) 설정 파일이 문법에 맞게 되어 있는지 확인한다.
|
sudo caddy validate --config /etc/caddy/Caddyfile
|
*문법에 맞게 되어 있으면 최하단에 다음과 같은 메시지가 뜬다.
|
Valid configuration
|
(10) 설정 파일을 변경했으므로 Caddy를 재시작한다.
|
sudo systemctl restart caddy
|
(11) HTTP, HTTPS 접속을 위해 공유기에 접속해 포트 포워딩을 설정해야 한다. 각 포트는 중복되게 사용되어서는 안된다.
|
용도
|
포트 포워딩
|
필수 여부
|
|
HTTP 접속
|
TCP 80
|
권장
|
|
HTTPS 접속(자동 인증서 발급)
|
TCP 443
|
권장
|
(12) 다음과 같이 입력해서 방화벽을 열어준다.
|
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
|
(13) 설정된 서브 도메인으로 각 서비스에 접속해 본다.
*다음과 같은 창이 뜨면 '고급' 버튼을 클릭하여 접속해야 한다.

'쿠분투' 카테고리의 다른 글
| Persepolis Download Manager에서 Connections가 의미하는 것 (0) | 2026.08.01 |
|---|---|
| Persepolis Download Manager로 다운로드 속도를 향상시키자 (0) | 2026.08.01 |
| AllDebrid로 파일을 스트리밍하자 (0) | 2026.08.01 |
| 스마트폰의 파일을 PC로 가져오는 방법 (0) | 2026.08.01 |
| WireGuard로 외부에서 내부 네트워크의 각각 PC에 접속하자 (0) | 2026.07.20 |