landfall 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -4
- package/dist/cli.mjs +131 -113
- package/dist/index.html +90 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -121,6 +121,7 @@ with the newest release. An existing Docker is never reinstalled. In a terminal,
|
|
|
121
121
|
| `--dashboard traefik.example.com` | Traefik dashboard behind basic auth (`traefik` alone means `traefik.<main domain>`) |
|
|
122
122
|
| `--image traefik:v3.5` | Traefik image (remembered, default `traefik:v3`) |
|
|
123
123
|
| `--host-network` | run Traefik on the host network (remembered), see [Traefik](#traefik) |
|
|
124
|
+
| `--no-http3` | Traefik without HTTP/3 on 443/udp (remembered), see [Traefik](#traefik) |
|
|
124
125
|
| `--no-firewall` / `--no-harden` / `--no-traefik` / `--no-ssh-config` | skip a step |
|
|
125
126
|
| `--check` / `--key-only` / `--force` | report only / install only the key / apply despite conflicts |
|
|
126
127
|
|
|
@@ -135,7 +136,7 @@ No domain yet? Leave out `-d`. landfall offers `<name>.<ip-with-dashes>.sslip.io
|
|
|
135
136
|
| kind | when | how |
|
|
136
137
|
|---|---|---|
|
|
137
138
|
| **compose** | the folder has a `compose.yaml` | Uploads the folder and runs it as one Compose project. See [Compose sites](#compose-sites). |
|
|
138
|
-
| **static** | no compose file, no Dockerfile | Uploads the folder and serves it with `nginx:alpine` (gzip, long cache headers for assets). The folder is `.` if it has an `index.html`, else the first of `dist/ build/ out/ public/ _site/ site
|
|
139
|
+
| **static** | no compose file, no Dockerfile | Uploads the folder and serves it with `nginx:alpine` (gzip, long cache headers for assets). The folder is where the site generator builds to, even before the first build (Vite/Astro `dist/` or its `outDir`, SvelteKit/CRA/Docusaurus `build/`, Next `out/`, Gatsby/Hugo `public/`, Eleventy/Jekyll `_site/`, Nuxt `.output/public/`, Angular, MkDocs `site/`), else `.` if it has an `index.html`, else the first of `dist/ build/ out/ public/ _site/ site/` with one. `lf deploy <dir>` picks another. `--spa` sends unknown paths to `index.html`. |
|
|
139
140
|
| **dockerfile** | the folder has a `Dockerfile` | Uploads the folder and builds it on the server. The port comes from `EXPOSE`, else `--port` (default 3000). `--static` forces static. |
|
|
140
141
|
| **image** | `--image ghcr.io/me/app:1.2` | Pulls the image and runs it. Needs `--port`. For private registries: `lf ssh vps -- docker login ghcr.io`. |
|
|
141
142
|
|
|
@@ -260,8 +261,10 @@ lf domains # where DNS points, whether HTTPS answers
|
|
|
260
261
|
lf domains --add www.example.com # also --rm, --set (updates .landfall.json)
|
|
261
262
|
lf domains --rm @ # take the main domain off; the last one leaves the site running, unrouted
|
|
262
263
|
lf auth -u anna # login in front of the site (asks for the password, -p passes it)
|
|
264
|
+
lf auth -p '…' # the same for user admin
|
|
263
265
|
lf auth --rm-user anna | --off
|
|
264
266
|
lf open
|
|
267
|
+
lf tunnel blog # http://localhost:<port> straight to its container: test it without a domain
|
|
265
268
|
lf sites rm blog # delete the site (asks you to type the name)
|
|
266
269
|
lf logs api -s vps # another site on another server
|
|
267
270
|
```
|
|
@@ -292,8 +295,10 @@ Version-pinned tags show the newest tag of the same shape (`traefik:v3.6` → `t
|
|
|
292
295
|
lf traefik status # container state, routes, mode
|
|
293
296
|
lf traefik logs -f # certificate errors show up here
|
|
294
297
|
lf traefik setup --email you@example.com # reconfigure (safe to re-run)
|
|
295
|
-
lf traefik setup --dashboard traefik # dashboard at traefik.<main domain
|
|
298
|
+
lf traefik setup --dashboard traefik # dashboard at traefik.<main domain> behind a login; `off` removes it
|
|
299
|
+
lf traefik dashboard # the dashboard on localhost through an SSH tunnel, no domain needed
|
|
296
300
|
lf traefik setup --host-network # bind 80/443 on the host
|
|
301
|
+
lf traefik setup --no-http3 # turn HTTP/3 off (on by default)
|
|
297
302
|
```
|
|
298
303
|
|
|
299
304
|
landfall's Traefik is the container `traefik` from `/opt/landfall/traefik/docker-compose.yml`. By default Docker
|
|
@@ -304,6 +309,11 @@ publishes 80/443 to it. Sites work the same in both modes:
|
|
|
304
309
|
| client IP in logs / `X-Forwarded-For` | real IPv4; IPv6 may show Docker's gateway | always real |
|
|
305
310
|
| ufw | Docker's NAT bypasses ufw for 80/443 | ufw applies |
|
|
306
311
|
|
|
312
|
+
HTTP/3 (QUIC) is on by default: Traefik also listens on 443/udp, and browsers switch to it after their first
|
|
313
|
+
HTTP/2 request. Setup's firewall opens 443/udp; with `--host-network` on a server whose ufw is already active,
|
|
314
|
+
`lf traefik setup` adds the rule. `--no-http3` turns it off (remembered). In the web UI (`lf ui`)
|
|
315
|
+
these options are in a server's settings under Traefik → Settings….
|
|
316
|
+
|
|
307
317
|
Traefik only answers hosts it has a certificate for (`sniStrict`). A domain pointed at the server but served
|
|
308
318
|
by no site fails the TLS handshake, as if nothing listened there, instead of showing a 404 or Traefik's own
|
|
309
319
|
certificate; plain HTTP to it redirects to HTTPS and fails the same way. A new site's domain fails the same way
|
|
@@ -311,7 +321,10 @@ for the seconds until Let's Encrypt issues its certificate. Your own certificate
|
|
|
311
321
|
`/opt/landfall/traefik/dynamic/`: landfall rewrites only `landfall.yml` there. If you edit
|
|
312
322
|
`docker-compose.yml` by hand, `lf traefik setup` shows the diff and stops; `--force` overwrites your edits.
|
|
313
323
|
|
|
314
|
-
The dashboard password is generated and printed once (`--dashboard-password` sets your own
|
|
324
|
+
The dashboard password is generated and printed once (`--dashboard-password` sets your own, `--dashboard-user` the user, default `admin`).
|
|
325
|
+
The dashboard is always reachable through `lf traefik dashboard`: Traefik serves it on port 8080 to the server itself only
|
|
326
|
+
(loopback and the `web` network's gateway), never published. A Traefik set up before this needs `lf traefik setup` once.
|
|
327
|
+
With your own Traefik, `lf traefik dashboard --port 8080` tunnels to its API port; the web UI shows the domains its dashboard is on. Image, network mode,
|
|
315
328
|
e-mail, staging and dashboard are remembered per server.
|
|
316
329
|
|
|
317
330
|
**Using a Traefik you already run.** If 80/443 belong to your own Traefik container, landfall does not install a second one:
|
|
@@ -469,7 +482,7 @@ lf undo -s box -y # revert the last run
|
|
|
469
482
|
|
|
470
483
|
| command | what it does |
|
|
471
484
|
|---|---|
|
|
472
|
-
| `lf traefik setup [--email e] [--dashboard host\|traefik\|off] [--staging] [--image img] [--host-network] [--force]` | Installs or reconfigures landfall's Traefik. `--force` overwrites hand edits. |
|
|
485
|
+
| `lf traefik setup [--email e] [--dashboard host\|traefik\|off] [--staging] [--image img] [--host-network] [--no-http3] [--force]` | Installs or reconfigures landfall's Traefik. `--force` overwrites hand edits. |
|
|
473
486
|
| `lf traefik use [container] [--network n --entrypoint e --resolver r]` | Routes sites through a Traefik you already run. |
|
|
474
487
|
| `lf traefik rm [--certs]` | Removes landfall's Traefik (undoable), or stops using yours after `traefik use`. |
|
|
475
488
|
| `lf traefik status` / `logs [-f]` / `restart` | Inspects or restarts Traefik. `lf traefik` alone means `status`. |
|