커뮤니티 솔루션

CasaOS 대시보드를 노출하지 않고 Nginx Docker로 안전하게 웹사이트 호스팅하기

An October 2023 CasaOS discussion asking whether Apache, Nginx, or another web server should be used to publish a site. The community recommended a Dockerized web server and warned against exposing the CasaOS management interface directly to the Internet.

CasaOS에서 웹사이트를 호스팅할 수 있지만, 웹사이트와 CasaOS 관리 인터페이스는 별도의 서비스로 취급해야 합니다. 2023년 10월의 짧은 스레드에서 가장 중요한 조언은 바로 이것이었습니다. Docker에서 웹 서버를 실행하는 것은 합리적이지만, CasaOS 대시보드 자체를 공용 인터넷에 직접 노출하는 것은 전혀 다르고 훨씬 더 위험한 결정입니다.

간단한 정적 사이트라면 Nginx는 여전히 강력한 컨테이너 선택지입니다. 공식 이미지를 사용하면 HTML, CSS, JavaScript 및 이미지가 들어 있는 디렉터리를 거의 설정하지 않고도 제공할 수 있기 때문입니다.

웹사이트를 자체 컨테이너로 실행하기

CasaOS는 기본 Linux 호스트의 Docker와 파일을 관리하는 계층입니다. 따라서 웹사이트를 CasaOS 관리 서비스 자체에 설치할 필요가 없습니다.

웹 서버를 전용 콘텐츠 디렉터리와 필요한 포트만 사용하는 자체 컨테이너로 격리하세요.

공식 Nginx 이미지는 정적 콘텐츠를 직접 제공할 수 있습니다

현재 Nginx Docker 이미지는 로컬 웹사이트 디렉터리를 읽기 전용으로 다음 경로에 연결하는 방식을 지원합니다.

/usr/share/nginx/html

이 방식은 정적 개인 사이트에 적합합니다. 서버 프로세스가 원본 파일을 수정하지 않고 콘텐츠를 읽을 수 있기 때문입니다.

2021년 튜토리얼에 나온 오래된 서드파티 이미지를 복사하는 대신, 정적 콘텐츠를 위한 현재 공식 Nginx 컨테이너 구성을 사용하세요.

Apache도 유효하지만, 선택이 보안 경계를 결정하지는 않습니다

원래 질문은 Apache와 Nginx 중 무엇이 나은지에 관한 것이었습니다. 둘 다 웹사이트를 잘 호스팅할 수 있습니다. 더 중요한 결정은 컨테이너를 어떻게 업데이트할지, 사이트 파일을 어디에 저장할지, TLS를 구성했는지, 어떤 네트워크 포트를 노출할지입니다.

Nginx를 Apache로 바꾼다고 해서 공개적으로 노출된 관리 대시보드가 안전해지는 것은 아닙니다.

CasaOS 대시보드는 비공개로 유지하기

커뮤니티 응답자는 CasaOS 자체를 웹에 공개하지 말라고 명확히 경고했습니다. 관리 인터페이스는 파일, 컨테이너 및 기타 서버 기능을 제어할 수 있으므로, 이를 노출하면 제한적으로 구성된 웹사이트 컨테이너를 노출하는 것보다 훨씬 더 큰 공격 표면이 만들어집니다.

관리는 LAN에서 수행하거나 비공개 원격 액세스 계층 뒤에 두세요.

관리를 위해 비공개 네트워크 사용하기

원문 작성자는 Jellyfin을 위해 CasaOS를 집에 두고, 원격 Nextcloud 액세스에는 Tailscale을 사용하기로 했습니다. 이는 관심사를 분리하는 좋은 방식입니다. 공개 웹사이트 트래픽은 웹 컨테이너로 보내고, 관리 서비스는 비공개 오버레이 네트워크를 통해서만 접근할 수 있도록 하는 것입니다.

웹사이트를 공개해야 한다면 TLS와 명확한 인그레스 경로를 추가하기

공개 사이트에는 일반적으로 도메인 이름, HTTPS 인증서, 그리고 라우터 포트 포워딩 또는 인증된 리버스 터널 아키텍처가 필요합니다. 구체적인 선택은 공인 IP가 있는지와 운영하려는 인프라의 규모에 따라 달라집니다.

사이트에 필요한 웹 서버 포트만 공개하세요. 관련 없는 CasaOS 또는 Docker 관리 포트는 포워딩하지 마세요.

웹 컨테이너와 콘텐츠 스택 패치하기

최소한의 정적 Nginx 사이트는 공격 표면이 비교적 작지만, 컨테이너에는 여전히 보안 업데이트가 필요합니다. PHP, WordPress, Node.js 또는 데이터베이스를 기반으로 구축된 동적 사이트는 훨씬 더 많은 구성 요소를 추가하므로, 단순한 정적 파일처럼 취급하지 말고 애플리케이션 스택으로 업데이트해야 합니다.

웹사이트 콘텐츠를 컨테이너와 별도로 백업하기

사이트 파일은 영구 호스트 폴더나 저장소에 보관하세요. 컨테이너를 다시 생성하더라도 일회성 컨테이너 파일 시스템 내부에서 콘텐츠를 다시 구축하지 않고 웹사이트를 복구할 수 있어야 합니다.

CasaOS 웹 서버 FAQ

CasaOS에서 웹사이트를 호스팅할 수 있나요?

예. Docker화된 Nginx 또는 Apache 서버는 CasaOS UI와 독립적으로 웹 콘텐츠를 게시할 수 있습니다.

CasaOS 대시보드 자체를 공개적으로 노출해야 하나요?

원문 커뮤니티에서는 그렇게 하지 말 것을 명확히 권고했습니다. 관리 기능은 비공개로 유지하세요.

정적 사이트에 가장 간단한 서버는 무엇인가요?

Nginx의 공식 Docker 이미지는 정적 콘텐츠를 간단하게 제공할 수 있는 작업 방식을 제공합니다.