Guia

Proxy inverso e HTTPS para o servidor doméstico

Publique aplicações com Caddy ou Nginx Proxy Manager. Verifique DNS, ACME, encaminhamentos e renovação automática dos certificados.

Fonte verificada:

Um proxy inverso recebe HTTPS na porta 443 e encaminha pedidos para aplicações internas. Caddy ou Nginx Proxy Manager podem desempenhar essa função. Os respetivos painéis administrativos ficam privados.

Configuração

  1. Reserve o endereço LAN do proxy.
  2. Configure DNS para o IP público e DDNS se necessário.
  3. Encaminhe TCP 443 para o proxy.
  4. Associe cada nome à aplicação interna correta.

Certificados

HTTP-01 exige normalmente a porta 80 acessível. DNS-01 valida um registo DNS e também serve para serviços privados. Use um token API com os direitos necessários: um token DDNS não é automaticamente um token da API DNS. Um certificado wildcard cobre um nível adicional, não a raiz da zona.

Verificações

Configure proxies de confiança, WebSockets e limites de envio. Teste a renovação automática e o carregamento efetivo do novo certificado.

Exemplos de configuração

Adapte valores, interfaces e portas. Os exemplos podem corresponder a versões diferentes: não execute alternativas incompatíveis em conjunto. Nunca publique tokens reais nem chaves privadas.

ha.yourname.uk.app {
	reverse_proxy 192.168.1.20:8123
}

films.yourname.uk.app {
	reverse_proxy 192.168.1.30:8096
}

cloud.yourname.uk.app {
	reverse_proxy 192.168.1.40:11000
}
sudo systemctl reload caddy
journalctl -u caddy -f      # watch the certificates being issued
# as root on the proxy machine (sudo -i)
apt install unzip python3 curl
curl https://get.acme.sh | sh -s email=you@example.com
curl -fsSLO https://uk.app/downloads/ukapp-tools.zip && unzip ukapp-tools.zip
install -m 755 ukapp.py /usr/local/bin/ukapp
cp dns_ukapp.sh ~/.acme.sh/dnsapi/

install -m 600 /dev/null /root/.ukapp-api-token
nano /root/.ukapp-api-token          # paste the API token, save
export UKAPP_TOKEN="$(cat /root/.ukapp-api-token)"
~/.acme.sh/acme.sh --issue --server letsencrypt --dns dns_ukapp --dnssleep 300 \
  -d yourname.uk.app -d '*.yourname.uk.app'
mkdir -p /etc/caddy/certs
~/.acme.sh/acme.sh --install-cert -d yourname.uk.app --ecc \
  --fullchain-file /etc/caddy/certs/fullchain.pem \
  --key-file /etc/caddy/certs/key.pem \
  --reloadcmd "chown -R caddy:caddy /etc/caddy/certs && systemctl reload caddy"
(wildcard) {
	tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/key.pem
}

ha.yourname.uk.app {
	import wildcard
	reverse_proxy 192.168.1.20:8123
}
cat > /usr/local/sbin/acme-renew <<'EOF'
#!/bin/sh
UKAPP_TOKEN="$(cat /root/.ukapp-api-token)"
export UKAPP_TOKEN
exec /root/.acme.sh/acme.sh --cron --home /root/.acme.sh
EOF
chmod 700 /usr/local/sbin/acme-renew
~/.acme.sh/acme.sh --uninstall-cronjob
echo '17 3 * * * root /usr/local/sbin/acme-renew >/var/log/acme-renew.log 2>&1' > /etc/cron.d/acme-renew

Verificações finais

Teste com dados móveis fora do Wi-Fi. Confirme separadamente DNS, porta prevista, certificado HTTPS válido e autenticação. Mantenha painéis administrativos privados, instale atualizações e teste recuperar uma cópia. Verifique firewalls IPv6 e IPv4. Um teste de porta bem-sucedido não é uma auditoria de segurança.

Esta edição localizada resume o guia original. Os comandos mantêm a sintaxe original. Consulte a documentação do fabricante para a sua versão exata.

Fontes e documentação

Parceiros