Standalone Web Server¶
When YAAMon is the only web application on the host, it can run directly on ports 80 and 443 without a reverse proxy.
TLS modes¶
Set tls.mode in config.yaml:
| Mode | When to use |
|---|---|
disabled |
HTTP only — local LAN, or when TLS is handled by an upstream proxy |
self_signed |
Generates a self-signed certificate on first run — instant setup, browser warning |
provided |
Supply your own certificate and key files |
acme |
Automatic Let's Encrypt certificate via ACME — requires a public domain name |
disabled (HTTP only)¶
self_signed¶
YAAMon generates a self-signed certificate on first run and stores it in the database. The certificate is reused on subsequent starts. Browsers will show a security warning — click through or add a permanent exception.
provided¶
tls:
mode: provided
cert_file: /etc/yaamon/fullchain.pem
key_file: /etc/yaamon/privkey.pem
server:
https_port: 443
redirect_http: true
Provide a PEM-format certificate chain and private key. Restart YAAMon after renewing the certificate.
Planned: automatic hot-reload when the certificate file changes (tracked in issue #11) — no restart will be required.
acme (Let's Encrypt)¶
tls:
mode: acme
acme_domain: yaamon.example.com
acme_cache_dir: /etc/yaamon/acme
server:
http_port: 80 # ACME HTTP-01 challenge requires port 80
https_port: 443
redirect_http: true
Requirements:
- A registered public domain name pointing to this host
- Port 80 reachable from the internet (for the HTTP-01 ACME challenge)
- acme_cache_dir writable by the yaamon user
Planned: DNS-01 ACME challenge support (no port 80 required, wildcard certificates) — tracked in issue #11.
HTTP/3 (QUIC)¶
When TLS is active (tls.mode is anything other than disabled), YAAMon automatically opens a QUIC (UDP) listener on the same port as HTTPS and injects an Alt-Svc header on every response so browsers discover and upgrade to HTTP/3. No configuration is required.
To opt out (e.g. when UDP is blocked by a firewall):
Firewall / Docker note: QUIC runs over UDP. Make sure UDP on the HTTPS port is reachable:
# firewalld (AllStarLink Appliance or any firewalld host)
sudo firewall-cmd --permanent --add-port=443/udp
sudo firewall-cmd --reload
Behind a proxy? QUIC is not needed in YAAMon when running behind Caddy (or any modern reverse proxy) — the proxy handles QUIC termination itself. This feature is only relevant for standalone deployments where YAAMon is the TLS endpoint. See Behind Caddy for proxy setup.
Running on port 80 without root¶
Port 80 (and 443) are privileged ports. To run as a non-root user, grant the binary the CAP_NET_BIND_SERVICE capability:
This survives reboots but must be re-applied after each upgrade. Alternatively, run behind a reverse proxy that listens on port 80 and forwards to YAAMon on 8080.