Setup
- StartOS 0.4.0 (upgraded Sep 21), running DocuSeal 3.2.6
- StartTunnel 1.3.0 on a small VPS (Debian 12) at a provider that uses 1:1 NAT: the VM only sees an internal IP (call it INTERNAL_IP), mapped externally to a public IP (EXTERNAL_IP)
- Public domain
sub.example.comadded on the StartTunnel gateway in StartOS, CA = Let’s Encrypt - DNS A record → EXTERNAL_IP (DNS-only, verified resolving)
What I did for the NAT
Initially StartTunnel bound 443 to EXTERNAL_IP, which the VM can’t receive on under 1:1 NAT. Fixed with:
start-tunnel subnet <subnet>/24 set-wan --wan-ip INTERNAL_IP
After that ss -tlnp shows the SNI demux on INTERNAL_IP:443. A manual published port for 80 → my-server:80 exists, and the Published Ports UI shows both it and the automatic 443 hostname entry on INTERNAL_IP.
What works
- Tunnel is up; StartOS shows the StartTunnel gateway with WAN IP = EXTERNAL_IP, regular PCP ANNOUNCE in
journalctl -u start-tunneld - StartOS Address Requirements: DNS ✓, port 443 ✓
- From the VPS:
curl -sSI http://<tunnel-ip-of-server>/→ 200 (tunnel path to the service) - From the VPS:
curl -sSI -H "Host: sub.example.com" http://INTERNAL_IP/→ 200 (NAT’d port-80 path) - From outside (phone on cellular): the TLS connection completes, but the server presents the StartOS Local Intermediate CA cert → browser HSTS block
What doesn’t
- The Let’s Encrypt certificate never issues. crt.sh shows no certificates ever logged for this hostname.
- No StartOS notification and no visible error. Toggling the public domain off/on several times over a few hours changed nothing.
journalctl -u start-tunneldcontains only routine PCP/websocket lines, nothing ACME-related.
Questions
- Where does StartOS 0.4.0 log ACME attempts and failures? Nothing appears in Notifications or the OS Logs view.
- Behind a StartTunnel gateway, does the Let’s Encrypt flow use HTTP-01 on 80 or TLS-ALPN on 443? Is anything extra required when the gateway’s WAN IP is set to a NAT-internal address?
- Is there a way to manually trigger a certificate request or view the last ACME error?