docs(cli): use gordon.example.com baseline and tailscale cert guidance
- commit
- a8276fabc16d2ff616fe04c7928c14f7ad851181
- author
- brice · · 2026-02-06 19:45 UTC
- committer
- brice · · 2026-02-06 19:46 UTC
- parent
- 091af1a
- signature
- unsigned
2 files · +29 -19
M docs/cli/index.md +5 -5
| @@ -122,18 +122,18 @@ when you want to bypass your saved configuration. | |||
| 122 | 122 | Use `--insecure` when the remote endpoint uses a self-signed or otherwise untrusted TLS certificate. | |
| 123 | 123 | You can make this persistent with `insecure_tls = true` in `[client]` of `~/.config/gordon/gordon.toml` | |
| 124 | 124 | or in a specific entry in `~/.config/gordon/remotes.toml`. | |
| 125 | - | This is useful when admin/API access goes through a private network (for example Tailscale), | |
| 126 | - | while your public app domains still use wildcard DNS and normal reverse-proxy routing. | |
| 125 | + | For Tailscale setups, you can also avoid `--insecure` by using the machine `*.ts.net` name with Tailscale-issued TLS certs in Gordon server config. | |
| 126 | + | Your public app domains can still use wildcard DNS and normal reverse-proxy routing. | |
| 127 | 127 | ||
| 128 | 128 | ```bash | |
| 129 | 129 | # Using flags (use the gordon_domain from remote Gordon config) | |
| 130 | - | gordon routes list --remote https://gordon.mydomain.com --token $TOKEN | |
| 130 | + | gordon routes list --remote https://gordon.example.com --token $TOKEN | |
| 131 | 131 | ||
| 132 | 132 | # Against self-signed/private CA endpoint | |
| 133 | - | gordon --remote https://gordon.mydomain.com --token $TOKEN --insecure status | |
| 133 | + | gordon --remote https://gordon.example.com --token $TOKEN --insecure status | |
| 134 | 134 | ||
| 135 | 135 | # Using environment variables | |
| 136 | - | export GORDON_REMOTE=https://gordon.mydomain.com | |
| 136 | + | export GORDON_REMOTE=https://gordon.example.com | |
| 137 | 137 | export GORDON_TOKEN=$TOKEN | |
| 138 | 138 | export GORDON_INSECURE=true | |
| 139 | 139 | gordon routes list | |
| @@ -122,18 +122,18 @@ when you want to bypass your saved configuration. | |||||
| 122 | Use `--insecure` when the remote endpoint uses a self-signed or otherwise untrusted TLS certificate. | 122 | Use `--insecure` when the remote endpoint uses a self-signed or otherwise untrusted TLS certificate. | ||
| 123 | You can make this persistent with `insecure_tls = true` in `[client]` of `~/.config/gordon/gordon.toml` | 123 | You can make this persistent with `insecure_tls = true` in `[client]` of `~/.config/gordon/gordon.toml` | ||
| 124 | or in a specific entry in `~/.config/gordon/remotes.toml`. | 124 | or in a specific entry in `~/.config/gordon/remotes.toml`. | ||
| 125 | - | This is useful when admin/API access goes through a private network (for example Tailscale), | 125 | + | For Tailscale setups, you can also avoid `--insecure` by using the machine `*.ts.net` name with Tailscale-issued TLS certs in Gordon server config. |
| 126 | - | while your public app domains still use wildcard DNS and normal reverse-proxy routing. | 126 | + | Your public app domains can still use wildcard DNS and normal reverse-proxy routing. |
| 127 | 127 | ||||
| 128 | ```bash | 128 | ```bash | ||
| 129 | # Using flags (use the gordon_domain from remote Gordon config) | 129 | # Using flags (use the gordon_domain from remote Gordon config) | ||
| 130 | - | gordon routes list --remote https://gordon.mydomain.com --token $TOKEN | 130 | + | gordon routes list --remote https://gordon.example.com --token $TOKEN |
| 131 | 131 | ||||
| 132 | # Against self-signed/private CA endpoint | 132 | # Against self-signed/private CA endpoint | ||
| 133 | - | gordon --remote https://gordon.mydomain.com --token $TOKEN --insecure status | 133 | + | gordon --remote https://gordon.example.com --token $TOKEN --insecure status |
| 134 | 134 | ||||
| 135 | # Using environment variables | 135 | # Using environment variables | ||
| 136 | - | export GORDON_REMOTE=https://gordon.mydomain.com | 136 | + | export GORDON_REMOTE=https://gordon.example.com |
| 137 | export GORDON_TOKEN=$TOKEN | 137 | export GORDON_TOKEN=$TOKEN | ||
| 138 | export GORDON_INSECURE=true | 138 | export GORDON_INSECURE=true | ||
| 139 | gordon routes list | 139 | gordon routes list | ||
M docs/cli/remotes.md +24 -14
| @@ -304,31 +304,41 @@ gordon remotes use prod && gordon routes list | |||
| 304 | 304 | gordon remotes use staging && gordon routes list | |
| 305 | 305 | ``` | |
| 306 | 306 | ||
| 307 | - | ### Tailscale Admin + Wildcard App Domains | |
| 307 | + | ### Private Admin + Wildcard App Domains | |
| 308 | 308 | ||
| 309 | - | Use this pattern when Gordon admin/API is reachable only on a Tailscale path (self-signed or private cert), | |
| 310 | - | while app traffic still uses your public wildcard DNS and reverse-proxy routing. | |
| 309 | + | Recommended default: use your normal Gordon admin domain with a valid public certificate. | |
| 311 | 310 | ||
| 312 | 311 | ```toml | |
| 313 | 312 | # ~/.config/gordon/remotes.toml | |
| 314 | - | active = "prod-ts" | |
| 313 | + | active = "prod" | |
| 315 | 314 | ||
| 316 | - | [remotes.prod-ts] | |
| 317 | - | url = "https://gordon-backend.tailnet.ts.net" | |
| 315 | + | [remotes.prod] | |
| 316 | + | url = "https://gordon.example.com" | |
| 318 | 317 | token_env = "GORDON_TOKEN" | |
| 319 | - | insecure_tls = true | |
| 320 | 318 | ``` | |
| 321 | 319 | ||
| 320 | + | If your admin/API path is private over Tailscale, you have two options: | |
| 321 | + | ||
| 322 | + | 1. Use `insecure_tls = true` for that remote. | |
| 323 | + | 2. Prefer a Tailscale-issued cert on the machine's `*.ts.net` name and keep verification enabled. | |
| 324 | + | ||
| 325 | + | Tailscale certificates are issued for tailnet MagicDNS names (for example `host-name.tailnet.ts.net`), not your custom domain. Enable HTTPS certificates in the Tailscale admin DNS settings, then generate files on the host: | |
| 326 | + | ||
| 322 | 327 | ```bash | |
| 323 | - | # CLI calls Gordon admin API over Tailscale with insecure TLS allowed | |
| 324 | - | gordon status | |
| 325 | - | gordon routes list | |
| 326 | - | gordon deploy app.bnema.dev | |
| 328 | + | sudo tailscale cert --cert-file /etc/gordon/tls/cert.pem --key-file /etc/gordon/tls/key.pem host-name.tailnet.ts.net | |
| 329 | + | ``` | |
| 330 | + | ||
| 331 | + | Configure Gordon to use them: | |
| 332 | + | ||
| 333 | + | ```toml | |
| 334 | + | [server] | |
| 335 | + | tls_enabled = true | |
| 336 | + | tls_port = 443 | |
| 337 | + | tls_cert_file = "/etc/gordon/tls/cert.pem" | |
| 338 | + | tls_key_file = "/etc/gordon/tls/key.pem" | |
| 327 | 339 | ``` | |
| 328 | 340 | ||
| 329 | - | `insecure_tls` only affects CLI -> Gordon admin HTTPS verification. It does not change | |
| 330 | - | your runtime routing: the Gordon reverse proxy and container routes can still serve | |
| 331 | - | `*.bnema.dev` behind your normal wildcard DNS setup. | |
| 341 | + | `insecure_tls` only affects CLI -> Gordon admin HTTPS verification. It does not change runtime routing: Gordon reverse proxy and container routes can still serve wildcard app domains like `*.example.com`. | |
| 332 | 342 | ||
| 333 | 343 | ## Related | |
| 334 | 344 | ||
| @@ -304,31 +304,41 @@ gordon remotes use prod && gordon routes list | |||||
| 304 | gordon remotes use staging && gordon routes list | 304 | gordon remotes use staging && gordon routes list | ||
| 305 | ``` | 305 | ``` | ||
| 306 | 306 | ||||
| 307 | - | ### Tailscale Admin + Wildcard App Domains | 307 | + | ### Private Admin + Wildcard App Domains |
| 308 | 308 | ||||
| 309 | - | Use this pattern when Gordon admin/API is reachable only on a Tailscale path (self-signed or private cert), | 309 | + | Recommended default: use your normal Gordon admin domain with a valid public certificate. |
| 310 | - | while app traffic still uses your public wildcard DNS and reverse-proxy routing. | |||
| 311 | 310 | ||||
| 312 | ```toml | 311 | ```toml | ||
| 313 | # ~/.config/gordon/remotes.toml | 312 | # ~/.config/gordon/remotes.toml | ||
| 314 | - | active = "prod-ts" | 313 | + | active = "prod" |
| 315 | 314 | ||||
| 316 | - | [remotes.prod-ts] | 315 | + | [remotes.prod] |
| 317 | - | url = "https://gordon-backend.tailnet.ts.net" | 316 | + | url = "https://gordon.example.com" |
| 318 | token_env = "GORDON_TOKEN" | 317 | token_env = "GORDON_TOKEN" | ||
| 319 | - | insecure_tls = true | |||
| 320 | ``` | 318 | ``` | ||
| 321 | 319 | ||||
| 320 | + | If your admin/API path is private over Tailscale, you have two options: | |||
| 321 | + | ||||
| 322 | + | 1. Use `insecure_tls = true` for that remote. | |||
| 323 | + | 2. Prefer a Tailscale-issued cert on the machine's `*.ts.net` name and keep verification enabled. | |||
| 324 | + | ||||
| 325 | + | Tailscale certificates are issued for tailnet MagicDNS names (for example `host-name.tailnet.ts.net`), not your custom domain. Enable HTTPS certificates in the Tailscale admin DNS settings, then generate files on the host: | |||
| 326 | + | ||||
| 322 | ```bash | 327 | ```bash | ||
| 323 | - | # CLI calls Gordon admin API over Tailscale with insecure TLS allowed | 328 | + | sudo tailscale cert --cert-file /etc/gordon/tls/cert.pem --key-file /etc/gordon/tls/key.pem host-name.tailnet.ts.net |
| 324 | - | gordon status | 329 | + | ``` |
| 325 | - | gordon routes list | 330 | + | |
| 326 | - | gordon deploy app.bnema.dev | 331 | + | Configure Gordon to use them: |
| 332 | + | ||||
| 333 | + | ```toml | |||
| 334 | + | [server] | |||
| 335 | + | tls_enabled = true | |||
| 336 | + | tls_port = 443 | |||
| 337 | + | tls_cert_file = "/etc/gordon/tls/cert.pem" | |||
| 338 | + | tls_key_file = "/etc/gordon/tls/key.pem" | |||
| 327 | ``` | 339 | ``` | ||
| 328 | 340 | ||||
| 329 | - | `insecure_tls` only affects CLI -> Gordon admin HTTPS verification. It does not change | 341 | + | `insecure_tls` only affects CLI -> Gordon admin HTTPS verification. It does not change runtime routing: Gordon reverse proxy and container routes can still serve wildcard app domains like `*.example.com`. |
| 330 | - | your runtime routing: the Gordon reverse proxy and container routes can still serve | |||
| 331 | - | `*.bnema.dev` behind your normal wildcard DNS setup. | |||
| 332 | 342 | ||||
| 333 | ## Related | 343 | ## Related | ||
| 334 | 344 | ||||