@@ -47,7 +47,7 @@ setup):
4747### What to Back Up
4848
4949| File | Priority | Description |
50- | ---------------------------------------- | -------------- | ---------------------------------------------------------------------------- |
50+ | -------------------------------------- | ------------ | -------------------------------------------------------------------------- |
5151| ` <storage_dir>/keys_seed ` | ** Critical** | Node identity and master secret. Required to recover on-chain funds. |
5252| ` <network_dir>/ldk_node_data.sqlite ` | ** Critical** | Channel state and on-chain wallet data. Required to recover channel funds. |
5353| ` <network_dir>/ldk_server_data.sqlite ` | Nice-to-have | Payment and forwarding history |
@@ -80,6 +80,39 @@ setup):
8080- Certificate includes ` localhost ` and ` 127.0.0.1 ` in SANs by default
8181- Add your server's hostname/IP to ` [tls] hosts ` for remote access
8282
83+ ### CA-Signed Certificates (Let's Encrypt / ACME)
84+
85+ For production deployments, many operators prefer a publicly trusted certificate. The
86+ recommended approach is to provision the certificate outside of LDK Server (via an ACME
87+ client) and point ` [tls] cert_path ` and ` key_path ` to the resulting files.
88+
89+ High-level flow:
90+
91+ 1 . Choose a public hostname for the gRPC endpoint (e.g., ` ldk.example.com ` ).
92+ 2 . Set ` grpc_service_address ` to bind on the public interface.
93+ 3 . Add the hostname to ` [tls] hosts ` so SANs match what clients connect to.
94+ 4 . Use an ACME client (certbot, lego, acme.sh) to obtain a certificate for the hostname.
95+ 5 . Configure ` [tls] cert_path ` and ` key_path ` to the ACME output files.
96+ 6 . Restart the server after renewals (LDK Server reads TLS files at startup).
97+
98+ Example (certbot with a pre-provisioned DNS or HTTP-01 flow):
99+
100+ ``` toml
101+ [node ]
102+ grpc_service_address = " 0.0.0.0:3536"
103+
104+ [tls ]
105+ cert_path = " /etc/letsencrypt/live/ldk.example.com/fullchain.pem"
106+ key_path = " /etc/letsencrypt/live/ldk.example.com/privkey.pem"
107+ hosts = [" ldk.example.com" ]
108+ ```
109+
110+ Notes:
111+
112+ - Ensure the ` ldk-server ` process can read the cert and key files.
113+ - After a renewal, restart the service to pick up the new certificate.
114+ - If you want zero-downtime renewals, place a reverse proxy in front and terminate TLS there.
115+
83116### Network Exposure
84117
85118The gRPC service binds to ` 127.0.0.1:3536 ` by default. For remote access, either:
@@ -129,7 +162,7 @@ scrape_configs:
129162 username : prometheus
130163 password : secret
131164 static_configs :
132- - targets : [ ' localhost:3536' ]
165+ - targets : [" localhost:3536" ]
133166` ` `
134167
135168### Available Metrics
0 commit comments