@lamalibre/create-lamaste 4.0.0
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/LICENSE.md +118 -0
- package/README.md +114 -0
- package/bin/create-lamaste.js +15 -0
- package/package.json +54 -0
- package/scripts/bundle-vendor.js +110 -0
- package/scripts/lamaste-cert-info +62 -0
- package/scripts/lamaste-certbot +96 -0
- package/scripts/lamaste-priv +693 -0
- package/src/index.js +646 -0
- package/src/lib/accounts.js +86 -0
- package/src/lib/binaries.js +137 -0
- package/src/lib/cert-help-page.js +160 -0
- package/src/lib/env.js +132 -0
- package/src/lib/http-redirect.js +38 -0
- package/src/lib/ownership.js +231 -0
- package/src/lib/relay-services.js +103 -0
- package/src/lib/secrets.js +19 -0
- package/src/lib/service-config.js +311 -0
- package/src/lib/summary.js +131 -0
- package/src/lib/wrappers.js +63 -0
- package/src/tasks/gatekeeper.js +233 -0
- package/src/tasks/harden.js +293 -0
- package/src/tasks/mtls.js +193 -0
- package/src/tasks/nginx.js +265 -0
- package/src/tasks/node.js +110 -0
- package/src/tasks/panel.js +408 -0
- package/src/tasks/redeploy.js +438 -0
- package/vendor/docs/00-introduction/how-it-works.md +447 -0
- package/vendor/docs/00-introduction/quickstart.md +472 -0
- package/vendor/docs/00-introduction/what-is-lamaste.md +112 -0
- package/vendor/docs/01-concepts/authentication.md +464 -0
- package/vendor/docs/01-concepts/authorization.md +242 -0
- package/vendor/docs/01-concepts/certificates.md +452 -0
- package/vendor/docs/01-concepts/dns-and-domains.md +343 -0
- package/vendor/docs/01-concepts/mtls.md +490 -0
- package/vendor/docs/01-concepts/nginx-reverse-proxy.md +540 -0
- package/vendor/docs/01-concepts/security-model.md +600 -0
- package/vendor/docs/01-concepts/tickets.md +414 -0
- package/vendor/docs/01-concepts/tunneling.md +367 -0
- package/vendor/docs/02-guides/agent-setup.md +194 -0
- package/vendor/docs/02-guides/certificate-management.md +341 -0
- package/vendor/docs/02-guides/cloud-provisioning.md +406 -0
- package/vendor/docs/02-guides/desktop-app-setup.md +226 -0
- package/vendor/docs/02-guides/disaster-recovery.md +464 -0
- package/vendor/docs/02-guides/first-tunnel.md +230 -0
- package/vendor/docs/02-guides/installation.md +393 -0
- package/vendor/docs/02-guides/managing-users.md +255 -0
- package/vendor/docs/02-guides/onboarding.md +244 -0
- package/vendor/docs/02-guides/standalone-plugin-with-tickets.md +375 -0
- package/vendor/docs/02-guides/static-sites.md +364 -0
- package/vendor/docs/03-architecture/e2e-three-vm-sequences.md +457 -0
- package/vendor/docs/03-architecture/installer-flow.md +151 -0
- package/vendor/docs/03-architecture/installer.md +445 -0
- package/vendor/docs/03-architecture/management-flow.md +288 -0
- package/vendor/docs/03-architecture/nginx-configuration.md +830 -0
- package/vendor/docs/03-architecture/onboarding-flow.md +164 -0
- package/vendor/docs/03-architecture/overview.md +541 -0
- package/vendor/docs/03-architecture/panel-client.md +416 -0
- package/vendor/docs/03-architecture/panel-server.md +695 -0
- package/vendor/docs/03-architecture/state-management.md +529 -0
- package/vendor/docs/03-architecture/system-overview.md +167 -0
- package/vendor/docs/04-api-reference/certificates.md +1141 -0
- package/vendor/docs/04-api-reference/gatekeeper.md +592 -0
- package/vendor/docs/04-api-reference/onboarding.md +473 -0
- package/vendor/docs/04-api-reference/overview.md +404 -0
- package/vendor/docs/04-api-reference/services.md +267 -0
- package/vendor/docs/04-api-reference/settings.md +343 -0
- package/vendor/docs/04-api-reference/sites.md +716 -0
- package/vendor/docs/04-api-reference/system.md +268 -0
- package/vendor/docs/04-api-reference/tickets.md +618 -0
- package/vendor/docs/04-api-reference/tunnels.md +417 -0
- package/vendor/docs/04-api-reference/users.md +333 -0
- package/vendor/docs/05-operations/backup-and-restore.md +342 -0
- package/vendor/docs/05-operations/monitoring.md +285 -0
- package/vendor/docs/05-operations/uninstalling.md +344 -0
- package/vendor/docs/05-operations/upgrades.md +270 -0
- package/vendor/docs/06-reference/config-files.md +1080 -0
- package/vendor/docs/06-reference/glossary.md +528 -0
- package/vendor/docs/06-reference/installer-flags.md +260 -0
- package/vendor/docs/06-reference/ports-and-services.md +244 -0
- package/vendor/docs/06-reference/troubleshooting.md +665 -0
- package/vendor/docs/_index.json +233 -0
- package/vendor/docs/gatekeeper-design.md +953 -0
- package/vendor/docs/package.json +15 -0
- package/vendor/docs/todo/lib-cli-desktop-refactor.md +641 -0
- package/vendor/gatekeeper/dist/boot.d.ts +1 -0
- package/vendor/gatekeeper/dist/boot.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/boot.js +17 -0
- package/vendor/gatekeeper/dist/boot.js.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/access.d.ts +2 -0
- package/vendor/gatekeeper/dist/cli/commands/access.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/access.js +33 -0
- package/vendor/gatekeeper/dist/cli/commands/access.js.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/grants.d.ts +2 -0
- package/vendor/gatekeeper/dist/cli/commands/grants.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/grants.js +110 -0
- package/vendor/gatekeeper/dist/cli/commands/grants.js.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/groups.d.ts +2 -0
- package/vendor/gatekeeper/dist/cli/commands/groups.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/cli/commands/groups.js +98 -0
- package/vendor/gatekeeper/dist/cli/commands/groups.js.map +1 -0
- package/vendor/gatekeeper/dist/cli/index.d.ts +3 -0
- package/vendor/gatekeeper/dist/cli/index.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/cli/index.js +45 -0
- package/vendor/gatekeeper/dist/cli/index.js.map +1 -0
- package/vendor/gatekeeper/dist/index.d.ts +9 -0
- package/vendor/gatekeeper/dist/index.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/index.js +13 -0
- package/vendor/gatekeeper/dist/index.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/authz.d.ts +16 -0
- package/vendor/gatekeeper/dist/lib/authz.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/authz.js +42 -0
- package/vendor/gatekeeper/dist/lib/authz.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/cache-bust.d.ts +15 -0
- package/vendor/gatekeeper/dist/lib/cache-bust.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/cache-bust.js +19 -0
- package/vendor/gatekeeper/dist/lib/cache-bust.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/constants.d.ts +82 -0
- package/vendor/gatekeeper/dist/lib/constants.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/constants.js +79 -0
- package/vendor/gatekeeper/dist/lib/constants.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/grants.d.ts +32 -0
- package/vendor/gatekeeper/dist/lib/grants.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/grants.js +314 -0
- package/vendor/gatekeeper/dist/lib/grants.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/groups.d.ts +10 -0
- package/vendor/gatekeeper/dist/lib/groups.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/groups.js +247 -0
- package/vendor/gatekeeper/dist/lib/groups.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/migration.d.ts +17 -0
- package/vendor/gatekeeper/dist/lib/migration.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/migration.js +79 -0
- package/vendor/gatekeeper/dist/lib/migration.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/migrations/gatekeeper/0001_groups.sql +7 -0
- package/vendor/gatekeeper/dist/lib/migrations/gatekeeper/0002_access_grants.sql +14 -0
- package/vendor/gatekeeper/dist/lib/migrations/gatekeeper/0003_access_request_log.sql +9 -0
- package/vendor/gatekeeper/dist/lib/migrations/migrations/gatekeeper/0001_groups.sql +7 -0
- package/vendor/gatekeeper/dist/lib/migrations/migrations/gatekeeper/0002_access_grants.sql +14 -0
- package/vendor/gatekeeper/dist/lib/migrations/migrations/gatekeeper/0003_access_request_log.sql +9 -0
- package/vendor/gatekeeper/dist/lib/state-db.d.ts +16 -0
- package/vendor/gatekeeper/dist/lib/state-db.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/state-db.js +154 -0
- package/vendor/gatekeeper/dist/lib/state-db.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/templates.d.ts +21 -0
- package/vendor/gatekeeper/dist/lib/templates.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/templates.js +151 -0
- package/vendor/gatekeeper/dist/lib/templates.js.map +1 -0
- package/vendor/gatekeeper/dist/lib/types.d.ts +178 -0
- package/vendor/gatekeeper/dist/lib/types.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/lib/types.js +2 -0
- package/vendor/gatekeeper/dist/lib/types.js.map +1 -0
- package/vendor/gatekeeper/dist/server/index.d.ts +15 -0
- package/vendor/gatekeeper/dist/server/index.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/index.js +251 -0
- package/vendor/gatekeeper/dist/server/index.js.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/access-request.d.ts +7 -0
- package/vendor/gatekeeper/dist/server/routes/access-request.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/access-request.js +17 -0
- package/vendor/gatekeeper/dist/server/routes/access-request.js.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/authz.d.ts +3 -0
- package/vendor/gatekeeper/dist/server/routes/authz.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/authz.js +279 -0
- package/vendor/gatekeeper/dist/server/routes/authz.js.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/diagnostic.d.ts +13 -0
- package/vendor/gatekeeper/dist/server/routes/diagnostic.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/diagnostic.js +249 -0
- package/vendor/gatekeeper/dist/server/routes/diagnostic.js.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/grants.d.ts +3 -0
- package/vendor/gatekeeper/dist/server/routes/grants.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/grants.js +112 -0
- package/vendor/gatekeeper/dist/server/routes/grants.js.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/groups.d.ts +3 -0
- package/vendor/gatekeeper/dist/server/routes/groups.d.ts.map +1 -0
- package/vendor/gatekeeper/dist/server/routes/groups.js +139 -0
- package/vendor/gatekeeper/dist/server/routes/groups.js.map +1 -0
- package/vendor/gatekeeper/package.json +49 -0
- package/vendor/server/bin/lamaste-server.js +204 -0
- package/vendor/server/package.json +31 -0
- package/vendor/server/src/commands/certs.js +224 -0
- package/vendor/server/src/commands/chisel.js +132 -0
- package/vendor/server/src/commands/logs.js +49 -0
- package/vendor/server/src/commands/plugins.js +321 -0
- package/vendor/server/src/commands/reset-admin.js +478 -0
- package/vendor/server/src/commands/restart.js +94 -0
- package/vendor/server/src/commands/sites.js +257 -0
- package/vendor/server/src/commands/status.js +158 -0
- package/vendor/server/src/commands/tunnels.js +365 -0
- package/vendor/server/src/commands/uninstall.js +326 -0
- package/vendor/server/src/config.js +38 -0
- package/vendor/server/src/exec.js +26 -0
- package/vendor/server/src/logger.js +39 -0
- package/vendor/server/src/ndjson.js +56 -0
- package/vendor/server/src/panel-api.js +85 -0
- package/vendor/server/src/state.js +45 -0
- package/vendor/server-ui/dist/assets/index-B0nWuUyL.js +257 -0
- package/vendor/server-ui/dist/assets/index-BqWWFlTU.css +1 -0
- package/vendor/server-ui/dist/index.html +13 -0
- package/vendor/serverd/package.json +44 -0
- package/vendor/serverd/src/boot.js +13 -0
- package/vendor/serverd/src/index.js +191 -0
- package/vendor/serverd/src/lib/app-error.js +14 -0
- package/vendor/serverd/src/lib/authelia.js +85 -0
- package/vendor/serverd/src/lib/certbot.js +74 -0
- package/vendor/serverd/src/lib/chisel-args.js +6 -0
- package/vendor/serverd/src/lib/chisel-reconcile.js +232 -0
- package/vendor/serverd/src/lib/chisel-runtime.js +46 -0
- package/vendor/serverd/src/lib/chisel-users.js +109 -0
- package/vendor/serverd/src/lib/chisel.js +81 -0
- package/vendor/serverd/src/lib/config.js +190 -0
- package/vendor/serverd/src/lib/constants.js +8 -0
- package/vendor/serverd/src/lib/csr-signing.js +331 -0
- package/vendor/serverd/src/lib/enrollment.js +302 -0
- package/vendor/serverd/src/lib/files.js +19 -0
- package/vendor/serverd/src/lib/gatekeeper-client.js +135 -0
- package/vendor/serverd/src/lib/invite-page.js +281 -0
- package/vendor/serverd/src/lib/ip-utils.js +79 -0
- package/vendor/serverd/src/lib/migrations/state/0001_enrollment_tokens.sql +17 -0
- package/vendor/serverd/src/lib/migrations/state/0002_tickets.sql +70 -0
- package/vendor/serverd/src/lib/migrations/state/0003_plugins.sql +15 -0
- package/vendor/serverd/src/lib/migrations/state/0004_agents.sql +19 -0
- package/vendor/serverd/src/lib/mtls.js +795 -0
- package/vendor/serverd/src/lib/nginx.js +1090 -0
- package/vendor/serverd/src/lib/pki-paths.js +41 -0
- package/vendor/serverd/src/lib/pki-sign.js +103 -0
- package/vendor/serverd/src/lib/plugins.js +538 -0
- package/vendor/serverd/src/lib/push-install.js +390 -0
- package/vendor/serverd/src/lib/revocation.js +112 -0
- package/vendor/serverd/src/lib/services.js +131 -0
- package/vendor/serverd/src/lib/session.js +151 -0
- package/vendor/serverd/src/lib/state-db.js +130 -0
- package/vendor/serverd/src/lib/state.js +140 -0
- package/vendor/serverd/src/lib/storage.js +63 -0
- package/vendor/serverd/src/lib/system-stats.js +58 -0
- package/vendor/serverd/src/lib/tickets.js +1556 -0
- package/vendor/serverd/src/lib/totp.js +76 -0
- package/vendor/serverd/src/lib/tunnel-deps.js +41 -0
- package/vendor/serverd/src/lib/user-access-session.js +142 -0
- package/vendor/serverd/src/lib/user-access.js +52 -0
- package/vendor/serverd/src/middleware/errors.js +63 -0
- package/vendor/serverd/src/middleware/mtls.js +120 -0
- package/vendor/serverd/src/middleware/onboarding-guard.js +30 -0
- package/vendor/serverd/src/middleware/role-guard.js +58 -0
- package/vendor/serverd/src/middleware/twofa-session.js +65 -0
- package/vendor/serverd/src/middleware/user-access-session.js +52 -0
- package/vendor/serverd/src/routes/enrollment.js +120 -0
- package/vendor/serverd/src/routes/health.js +22 -0
- package/vendor/serverd/src/routes/invite.js +163 -0
- package/vendor/serverd/src/routes/management/agents.js +182 -0
- package/vendor/serverd/src/routes/management/certs.js +911 -0
- package/vendor/serverd/src/routes/management/gatekeeper-proxy.js +160 -0
- package/vendor/serverd/src/routes/management/identity.js +107 -0
- package/vendor/serverd/src/routes/management/invitations.js +166 -0
- package/vendor/serverd/src/routes/management/logs.js +218 -0
- package/vendor/serverd/src/routes/management/plugins.js +560 -0
- package/vendor/serverd/src/routes/management/services.js +63 -0
- package/vendor/serverd/src/routes/management/settings.js +325 -0
- package/vendor/serverd/src/routes/management/sites.js +522 -0
- package/vendor/serverd/src/routes/management/storage.js +192 -0
- package/vendor/serverd/src/routes/management/system.js +201 -0
- package/vendor/serverd/src/routes/management/tickets.js +457 -0
- package/vendor/serverd/src/routes/management/tunnels.js +709 -0
- package/vendor/serverd/src/routes/management/users.js +377 -0
- package/vendor/serverd/src/routes/management.js +36 -0
- package/vendor/serverd/src/routes/onboarding/dns.js +101 -0
- package/vendor/serverd/src/routes/onboarding/domain.js +42 -0
- package/vendor/serverd/src/routes/onboarding/index.js +18 -0
- package/vendor/serverd/src/routes/onboarding/provision.js +327 -0
- package/vendor/serverd/src/routes/onboarding/status.js +12 -0
- package/vendor/serverd/src/routes/plugin-router.js +79 -0
- package/vendor/serverd/src/routes/user-access.js +389 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# Upgrades
|
|
2
|
+
|
|
3
|
+
> Keep Lamaste and its dependencies up to date with safe, tested upgrade procedures.
|
|
4
|
+
|
|
5
|
+
## In Plain English
|
|
6
|
+
|
|
7
|
+
Software needs updates — for security patches, bug fixes, and new features. Lamaste is made up of several independent pieces (the panel, the tunnel server, the authentication server, and the operating system), and each one updates differently.
|
|
8
|
+
|
|
9
|
+
The good news: most updates are straightforward. The installer is designed to be re-run safely on an existing installation, and the individual binaries can be replaced without affecting other components.
|
|
10
|
+
|
|
11
|
+
## For Users
|
|
12
|
+
|
|
13
|
+
### Before Any Upgrade
|
|
14
|
+
|
|
15
|
+
Always follow these steps before upgrading any component:
|
|
16
|
+
|
|
17
|
+
1. **Back up your configuration** (see [Backup and Restore](backup-and-restore.md))
|
|
18
|
+
2. **Note what is currently working** — check the dashboard, verify services are active
|
|
19
|
+
3. **Plan for a brief outage** — most upgrades require a service restart (seconds, not minutes)
|
|
20
|
+
|
|
21
|
+
### Upgrade Order: Agents First
|
|
22
|
+
|
|
23
|
+
When a release changes both sides, upgrade every **agent before the server**. Agents from before this version reject the new shape of the relay's Chisel arguments; a current agent works against an older server and keeps its Chisel credential until the server offers rotation.
|
|
24
|
+
|
|
25
|
+
On each agent machine:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g @lamalibre/lamaste-agent@4.0.0
|
|
29
|
+
lamaste-agent update
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`update` applies the panel's configuration, restarts the tunnel client, and installs the sync timer (which applies later tunnel changes within 30 seconds). An agent originally set up with `npx` must be installed globally first — the sync timer runs the installed program. On its first sync after the upgrade an agent from before this version rotates its Chisel credential once, because older versions exposed it in process arguments and 0644 unit files. The Desktop App updates the agents it manages.
|
|
33
|
+
|
|
34
|
+
### Updating Lamaste (Panel Server and Client)
|
|
35
|
+
|
|
36
|
+
The Lamaste installer is idempotent — you can re-run it on an existing installation to update the panel server and client without losing your configuration.
|
|
37
|
+
|
|
38
|
+
**Step 1: SSH into your droplet**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ssh root@203.0.113.42
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Step 2: Re-run the installer**
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx @lamalibre/create-lamaste@latest --yes
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The `@latest` tag ensures you get the newest published version. The `--yes` flag skips the confirmation prompt.
|
|
51
|
+
|
|
52
|
+
**What happens during re-install:**
|
|
53
|
+
|
|
54
|
+
- The installer detects the existing installation
|
|
55
|
+
- It preserves your `/etc/lamalibre/lamaste/panel.json` configuration (domain, email, onboarding status)
|
|
56
|
+
- It preserves your mTLS certificates (the PKI directory is not regenerated if it already exists)
|
|
57
|
+
- It stops the panel and the gatekeeper, and makes `/opt/lamalibre/lamaste/` root-owned: a tree left `lamaste`-owned by an earlier version is moved aside, every component (panel server, `lamaste-server` CLI, UI, docs, gatekeeper, certificate help page) is deployed fresh into a root-owned directory, and the old tree is removed at the end
|
|
58
|
+
- It rewrites `panel.json` (merged, as a fresh file renamed into place — root never writes through a path the `lamaste` user controls)
|
|
59
|
+
- It installs the pinned Chisel and Authelia releases if they are not already installed (a newer Authelia is kept), writes their systemd units, creates the `lamaste-chisel` group and the `lamaste-authelia` account, and sets the ownership described in [Configuration Files](../06-reference/config-files.md#file-permissions-table): `/var/www/lamaste` becomes `lamaste:www-data`, `/etc/authelia` `lamaste:lamaste-authelia`, the Chisel key `lamaste:lamaste-chisel 0640`, and the PKI directory `lamaste`'s. A running Authelia is stopped while its files change hands and started again afterwards
|
|
60
|
+
- It rewrites the panel's systemd unit and the sudoers rules (checked with `visudo -c` before they replace the old file), installs the root-owned programs in `/usr/local/sbin/` (`lamaste-priv`, `lamaste-certbot`, `lamaste-cert-info`) and removes the retired `lamaste-sign-csr` and `lamaste-pki-rename`, and installs the port-80 redirect site
|
|
61
|
+
- It restarts Chisel if its binary or unit changed, starts the gatekeeper if it was running, and restarts `lamalibre-lamaste-serverd`, whose startup reconciliation rewrites Chisel's authfile
|
|
62
|
+
|
|
63
|
+
The panel's **Update** action (`POST /api/system/update`) runs the same redeploy: it asks `sudo lamaste-priv self-update <version>` to start `create-lamaste@<version> --yes` in a transient systemd unit (see [System API](../04-api-reference/system.md)).
|
|
64
|
+
|
|
65
|
+
**Step 3: Verify the update**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
systemctl status lamalibre-lamaste-serverd
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Expected output includes `active (running)`. Then open your browser and check the dashboard.
|
|
72
|
+
|
|
73
|
+
**Step 4: Disconnect SSH**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
exit
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Updating Chisel
|
|
80
|
+
|
|
81
|
+
Chisel is the tunnel server binary at `/usr/local/bin/chisel`. Lamaste pins it: server and agents run Chisel 1.12.0 (`CHISEL_RELEASE` in `@lamalibre/lamaste@4.0.0`), downloaded from the fixed release URL and verified against a pinned SHA-256 before it is unpacked. **Do not replace the binary by hand.** On the server, `create-lamaste` installs it (as root) and replaces a binary that reports any other version; the panel cannot install binaries, and only logs an error at startup when the installed Chisel is not the pinned release (it then restarts Chisel on every authfile change). Each agent's sync replaces its own copy.
|
|
82
|
+
|
|
83
|
+
A new Chisel version therefore arrives with a Lamaste release that changes the pin: re-run the installer, which installs it and restarts Chisel. To check what is running:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
/usr/local/bin/chisel --version
|
|
87
|
+
sudo systemctl status chisel
|
|
88
|
+
sudo journalctl -u lamalibre-lamaste-serverd --since "10 minutes ago" | grep -i chisel
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Tunnel clients reconnect on their own after the brief interruption (they retry at most every 30 seconds).
|
|
92
|
+
|
|
93
|
+
### Updating Authelia
|
|
94
|
+
|
|
95
|
+
Authelia is the authentication server binary at `/usr/local/bin/authelia`. Lamaste pins it too: Authelia 4.39.28 (`AUTHELIA_RELEASE` in `@lamalibre/lamaste@4.0.0`), downloaded by `create-lamaste` from its fixed release URL and verified against a pinned SHA-256 per architecture. A new Authelia version arrives with a Lamaste release that changes the pin — re-run the installer. It stops Authelia while it replaces the binary and starts it again.
|
|
96
|
+
|
|
97
|
+
An installed Authelia **newer** than the pin is kept, never downgraded: its database may already use a schema the pinned release cannot read, and Authelia refuses to start on a database newer than itself. If you install a newer release by hand, stop the service, replace the binary as root with a `root:root 0755` file, and start it again; check the [Authelia changelog](https://github.com/authelia/authelia/blob/master/CHANGELOG.md) first, since the configuration format may change between versions.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
/usr/local/bin/authelia --version
|
|
101
|
+
sudo systemctl status authelia
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### System Package Updates (apt)
|
|
105
|
+
|
|
106
|
+
The underlying Ubuntu system should be kept up to date for security patches.
|
|
107
|
+
|
|
108
|
+
**Step 1: Update package lists**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
sudo apt-get update
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Step 2: Review available upgrades**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
sudo apt-get --simulate upgrade
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This shows what would be upgraded without actually doing it. Review the list for any unexpected changes.
|
|
121
|
+
|
|
122
|
+
**Step 3: Apply upgrades**
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
sudo apt-get upgrade -y
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Step 4: Handle packages that require restart**
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Check if any services need restarting
|
|
132
|
+
sudo needrestart -r l
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
If nginx or other Lamaste-related packages were updated, restart them:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
sudo systemctl restart nginx
|
|
139
|
+
sudo systemctl restart lamalibre-lamaste-serverd
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Step 5: Kernel updates**
|
|
143
|
+
|
|
144
|
+
If a new kernel was installed, you will need to reboot:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
sudo reboot
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
After reboot, all Lamaste services start automatically (they are enabled via systemd). Verify via the dashboard or:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
sudo systemctl status nginx chisel authelia lamalibre-lamaste-serverd
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Updating nginx
|
|
157
|
+
|
|
158
|
+
nginx is installed via apt, so it is updated as part of system package updates. However, after an nginx update:
|
|
159
|
+
|
|
160
|
+
1. Test the configuration:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
sudo nginx -t
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
2. If the test passes, reload:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
sudo systemctl reload nginx
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
3. Verify all sites are accessible.
|
|
173
|
+
|
|
174
|
+
### Updating certbot
|
|
175
|
+
|
|
176
|
+
certbot is also installed via apt. After updating:
|
|
177
|
+
|
|
178
|
+
1. Verify the timer is still active:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
sudo systemctl status certbot.timer
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
2. Test a dry-run renewal:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
sudo certbot renew --dry-run
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### What to Check After Any Upgrade
|
|
191
|
+
|
|
192
|
+
After upgrading any component, verify these items:
|
|
193
|
+
|
|
194
|
+
1. **Dashboard loads** — open `https://<ip>:9292` in your browser
|
|
195
|
+
2. **All services active** — check the Services page or run:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
sudo systemctl status nginx chisel authelia lamalibre-lamaste-serverd
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
3. **Tunnels connected** — if you have active tunnel clients, check the Chisel logs:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
journalctl -u chisel --since "5 minutes ago"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
4. **Authentication works** — visit a tunneled app and verify TOTP login
|
|
208
|
+
|
|
209
|
+
5. **Certificates valid** — check the Certificates page for any expiring certs
|
|
210
|
+
|
|
211
|
+
6. **nginx config valid** — always run after any upgrade:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
sudo nginx -t
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## For Developers
|
|
218
|
+
|
|
219
|
+
### Installer Idempotency
|
|
220
|
+
|
|
221
|
+
The installer achieves safe re-runs through skip guards:
|
|
222
|
+
|
|
223
|
+
- **mTLS certificates**: skipped if `ca.key` and `client.p12` already exist
|
|
224
|
+
- **Swap file**: skipped if swap is already active
|
|
225
|
+
- **UFW firewall**: skipped if already active with the required ports
|
|
226
|
+
- **fail2ban**: skipped if the config file exists and the service is running
|
|
227
|
+
- **SSH hardening**: skipped if settings are already correct
|
|
228
|
+
- **Panel config**: existing `panel.json` is merged (preserves `domain`, `email`, `onboarding.status`)
|
|
229
|
+
|
|
230
|
+
The panel server, CLI, client, docs and gatekeeper are always redeployed (files overwritten), and the systemd service is restarted. The pinned binaries, their units, the service accounts and the directory ownership are re-checked on every run and only changed when they differ.
|
|
231
|
+
|
|
232
|
+
### Version Pinning
|
|
233
|
+
|
|
234
|
+
Chisel and Authelia are pinned by version and SHA-256 in `packages/core/lib/src/constants.ts` (`CHISEL_RELEASE`, `AUTHELIA_RELEASE`); changing a pin means updating the version and every digest there. The downloads are verified by `downloadVerifiedChisel` / `downloadVerifiedAuthelia` (exported from `@lamalibre/lamaste@4.0.0`) before anything is unpacked; the server installer uses them in `packages/provisioners/server/src/lib/binaries.js`. The configuration the panel writes needs Authelia 4.38 or later.
|
|
235
|
+
|
|
236
|
+
### Automated Updates
|
|
237
|
+
|
|
238
|
+
Currently, Lamaste does not include automated update mechanisms. For production deployments, consider:
|
|
239
|
+
|
|
240
|
+
- **Unattended upgrades** for Ubuntu security patches:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
sudo apt-get install unattended-upgrades
|
|
244
|
+
sudo dpkg-reconfigure -plow unattended-upgrades
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- **Certbot auto-renewal** is already configured via `certbot.timer` during onboarding provisioning
|
|
248
|
+
|
|
249
|
+
## Quick Reference
|
|
250
|
+
|
|
251
|
+
| Component | Location | Update Method |
|
|
252
|
+
| ------------ | ------------------------------------------- | ------------------------------------------------------ |
|
|
253
|
+
| Panel server | `/opt/lamalibre/lamaste/lamaste-serverd/` | Re-run `npx @lamalibre/create-lamaste@latest` |
|
|
254
|
+
| Panel client | `/opt/lamalibre/lamaste/lamaste-server-ui/` | Re-run `npx @lamalibre/create-lamaste@latest` |
|
|
255
|
+
| Chisel | `/usr/local/bin/chisel` | Pinned; installed by `create-lamaste` |
|
|
256
|
+
| Agents | `npm install -g @lamalibre/lamaste-agent@4.0.0` | Upgrade before the server, then `lamaste-agent update` |
|
|
257
|
+
| Authelia | `/usr/local/bin/authelia` | Pinned; installed by `create-lamaste` (newer is kept) |
|
|
258
|
+
| nginx | System package | `sudo apt-get update && sudo apt-get upgrade` |
|
|
259
|
+
| certbot | System package | `sudo apt-get update && sudo apt-get upgrade` |
|
|
260
|
+
| Node.js | System package | Managed by installer (NodeSource repo) |
|
|
261
|
+
| Ubuntu | System packages | `sudo apt-get update && sudo apt-get upgrade` |
|
|
262
|
+
|
|
263
|
+
| Post-Upgrade Check | Command |
|
|
264
|
+
| -------------------- | ----------------------------------------------------------------------- |
|
|
265
|
+
| All services running | `sudo systemctl status nginx chisel authelia lamalibre-lamaste-serverd` |
|
|
266
|
+
| nginx config valid | `sudo nginx -t` |
|
|
267
|
+
| Panel health | `curl -s http://127.0.0.1:3100/api/health` |
|
|
268
|
+
| Certificate renewal | `sudo certbot renew --dry-run` |
|
|
269
|
+
| Chisel version | `/usr/local/bin/chisel --version` |
|
|
270
|
+
| Authelia version | `/usr/local/bin/authelia --version` |
|