···8080- `hostname`: the host relays should crawl
8181- `service_handle_domain`: the suffix used for local handles
8282- If you want users like `alice.pds.example.com`, set `service_handle_domain` to `pds.example.com`, not `example.com`.
8383+- Public handle resolution for `alice.pds.example.com` also requires wildcard DNS for `*.pds.example.com` and a reverse proxy/TLS setup that will answer those subdomains.
8384- `invite_code_required`: if true, `createAccount` requires a valid invite code
8485- `account_did_method`: set to `did:plc` if you want PLC-backed user DIDs
8586- `plc_rotation_private_key_hex`: required for `did:plc` account creation
···150151151152Expose `perlsky` through a TLS-capable reverse proxy to `127.0.0.1:7755`.
152153154154+If `service_handle_domain` is a subdomain suffix such as `pds.example.com`, your proxy must answer both:
155155+156156+- `pds.example.com`
157157+- `*.pds.example.com`
158158+159159+That is what allows external PDSes to resolve `https://alice.pds.example.com/.well-known/atproto-did`.
160160+153161A minimal Caddy site looks like:
154162155163```caddy
···158166 reverse_proxy 127.0.0.1:7755
159167}
160168```
169169+170170+For public user handles you also need a matching wildcard-capable site or on-demand TLS path for `*.pds.example.com`.
161171162172A minimal nginx site looks like:
163173···193203curl https://pds.example.com/_health
194204curl https://pds.example.com/.well-known/did.json
195205curl https://pds.example.com/xrpc/com.atproto.server.describeServer
206206+curl --resolve alice.pds.example.com:443:SERVER_IP https://alice.pds.example.com/.well-known/atproto-did
196207```
197208198209For browser-hosted clients such as `https://bsky.app`, `perlsky` also answers CORS preflight requests on XRPC routes. A quick manual probe looks like:
···208219- a healthy `_health` response
209220- a `did:web:pds.example.com` DID document
210221- `describeServer.availableUserDomains` matching `service_handle_domain`
222222+- a per-handle `/.well-known/atproto-did` response returning the account DID when queried on the handle host
211223212224## First Account
213225