커스텀 IP 설정이 작동하지 않나요?

안녕하세요,
최근 Debian 서버에 Discourse를 설치하려고 했는데, 사이트 접근을 위해 포트 변경을 시도한 것 외에는 모든 과정이 순조로웠습니다. 하지만 사이트에는 접속할 수 없었고, nginx만 표시되었습니다. 그래서 문제를 파악한 후, 내 네트워크를 가리키는 커스텀 IP와 커스텀 네트워크를 설정해 보았지만, 여전히 접속이 되지 않고 계속 오류가 발생합니다. 제가 받는 오류 메시지는 다음과 같습니다:

 ./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

또한 hello-world를 사용하여 먼저 테스트해 보았지만, 이 경우에는 정상적으로 작동했습니다.

docker run -it --network discourse_back --ip 192.168.1.4 hello-world

Hello from Docker!

. . .

이 문제를 해결하는 방법에 대해 아이디어가 있는 분이 있을까요? 미리 감사드립니다!

아래와 같이 시도해 보세요:

 ./launcher start app --docker-args '--network discourse_back --ip 192.168.1.4'

드디어 실행은 되게 됐는데, 이제 "Welcome to nginx"가 뜨네요. 제 호스트명 "discourse.simonz.local"을 입력했는데 (app.yml에도

DISCOURSE_HOSTNAME: discourse.simonz.local

로 명시되어 있습니다) 제가 뭔가 잘못한 건가요?

HTTPS가 없으면 프로덕션 환경의 대화 기능이 작동하지 않습니다.

해당 메시지를 표시하는 다른 nginx가 있는지 확인해 보세요.

더 복잡한 설정을 시도하기 전에 표준 설치부터 정상적으로 작동하도록 하는 것이 좋습니다.

이 인스턴스를 인터넷에서 사용 가능하게 하려는 경우라면, app.yml에서 .local 도메인을 사용하면 문제가 발생할 수 있습니다. 아마도 이 시스템은 가정 내 사용이나 테스트 목적으로만 사용하려는 것 같아 참고해 드리고자 합니다.

Docker 네트워킹이 올바르게 작동하여 호스트 머신 외부에서 해당 IP 주소로 컨테이너에 접근할 수 있다고 가정하면, DNS 설정을 통해 discourse.simonz.local이 해당 IP 주소로 해석되도록 해야 합니다.

현재 발생하고 있는 상황은 도메인이 호스트 머신으로 해석되고 있으며, 접근 시 포트(예: discourse.simonz.local:1234)를 지정하지 않아 Docker 컨테이너 대신 nginx에 도달하고 있는 것으로 보입니다.

Discourse를 다른 포트에서 사용하려는 경우, 다른 IP 주소가 필요하지 않을 가능성이 높습니다. 표준 포트에서 Discourse를 사용하되 nginx도 표준 포트에서 사용하려면, DNS를 통해 올바른 IP로 유도하거나 nginx가 Discourse를 프록시하도록 설정해야 합니다.

.local 도메인은 일반적으로 시스템의 설정된 호스트명 기반으로 시스템이 공지(announce)합니다. Discourse는 일반적으로 이를 수행할 필요가 없으므로, 컨테이너에는 이를 수행할 기능이 없을 수 있습니다.

표준 포트, 다른 IP, DNS 경로를 통해 설정하려는 경우, 이는 Discourse의 범위를 벗어난 것이며, 네트워크의 다양한 요인에 따라 설정 방법이 달라집니다.

목적이 같은 호스트에서 nginx와 Discourse를 모두 사용 가능하게 하는 것이라면, 위에서 링크한 프록시 방식을 권장합니다. 이는 기술적으로 지원되지 않는 설치 방식이지만, 더 일반적인 설정이며 더 많은 사람들이 도움을 줄 수 있는 방식입니다.

표준 포트에서만 작동합니다.

이것은 인터넷을 통해 접근해서는 안 되며, 직접 테스트해 볼 수 있도록 로컬 환경에서 실행해야 합니다. 포트는 거의 맞고 IP도 정확합니다.

포트 80에서 이미 무언가가 실행 중인데, 일반 설치에서 사용할 IP를 변경할 옵션을 찾지 못했습니다.

이미 그 변경 사항을 되돌렸고, 이제 정상적인 포트 80과 443에서 다시 실행됩니다.

리버스 프록시를 작동시키는 방법을 알고 있다면, 다른 호스트 이름으로 실행할 수 있습니다. HTTPS와 표준 포트가 필요합니다.

단순히 임시로 로컬에서 설정하여 테스트해 보기만 한다면, nginx와 함께 실행되도록 하려 하지 말고 가상 머신을 하나 시작하는 것이 좋습니다.

가상 머신에는 자체 IP를 할당할 수 있으며, 대개 자동으로 .local 주소도 부여됩니다. 그 안에 표준 Discourse 설치를 수행하면 됩니다.

작업을 마친 후에는 가상 머신을 삭제하면 되므로, nginx나 기타 구성 요소를 되돌려야 할 걱정을 하지 않아도 됩니다.

저는 docker compose 버전을 사용하는데, nginx가 이미 포함되어 있는 것 같고, 이미 VM 안에 있는 상태입니다. 그런데 같은 VM에서 실행하려고 하니까 하나는 ..1.3(제 다른 사이트), 다른 하나는 ..1.4(discourse)으로 나가네요.

방금 깨달았는데, 이미 표준 설치를 마친 상태입니다. 이제 응답하는 IP를 변경하고 싶은데, 기본 IP는 192.168.1.3인데 192.168.1.4로 응답하도록 변경하고 싶습니다. 이 두 IP 모두 이미 장치에 설정되어 있습니다.

VM에 IP 주소가 두 개 있는 경우, Docker 컨테이너의 IP 주소에 대해 별도로 할 일이 없습니다. …1.3:80/443은 호스트로, …1.4:80/443은 Docker 컨테이너로 라우팅되도록 방화벽을 설정하기만 하면 됩니다.

이 환경이 Linux라면, AFAIK(제가 아는 한) iptables와 ufw가 가장 일반적으로 사용되는 소프트웨어입니다. 해당 라우팅을 설정하는 방법에 대해서는 관련 문서나 커뮤니티에서 도움을 구해야 할 가능성이 높습니다.

다만, 최종적으로 Discourse를 설치하려는 환경과 유사한 구성을 테스트할 필요가 없는 한, 이 시범 운영을 위해 두 번째 VM을 실행하는 것을 여전히 권장합니다. Discourse를 자체 VM 내에서 실행하면 다른 HTTP/HTTPS 소프트웨어와 함께 Discourse를 실행할 때 발생할 수 있는 복잡성이 사라지기 때문입니다.

어쨌든 감사합니다. 시작은 했는데, 아무 응답이 안 와서 뭔가 잘못한 것 같아요. 그래도 도움 주셔서 감사하고, 나중에 다시 시도해 보겠습니다. 그러면 다른 결과가 나올지도 모르니까요. 도움 주신 모든 분께 감사드리고, 좋은 하루 보내세요 ^^