# NPM 리버스 프록시 뒤의 UNRAID Ubuntu 서버 VM에 설치된 Discourse에서 호스트명이 해석되지 않음

**URL:** https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313
**Category:** Self-hosting
**Created:** [1월 29, 2024, 3:45오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313 "2024-01-29T15:45:40Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![randyp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/randyp/32/358521_2.png) [@randyp](https://meta.discourse.org/u/randyp)
#### Post date: [1월 29, 2024, 3:45오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/1 "2024-01-29T15:45:40Z")

</div>

여러분 안녕하세요! 여기 있는 여러 게시물을 읽어 보았지만 해결책을 찾지 못해서, 문제가 해결되길 바라며 현재 제 환경을 자세히 설명해 보겠습니다.

현재 저는 Unraid 서버를 운영하고 있습니다. Unraid는 Docker 컨테이너와 VM을 호스팅합니다. 저는 Nginix Reverse Proxy Manager(NPM)를 Docker 컨테이너로 실행하고 있으며, 이 NPM이 제가 실행하는 다른 모든 Docker 컨테이너의 리버스 프록시를 처리합니다. 방화벽은 80/443 포트의 모든 WAN 트래픽을 NPM으로 보내도록 설정되어 있고, NPM 내부에서 트래픽을 각 컨테이너로 리다이렉트하고 있습니다.

다음 가이드를 따랐습니다: [discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md#6-edit-discourse-configuration)

이 가이드는 클라우드 서버에 설치하는 것을 대상으로 하고 있다고 명시되어 있지만, 제 경우 자택에서 셀프 호스팅하는 베어 메탈(bare metal) 머신입니다.

```plaintext
System information as of Sun Jan 28 07:35:54 AM UTC 2024

  System load: 0.5126953125
  Usage of /: 45.9% of 13.16GB
  Memory usage: 6%
  Swap usage: 0%
  Processes: 125
  Users logged in: 0
  IPv4 address for docker0: 172.17.0.1
  IPv4 address for enp1s0: 10.30.20.150

```

Unraid에서 VM을 부팅하고, Ubuntu Server를 설치하고, 정적 IP 주소를 설정하고, Docker를 설치한 후 Discourse를 다운로드했습니다. 설치를 실행하면 다음과 같은 오류가 발생합니다.

```plaintext
Hostname for your Discourse? [discourse.example.com]: forum.mydomain.net

Checking your domain name . . .
WARNING: Port 443 of computer does not appear to be accessible using hostname:
WARNING: Connection to (port 80) also fails.

This suggests that forum.mydomain.net resolves to some IP address that does not reach this
machine where you are installing discourse.

The first thing to do is confirm that forum.mydomain.net resolves to the IP address of this server.
You usually do this at the same place you purchased the domain.

If you are sure that the IP address resolves correctly, it could be a firewall issue.
A web search for "open ports YOUR CLOUD SERVICE" might help.

This tool is designed only for the most standard installations. If you cannot resolve
the issue above, you will need to edit containers/app.yml yourself and then type

./launcher rebuild app

```

NPM 컨테이너에서 10.30.20.150이라는 정적 IP가 할당된 Ubuntu VM으로 ping을 보낼 수 있습니다. NPM 설정에서 https 10.30.20.150 포트 443 및 http 포트 80을 대상으로 설정해 보았지만 효과가 없습니다. 설치가 실패하면 VM 내의 Discourse 컨테이너가 닫히는 것처럼 보입니다.

이 문제를 우회할 방법이 있을까요?  
아마도, 방화벽 포트를 편집하여 리버스 프록시를 우회하고 VM을 직접 대상으로 지정하여 인증서를 발급받고 컨테이너를 실행한 후, 실행 중이になったら config.yml을 수동으로 편집하여 리버스 프록시를 사용하도록 변경할 수 있을까요?  
설치를 편집하여 SSL 인증서를 요구하지 않고 포트 80에서 실행하게 한 다음, NPM을 통해 SSL 인증서를 발급받도록 처리할 수도 있을까요?

마지막으로, 몇몇 게시물에서 Discourse에 ‘production’ 버전과 ‘development’ 버전이 있다는 것을 보았습니다… 개발 버전은 로컬 포트에서 HTML로 실행할 수 있는 것 같습니다? 만약 이것이 사실이라면, 모든 것을 리버스 프록시 뒤에 두는 것이 훨씬 쉬울 것 같습니다..? 제가 읽은 바로는 production 패키지가 업데이트를 유지하기가 더 쉽고 성능 개선이 있을 수 있다고 합니다.

이 문제에 대해 도움, 피드백 또는 제안을 정말로 감사히 하겠습니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1월 29, 2024, 4:11오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/2 "2024-01-29T16:11:51Z")

</div>

> [@randyp](#):
>
> 다음 가이드를 따랐습니다: [discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md#6-edit-discourse-configuration)

여기서 지원하는 유일한 프로덕션 설치 방식입니다.

하지만 이미 리버스 프록시를 사용하고 있으므로, 이 방식이 당신의 상황에 적합한지 확신할 수 없습니다.

Discourse 기본 이미지를 사용하여 자체적인 구성을 역공학으로 만들어보는 것을 검토해 볼 수 있습니다:

> **[discourse/base - Docker Image](https://hub.docker.com/r/discourse/base/)**

---

<div class="post-metadata">

### Author: ![Andrew\_Bond](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/andrew_bond/32/271376_2.png) [@Andrew\_Bond](https://meta.discourse.org/u/Andrew_Bond)
#### Post date: [1월 29, 2024, 4:26오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/3 "2024-01-29T16:26:53Z")

</div>

app.yml에서 포트 80과 443에 대한 참조를 #으로 제거해 주시겠어요?

---

<div class="post-metadata">

### Author: ![randyp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/randyp/32/358521_2.png) [@randyp](https://meta.discourse.org/u/randyp)
#### Post date: [1월 29, 2024, 7:29오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/4 "2024-01-29T19:29:04Z")

</div>

그 파일이 /var/discourse/containers 디렉토리에 있나요? 해당 디렉토리로 cd를 할 수 없는데, 'permission denied’라고 나옵니다.

---

<div class="post-metadata">

### Author: ![randyp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/randyp/32/358521_2.png) [@randyp](https://meta.discourse.org/u/randyp)
#### Post date: [1월 29, 2024, 7:36오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/6 "2024-01-29T19:36:59Z")

</div>

> [@merefield](#):
>
> 여기서는 이 방식이 유일하게 지원되는 프로덕션 설치 방법입니다.
> 
> 하지만 이미 리버스 프록시를 사용하고 있으므로, 이것이 당신의 상황에 적합하지 않을 수 있다고 생각합니다.
> 
> Discourse 기본 이미지를 사용하고, 나만의 맞춤형 구성을 역설계하는 방법을 조사해 볼 수 있습니다:
> 
> [discourse/base - Docker Image](https://hub.docker.com/r/discourse/base/)

그러면 이 개념의 기본은 discourse 기본 Dockerfile을 편집하여 패키지에 포함된 리버스 프록시를 설치/구성하는 줄을 제거하는 것이 되는 건가요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1월 29, 2024, 7:41오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/8 "2024-01-29T19:41:59Z")

</div>

아니요, 저는 완전히 맞춤형 docker compose(또는 오케스트레이션에 사용 중인 도구)를 만들고, discourse용에는 커스텀 dockerfile을 사용하는 방법을 살펴보겠습니다.

---

<div class="post-metadata">

### Author: ![randyp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/randyp/32/358521_2.png) [@randyp](https://meta.discourse.org/u/randyp)
#### Post date: [1월 29, 2024, 8:55오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/9 "2024-01-29T20:55:51Z")

</div>

> [@merefield](#):
>
> 아니요, 저는 완전히 맞춤형 docker compose(또는 오케스트레이션에 사용하는 다른 도구)를 만들고 discourse에 커스텀 dockerfile을 사용하는 방법을 살펴볼 것입니다.

저는 이런 작업을 해본 적이 없어서 약간 두렵습니다. 어디서부터 시작해야 할지 전혀 모르겠습니다. 제가 걸어가고 있는 이 길을 이미 걸어본 사람이 있는지, 그리고 이미 해결책을 만들어 공개한 사람이 있는지 궁금합니다.

여기 있는 이 사람이 한 것과 유사한 방식으로 진행하면, 리버스 프록시에서 빌드된 컨테이너를 격리하여 설치를 완료하거나, 자체 docker 컨테이너에서 실행 중인 외부 리버스 프록시로 올바르게 해석되도록 할 수 있을지 궁금합니다.

> [@Run other websites on the same machine as Discourse](https://meta.discourse.org/t/run-other-websites-on-the-same-machine-as-discourse/17247):
>
> If you want to run other websites on the same machine as Discourse, you need to set up an extra NGINX or HAProxy proxy in front of the Docker container. NOTE: This is for advanced admins This guide assumes you already have Discourse working - if you don’t, it may be hard to tell whether or not the configuration is working. You cannot use ./discourse-setup to set up Discourse if another server is using port 80 or 443. You will need to copy and edit samples/standalone.yml with your favorite tex…

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1월 29, 2024, 8:58오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/10 "2024-01-29T20:58:47Z")

</div>

> [@randyp](#):
>
> 저는 이런 걸 처음 해보는 거라 조금 부담스럽습니다. 어디서부터 시작해야 할지 감이 안 잡히네요. 제가 지금 밟고 있는 길을 먼저 거쳐서 수정 사항을 이미 개발하고 공개한 분이 있을까 궁금합니다.

시스템 관리 작업 중에서도 고급에 해당하지만, Docker Compose는 아주 멋진 레고로 노는 것과 비슷합니다. 보이는 것만큼 어렵지 않고, 웹에도 도움이 되는 자료가 많습니다.

매우 이식 가능한 기술을 개발하는 훌륭한 학습 경험이 될 것입니다, 도전해 보세요!

공유하신 링크도 좋은 시작 지점으로 보입니다.

---

<div class="post-metadata">

### Author: ![Andrew\_Bond](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/andrew_bond/32/271376_2.png) [@Andrew\_Bond](https://meta.discourse.org/u/Andrew_Bond)
#### Post date: [1월 30, 2024, 9:01오전 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/11 "2024-01-30T09:01:09Z")

</div>

네, 그거 맞아요.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1월 30, 2024, 6:04오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/12 "2024-01-30T18:04:12Z")

</div>

> [@merefield](#):
>
> 시스템 관리 작업 중에서도 상당히 고급스러운 영역이지만, Docker Compose는 기본적으로 매우 멋진 레고로 놀이를 하는 것과 비슷합니다. 보이는 것만큼 어렵지 않고, 웹에서도 많은 도움을 받을 수 있습니다.

하지만 그렇게 쉽지는 않습니다. 제가 이 작업을 수행할 때는 여전히 launcher를 사용하여 이미지를 빌드하고, 저장소에 푸시한 후 실행하는 방식을 사용했습니다. 또한 자산을 사전 컴파일하고, 데이터베이스 마이그레이션을 수행하며, 기타 다른 작업들을 처리할 수단이 필요합니다.

“다른 웹사이트 실행” 방법을 따르는 것이 아마도 가장 좋은 접근법일 것입니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1월 30, 2024, 6:08오후 UTC](https://meta.discourse.org/t/discourse-installed-in-unraid-ubuntu-server-vm-behind-npm-reverse-proxy-not-resolving-hostname/293313/13 "2024-01-30T18:08:40Z")

</div>

네, 쉽지 않은 작업이지만, 클라이언트 프로젝트에서 꽤 좋은 Docker Compose 솔루션을 사용해본 적이 있어요. `launcher`는 전혀 보이지 않았죠!

나도 DC를 활용한 개인 클라우드 개발 환경을 구축해 두고 있습니다 …
