Instalação auto-hospedada atrás de um IP não "full-stack"

Olá,

Para fins de teste/validação, estou instalando o Discourse em uma máquina Ubuntu na minha casa, cuja IP local foi fixada, digamos 192.168.1.200.
Ela está atrás de um roteador com um IP público, digamos A.B.C.D, não full-stack. :roll_eyes:

Por uma razão alheia à minha vontade, não consigo alterá-lo para um full-stack. Portanto, estou limitado no NAT do roteador a um intervalo de portas de entrada com valores muito altos, ou seja, nem 443 nem 80.

Para o exemplo, vamos dizer que eu abra a porta de entrada 50000 em TCP/UDP para 192.168.1.200 na porta 443.

Parece que, portanto, uma requisição chegando no IP público A.B.C.D na porta 50000 deve ser redirecionada para 192.168.1.200:443.

Tenho um nome de subdomínio, digamos: forum.mondomaine.me, com os registros A e AAAA apontando para o IP público A.B.C.D (para IPv4).

Adicionei um redirecionamento nesse nível de https://forum.mondomaine.me para o meu IP público A.B.C.D:50000.

Se eu tentar acessar a URL mencionada acima, vejo a mudança para A.B.C.D:50000 e, claro, uma rejeição, pois ainda não há escuta em 192.168.1.200:443.

O problema é que, durante a instalação (modo Docker) do Discourse na minha máquina, a etapa de verificação da configuração do domínio falha:

/!\ A porta 443 deste computador não parece ser acessível usando o hostname: forum.mondomaine.me
/!\ A conexão para http://forum.mondomaine.me (porta 80) também falha.

Deve haver uma solução ou uma alternativa, mas por enquanto não vejo…

É uma rede doméstica? É possível que seu provedor de internet esteja bloqueando o tráfego? Por que não usar um VPS em vez disso?

(EDIT: Use um túnel do Cloudflare, recomendado na documentação vinculada acima)

Obrigado pelas respostas.

É uma rede doméstica?

Instalando o Discourse em uma máquina Ubuntu em casa, como mencionei inicialmente, sim, é realmente uma rede doméstica.

É possível que seu provedor de internet (ISP) esteja bloqueando o tráfego?

Esse é exatamente o caso quando o IP público não é full-stack. E, neste momento, não há nada que eu possa fazer a respeito.

Por que não usar um VPS em vez disso?

Porque, para este teste, não pretendo comprar um VPS. Mas concordo: um VPS seria a solução se eu já tivesse um à disposição. E eu não teria hesitado.

Quanto ao uso de um túnel do Cloudflare, pelo que acabei de perceber, parece ser uma complicação desnecessária para tão pouco… E além disso, o Cloudflare…

Se apenas fosse tão simples e rápido instalar o Discourse em uma rede local isolada (ou não)…

Vi que existe um guia em algum lugar (cuja URL já perdi) para um intranet, que também me pareceu bastante pesado, especialmente comparado a uma instalação padrão!

Vamos deixar pra lá, não é vital, não quero passar horas nisso. :laughing:

Obrigado novamente pelas respostas.

Não é possível configurar ignorando essa etapa?

Como explicado neste post de Jay, a verificação de porta pode ser ignorada usando:

 --skip-connection-test

Você precisa de uma conexão externa à sua LAN para testar ou como parte do seu desenvolvimento?

Desculpe se estou entendendo mal o problema.

Pelo tempo gasto consertando tudo entre sua própria rede, seu ISP realmente encaminhando o tráfego corretamente e você garantindo que não está deixando nenhuma porta aberta para um ator suspeito sequestrar sua rede doméstica, usar túneis Cloudflare é bastante fácil e direto, na minha opinião. Especialmente em uma rede doméstica.

O Discourse exige HTTPS. A menos que você saiba como obter um certificado e instalá-lo conforme descrito em outro lugar, sua melhor opção é instalar o Discourse em uma conexão residencial de internet com Cloudflare Tunnel

Acredito que esta seja a forma de instalar seu próprio certificado: Habilitar SSL/HTTPS para sua configuração do Discourse no Docker

Obrigado @Andrew_Rowe pela dica!

Não, não preciso de uma conexão vinda de fora da minha LAN para testar.

Então, executei install-discourse com --skip-connection-test e, como esperado, a instalação prosseguiu sem travar na verificação do domínio.

É importante lembrar de parar o nginx se ele já estiver rodando (fora do Docker).

Mas está tudo certo! O Discourse está rodando dentro do seu container!

Porém… aparentemente, agora temos um problema com o certificado.

nginx: [emerg] cannot load certificate “/shared/ssl/forum.mondomaine.me.cer”: PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Claro, segui este tópico e verifiquei a existência de /var/discourse/shared/ssl/forum.mondomaine.me.cer, e está tudo certo, assim como o .key e os outros dois arquivos em .me_ecc.cer|key.

Reconstruí o container, mas o problema persiste.

Posso confirmar que instalar o Discourse em uma máquina de teste local é um verdadeiro desafio! :joy:

Parece que isso não é incentivado.

E, na falta de uma solução simples (não, não usarei o CloudFlare, não adianta seguir por esse caminho, obrigado), acho que será minha última mensagem sobre o assunto. :grinning_face_with_smiling_eyes:

Você na verdade não compra um. Você o aluga.

Sem dúvida, @merefield, obrigado pela precisão. Vou também esclarecer o que eu quis dizer: não pretendo gastar dinheiro com um VPS.

Só mais uma coisa: notei que o comando docker run incluía DISCOURSE_FORCE_HTTPS=true, então mudei para false e reiniciei após reconstruir o container.

Nenhuma mudança.

Se você não pretende usar um túnel no estilo Cloudflare e apenas quer dar uma olhada, use um dev-install

Obrigado! Vou verificar isso, de fato.