@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,285 @@
|
|
|
1
|
+
# Monitoring
|
|
2
|
+
|
|
3
|
+
> Monitor your Lamaste server's health through the dashboard, service indicators, and live log streaming.
|
|
4
|
+
|
|
5
|
+
## In Plain English
|
|
6
|
+
|
|
7
|
+
Your Lamaste server is a small machine doing several jobs at once: routing web traffic, checking passwords, managing encrypted tunnels, and running the admin panel. Monitoring means keeping an eye on how hard the machine is working and whether all those jobs are running smoothly.
|
|
8
|
+
|
|
9
|
+
Think of it like the dashboard in a car. You do not need to understand how the engine works to notice when a warning light comes on or the temperature gauge spikes. Lamaste gives you the same kind of dashboard for your server.
|
|
10
|
+
|
|
11
|
+
## For Users
|
|
12
|
+
|
|
13
|
+
### Dashboard Overview
|
|
14
|
+
|
|
15
|
+
The **Dashboard** page is the first thing you see after logging into the management panel. It provides a real-time snapshot of your server's health across four key metrics.
|
|
16
|
+
|
|
17
|
+
#### CPU Usage
|
|
18
|
+
|
|
19
|
+
The CPU percentage tells you how much processing power is being used at this moment.
|
|
20
|
+
|
|
21
|
+
| Range | Meaning | Action |
|
|
22
|
+
| ------- | ------------- | --------------------------- |
|
|
23
|
+
| 0-30% | Normal idle | None needed |
|
|
24
|
+
| 30-60% | Moderate load | Normal under traffic |
|
|
25
|
+
| 60-85% | High load | Investigate if sustained |
|
|
26
|
+
| 85-100% | Critical | Check for runaway processes |
|
|
27
|
+
|
|
28
|
+
On a single-vCPU $4 droplet, expect idle CPU around 2-5%. Brief spikes to 50-60% during certificate issuance or package updates are normal.
|
|
29
|
+
|
|
30
|
+
#### Memory (RAM)
|
|
31
|
+
|
|
32
|
+
Memory usage shows how much of the 512MB (or your droplet's total) is in use.
|
|
33
|
+
|
|
34
|
+
**Expected baseline usage:**
|
|
35
|
+
|
|
36
|
+
| Component | Typical RAM |
|
|
37
|
+
| -------------------- | ----------- |
|
|
38
|
+
| OS (kernel, systemd) | ~120 MB |
|
|
39
|
+
| nginx | ~15 MB |
|
|
40
|
+
| Authelia | ~25 MB |
|
|
41
|
+
| Chisel | ~20 MB |
|
|
42
|
+
| Panel (Node.js) | ~30 MB |
|
|
43
|
+
| Fail2ban | ~35 MB |
|
|
44
|
+
| **Total baseline** | **~245 MB** |
|
|
45
|
+
|
|
46
|
+
This leaves roughly 265 MB of headroom on a 512 MB droplet, plus a 1 GB swap file as a safety net.
|
|
47
|
+
|
|
48
|
+
**Warning thresholds:**
|
|
49
|
+
|
|
50
|
+
| Used % | Status | Notes |
|
|
51
|
+
| ------ | -------- | ----------------------------------- |
|
|
52
|
+
| < 70% | Normal | Healthy headroom |
|
|
53
|
+
| 70-85% | Elevated | Monitor trend |
|
|
54
|
+
| 85-95% | Warning | Check for memory leaks |
|
|
55
|
+
| > 95% | Critical | Risk of OOM kills, check swap usage |
|
|
56
|
+
|
|
57
|
+
If you see memory climbing steadily over days without returning to baseline, one of the services may have a memory leak. Restart the suspect service from the Services page and watch whether usage stabilizes.
|
|
58
|
+
|
|
59
|
+
#### Disk Usage
|
|
60
|
+
|
|
61
|
+
Disk usage reflects the root filesystem. On a fresh 25 GB droplet, Lamaste and its dependencies occupy roughly 2-3 GB.
|
|
62
|
+
|
|
63
|
+
**Things that consume disk over time:**
|
|
64
|
+
|
|
65
|
+
- Log files (journald, nginx access/error logs, Authelia logs)
|
|
66
|
+
- Let's Encrypt certificate archives (small, but accumulate per domain)
|
|
67
|
+
- Static site uploads under `/var/www/lamaste/`
|
|
68
|
+
- Swap file (1 GB, fixed)
|
|
69
|
+
|
|
70
|
+
**Warning thresholds:**
|
|
71
|
+
|
|
72
|
+
| Used % | Status | Action |
|
|
73
|
+
| ------ | -------- | ------------------------------------------------ |
|
|
74
|
+
| < 70% | Normal | None |
|
|
75
|
+
| 70-85% | Watch | Review log rotation |
|
|
76
|
+
| 85-95% | Warning | Clean old logs, remove unused sites |
|
|
77
|
+
| > 95% | Critical | Free space immediately to avoid service failures |
|
|
78
|
+
|
|
79
|
+
To check what is using disk space, SSH in and run:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
sudo du -sh /var/log/* | sort -rh | head -10
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Uptime
|
|
86
|
+
|
|
87
|
+
System uptime shows how long the server has been running since its last reboot. Long uptimes (weeks or months) are normal and expected. The only reasons to reboot are kernel updates or hardware-level issues with the hosting provider.
|
|
88
|
+
|
|
89
|
+
### Service Health Indicators
|
|
90
|
+
|
|
91
|
+
The dashboard shows the status of each managed service:
|
|
92
|
+
|
|
93
|
+
| Service | Systemd Unit | Role |
|
|
94
|
+
| -------- | --------------------------- | ------------------------------------------------ |
|
|
95
|
+
| nginx | `nginx` | Reverse proxy, TLS termination, mTLS enforcement |
|
|
96
|
+
| Chisel | `chisel` | WebSocket tunnel server |
|
|
97
|
+
| Authelia | `authelia` | TOTP two-factor authentication |
|
|
98
|
+
| Panel | `lamalibre-lamaste-serverd` | Management API and UI |
|
|
99
|
+
|
|
100
|
+
Each service displays one of these statuses:
|
|
101
|
+
|
|
102
|
+
| Status | Indicator | Meaning |
|
|
103
|
+
| ---------- | --------- | ------------------------------------------------------- |
|
|
104
|
+
| `active` | Green | Running normally |
|
|
105
|
+
| `inactive` | Gray | Stopped (not started or manually stopped) |
|
|
106
|
+
| `failed` | Red | Crashed or failed to start |
|
|
107
|
+
| `unknown` | Gray | Service not installed or systemd cannot determine state |
|
|
108
|
+
|
|
109
|
+
Along with the status, each active service shows its **uptime** — how long it has been running since it was last started or restarted. If you see a service that recently restarted on its own (uptime much shorter than system uptime), check its logs for crash details.
|
|
110
|
+
|
|
111
|
+
### Live Log Streaming
|
|
112
|
+
|
|
113
|
+
The **Services** page lets you view live logs for any managed service. This uses a WebSocket connection to stream `journalctl` output directly to your browser.
|
|
114
|
+
|
|
115
|
+
**How to use live logs:**
|
|
116
|
+
|
|
117
|
+
1. Navigate to the **Services** page
|
|
118
|
+
2. Click on a service name to expand it
|
|
119
|
+
3. The log viewer opens and begins streaming the last 100 lines
|
|
120
|
+
4. New log entries appear at the bottom in real time
|
|
121
|
+
5. Close the viewer or navigate away to stop the stream
|
|
122
|
+
|
|
123
|
+
**What the log entries look like:**
|
|
124
|
+
|
|
125
|
+
Each log line contains an ISO timestamp and the log message:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
2026-03-13T10:30:45+0000 droplet lamalibre-lamaste-serverd[1234]: Server listening on 127.0.0.1:3100
|
|
129
|
+
2026-03-13T10:30:45+0000 droplet nginx[5678]: 203.0.113.42 - - [13/Mar/2026:10:30:45 +0000] "GET /api/health" 200
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Tips for reading logs:**
|
|
133
|
+
|
|
134
|
+
- **nginx** logs show every HTTP request — useful for seeing who is connecting and what they are requesting
|
|
135
|
+
- **chisel** logs show tunnel client connections and disconnections
|
|
136
|
+
- **authelia** logs show authentication attempts, including failed TOTP entries
|
|
137
|
+
- **lamalibre-lamaste-serverd** logs show API requests and any server-side errors
|
|
138
|
+
|
|
139
|
+
### What Metrics to Watch
|
|
140
|
+
|
|
141
|
+
For day-to-day monitoring, these are the most important signals:
|
|
142
|
+
|
|
143
|
+
**Check daily (or set up external monitoring):**
|
|
144
|
+
|
|
145
|
+
1. **All four services are active** — if any service is `failed`, investigate immediately
|
|
146
|
+
2. **Memory usage is below 85%** — sustained high memory indicates a problem
|
|
147
|
+
3. **Disk usage is below 85%** — running out of disk causes cascading failures
|
|
148
|
+
|
|
149
|
+
**Check weekly:**
|
|
150
|
+
|
|
151
|
+
1. **Certificate expiry dates** — the Certificates page shows days remaining. Let's Encrypt auto-renews at 30 days, but verify renewal is working
|
|
152
|
+
2. **Disk growth trend** — if disk usage climbs steadily, investigate what is growing
|
|
153
|
+
|
|
154
|
+
**Check after changes:**
|
|
155
|
+
|
|
156
|
+
1. After adding a tunnel: verify the tunnel client connects (check Chisel logs)
|
|
157
|
+
2. After adding a user: verify they can authenticate (check Authelia logs)
|
|
158
|
+
3. After domain/DNS changes: verify certificates issued successfully (check Certificates page)
|
|
159
|
+
|
|
160
|
+
## For Developers
|
|
161
|
+
|
|
162
|
+
### System Stats API
|
|
163
|
+
|
|
164
|
+
The dashboard fetches metrics from a single endpoint:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
GET /api/system/stats
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Response structure:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"cpu": {
|
|
175
|
+
"usage": 3.2,
|
|
176
|
+
"cores": 1
|
|
177
|
+
},
|
|
178
|
+
"memory": {
|
|
179
|
+
"total": 536870912,
|
|
180
|
+
"used": 262144000,
|
|
181
|
+
"free": 274726912
|
|
182
|
+
},
|
|
183
|
+
"disk": {
|
|
184
|
+
"total": 26843545600,
|
|
185
|
+
"used": 3221225472,
|
|
186
|
+
"free": 23622320128
|
|
187
|
+
},
|
|
188
|
+
"uptime": 1234567
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Memory and disk values are in bytes. Uptime is in seconds. CPU usage is a percentage (0-100).
|
|
193
|
+
|
|
194
|
+
The backend uses the `systeminformation` library with a 2-second cache to avoid excessive system calls when multiple clients poll simultaneously. The panel client polls this endpoint every 5 seconds via `react-query` (`refetchInterval: 5000`).
|
|
195
|
+
|
|
196
|
+
### Service Status API
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
GET /api/services
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Returns an array of service objects:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"services": [
|
|
207
|
+
{ "name": "nginx", "status": "active", "uptime": "5d 12h 30m" },
|
|
208
|
+
{ "name": "chisel", "status": "active", "uptime": "5d 12h 28m" },
|
|
209
|
+
{ "name": "authelia", "status": "active", "uptime": "5d 12h 28m" },
|
|
210
|
+
{ "name": "lamalibre-lamaste-serverd", "status": "active", "uptime": "5d 12h 30m" }
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The allowed service list is defined in `packages/lamaste-serverd/src/lib/services.js`:
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
nginx, chisel, authelia, lamalibre-lamaste-serverd
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Service actions are available via:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
POST /api/services/:name/:action
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Where `action` is one of: `start`, `stop`, `restart`, `reload`.
|
|
228
|
+
|
|
229
|
+
The panel prevents stopping `lamalibre-lamaste-serverd` from the UI, because that would terminate the session serving the request.
|
|
230
|
+
|
|
231
|
+
### Live Log WebSocket
|
|
232
|
+
|
|
233
|
+
The live log stream is available at:
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
WS /api/services/:name/logs
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
The server spawns `journalctl -u <service> -f -n 100 --output=short-iso` as a child process and pipes parsed lines to the WebSocket as JSON:
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"timestamp": "2026-03-13T10:30:45+0000",
|
|
244
|
+
"message": "droplet lamalibre-lamaste-serverd[1234]: Server listening on 127.0.0.1:3100"
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
The server tracks all active `journalctl` processes and terminates them on WebSocket close, WebSocket error, or server shutdown to prevent orphaned processes.
|
|
249
|
+
|
|
250
|
+
### External Monitoring
|
|
251
|
+
|
|
252
|
+
For production use, consider setting up an external uptime monitor that hits your panel's health endpoint:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
GET /api/health
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
This endpoint returns `200 OK` when the panel server is running. Since it is behind mTLS, your monitoring tool needs the client certificate, or you can monitor the IP:9292 HTTPS port for a valid TLS handshake.
|
|
259
|
+
|
|
260
|
+
Alternatively, monitor the public-facing tunneled apps directly — if users can reach `https://myapp.example.com`, the full stack (nginx, Chisel, Authelia) is working.
|
|
261
|
+
|
|
262
|
+
## Quick Reference
|
|
263
|
+
|
|
264
|
+
| Metric | Normal Range | Warning | Critical |
|
|
265
|
+
| -------------- | ------------- | ---------------- | -------------- |
|
|
266
|
+
| CPU | 0-30% | 60-85% sustained | >85% sustained |
|
|
267
|
+
| Memory | <70% of total | 85-95% | >95% |
|
|
268
|
+
| Disk | <70% of total | 85-95% | >95% |
|
|
269
|
+
| Service status | `active` | `inactive` | `failed` |
|
|
270
|
+
|
|
271
|
+
| API Endpoint | Method | Purpose |
|
|
272
|
+
| ----------------------------- | ------ | ------------------------- |
|
|
273
|
+
| `/api/system/stats` | GET | CPU, RAM, disk, uptime |
|
|
274
|
+
| `/api/services` | GET | All service statuses |
|
|
275
|
+
| `/api/services/:name/:action` | POST | Start/stop/restart/reload |
|
|
276
|
+
| `/api/services/:name/logs` | WS | Live log stream |
|
|
277
|
+
| `/api/health` | GET | Health check |
|
|
278
|
+
|
|
279
|
+
| Log Command (SSH) | Purpose |
|
|
280
|
+
| -------------------------------------------- | ----------------------- |
|
|
281
|
+
| `journalctl -u nginx -f` | Follow nginx logs |
|
|
282
|
+
| `journalctl -u chisel -f` | Follow Chisel logs |
|
|
283
|
+
| `journalctl -u authelia -f` | Follow Authelia logs |
|
|
284
|
+
| `journalctl -u lamalibre-lamaste-serverd -f` | Follow panel logs |
|
|
285
|
+
| `journalctl -u nginx --since "1 hour ago"` | Last hour of nginx logs |
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
# Uninstalling
|
|
2
|
+
|
|
3
|
+
> Completely remove Lamaste from your server, step by step.
|
|
4
|
+
|
|
5
|
+
## In Plain English
|
|
6
|
+
|
|
7
|
+
Uninstalling Lamaste means undoing everything the installer did: stopping the services, removing the files, deleting the user account, and optionally reverting the security hardening. After following this guide, your server will be as if Lamaste was never installed (except for system packages like nginx and Node.js, which you may want to keep).
|
|
8
|
+
|
|
9
|
+
## For Users
|
|
10
|
+
|
|
11
|
+
### Before You Begin
|
|
12
|
+
|
|
13
|
+
1. **Download your backup** — if you might want to reinstall later, back up first (see [Backup and Restore](backup-and-restore.md))
|
|
14
|
+
2. **Notify your users** — tunneled apps will become unreachable immediately after removal
|
|
15
|
+
3. **SSH access** — you will need root SSH access to the server
|
|
16
|
+
|
|
17
|
+
### Automated Removal
|
|
18
|
+
|
|
19
|
+
`lamaste-server uninstall` performs the required steps below in one go (it asks for confirmation unless `--force` is passed):
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sudo lamaste-server uninstall
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
It stops and disables the panel, gatekeeper, Chisel and Authelia; removes their systemd units, the sudoers file and the root-owned programs (`lamaste-priv`, `lamaste-certbot`, `lamaste-cert-info`, and the retired `lamaste-sign-csr` / `lamaste-pki-rename` if an older version left them); removes the Lamaste nginx vhosts and snippets, the Let's Encrypt certificates, `/etc/authelia`, `/var/log/authelia`, `/usr/local/bin/authelia`, `/usr/local/bin/chisel`, `/etc/lamalibre/lamaste`, `/var/www/lamaste`, `/opt/lamalibre/lamaste` and the global `@lamalibre/*` npm packages; and deletes the `lamaste` user, the `lamaste-chisel` group and the `lamaste-authelia` account. The optional steps (fail2ban, SSH, firewall, swap) are left to you.
|
|
26
|
+
|
|
27
|
+
### Manual Removal
|
|
28
|
+
|
|
29
|
+
The manual guide is also available from the CLI:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx @lamalibre/create-lamaste@4.0.0 --uninstall
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This prints the same steps listed below.
|
|
36
|
+
|
|
37
|
+
### Step 1: Stop and Disable Services
|
|
38
|
+
|
|
39
|
+
Stop all Lamaste-managed services so they do not restart on reboot:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sudo systemctl disable --now lamalibre-lamaste-serverd lamalibre-lamaste-gatekeeper chisel authelia
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Remove the systemd unit files:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
sudo rm -f /etc/systemd/system/{lamalibre-lamaste-serverd,lamalibre-lamaste-gatekeeper,chisel,authelia}.service
|
|
49
|
+
sudo systemctl daemon-reload
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Verify:** No Lamaste services should appear as active:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
systemctl list-units --type=service | grep -E 'lamaste|chisel|authelia'
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Expected output: empty (no matching lines).
|
|
59
|
+
|
|
60
|
+
### Step 2: Remove nginx Configuration
|
|
61
|
+
|
|
62
|
+
Remove all Lamaste-related nginx vhosts and the mTLS snippet:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
sudo rm -f /etc/nginx/sites-enabled/lamalibre-lamaste-*
|
|
66
|
+
sudo rm -f /etc/nginx/sites-available/lamalibre-lamaste-*
|
|
67
|
+
sudo rm -f /etc/nginx/snippets/lamalibre-lamaste-*
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Test the remaining nginx configuration and reload:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
sudo nginx -t && sudo systemctl reload nginx
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
If `nginx -t` fails, it means there are no remaining valid sites. You can either add back the default site or stop nginx entirely:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Option A: Restore default site
|
|
80
|
+
sudo ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
|
81
|
+
sudo nginx -t && sudo systemctl reload nginx
|
|
82
|
+
|
|
83
|
+
# Option B: Stop nginx
|
|
84
|
+
sudo systemctl stop nginx
|
|
85
|
+
sudo systemctl disable nginx
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Step 3: Remove Lamaste Directories
|
|
89
|
+
|
|
90
|
+
These directories contain all Lamaste configuration, state, and deployed files:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
sudo rm -rf /etc/lamalibre/lamaste/ # Configuration, PKI certificates, state
|
|
94
|
+
sudo rm -rf /opt/lamalibre/lamaste/ # Panel server and client files
|
|
95
|
+
sudo rm -rf /var/www/lamaste/ # Static site files
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Warning:** This permanently deletes your PKI certificates. If you have not backed up `/etc/lamalibre/lamaste/pki/`, you will not be able to recover the client certificate or CA key.
|
|
99
|
+
|
|
100
|
+
### Step 4: Remove Authelia Files
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
sudo rm -rf /etc/authelia/ # Authelia configuration, user database, SQLite database
|
|
104
|
+
sudo rm -rf /var/log/authelia/ # Authelia log files
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 5: Remove Binaries
|
|
108
|
+
|
|
109
|
+
Remove the Chisel and Authelia binaries and the root-owned programs the sudoers rules name:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
sudo rm -f /usr/local/bin/chisel /usr/local/bin/authelia
|
|
113
|
+
sudo rm -f /usr/local/sbin/lamaste-priv /usr/local/sbin/lamaste-certbot /usr/local/sbin/lamaste-cert-info
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Step 6: Remove the Service Accounts
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
sudo userdel -r lamaste
|
|
120
|
+
sudo userdel lamaste-authelia
|
|
121
|
+
sudo groupdel lamaste-chisel
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The `-r` flag removes the home directory (if one exists). `lamaste` and `lamaste-authelia` are system users with no login shell, so there is nothing sensitive in their home directories.
|
|
125
|
+
|
|
126
|
+
### Step 7: Remove Sudoers Rules
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
sudo rm -f /etc/sudoers.d/lamaste
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Verify:** Confirm the file is gone:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
ls -la /etc/sudoers.d/lamaste
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Expected: `No such file or directory`.
|
|
139
|
+
|
|
140
|
+
### Step 8: Remove fail2ban Configuration (Optional)
|
|
141
|
+
|
|
142
|
+
If you want to keep fail2ban running (recommended for security), skip this step. Only the Lamaste-specific jail configuration is removed:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
sudo rm -f /etc/fail2ban/jail.d/lamaste.conf
|
|
146
|
+
sudo systemctl restart fail2ban
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Step 9: Revert SSH Hardening (Optional)
|
|
150
|
+
|
|
151
|
+
During installation, Lamaste hardens SSH by disabling password authentication. If a backup of the original configuration was created, you can restore it:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Check if the backup exists
|
|
155
|
+
ls -la /etc/ssh/sshd_config.pre-lamaste
|
|
156
|
+
|
|
157
|
+
# Restore if it exists
|
|
158
|
+
sudo cp /etc/ssh/sshd_config.pre-lamaste /etc/ssh/sshd_config
|
|
159
|
+
sudo sshd -t && sudo systemctl restart ssh
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Warning:** Only revert SSH hardening if you understand the security implications. Disabling password authentication is a security best practice regardless of Lamaste.
|
|
163
|
+
|
|
164
|
+
### Step 10: Revert Firewall Changes (Optional)
|
|
165
|
+
|
|
166
|
+
Remove the Lamaste-specific UFW rule for port 9292:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
sudo ufw delete allow 9292/tcp
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Ports 22 (SSH) and 443 (HTTPS) were also opened during installation. You may want to keep these:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Only remove if you no longer need HTTPS on this server
|
|
176
|
+
sudo ufw delete allow 443/tcp
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Verify:**
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
sudo ufw status
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Step 11: Remove Swap File (Optional)
|
|
186
|
+
|
|
187
|
+
If Lamaste created the swap file (common on 512 MB droplets):
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
sudo swapoff /swapfile
|
|
191
|
+
sudo rm -f /swapfile
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Remove the swap entry from `/etc/fstab`:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
sudo sed -i '/\/swapfile/d' /etc/fstab
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Remove the swappiness setting:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
sudo rm -f /etc/sysctl.d/99-lamaste.conf
|
|
204
|
+
sudo sysctl vm.swappiness=60 # Restore Ubuntu default
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Step 12: Remove Let's Encrypt Certificates (Optional)
|
|
208
|
+
|
|
209
|
+
List all certificates managed by certbot:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
sudo certbot certificates
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Delete certificates for Lamaste domains:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# Replace with your actual domain
|
|
219
|
+
sudo certbot delete --cert-name panel.example.com
|
|
220
|
+
sudo certbot delete --cert-name auth.example.com
|
|
221
|
+
sudo certbot delete --cert-name tunnel.example.com
|
|
222
|
+
# Delete any app-specific certificates
|
|
223
|
+
sudo certbot delete --cert-name myapp.example.com
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Step 13: Remove System Packages (Optional)
|
|
227
|
+
|
|
228
|
+
If you installed this server solely for Lamaste and want to remove the system packages:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
sudo apt-get remove --purge -y nginx certbot python3-certbot-nginx fail2ban
|
|
232
|
+
sudo apt-get autoremove -y
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Warning:** Only do this if no other applications on this server depend on these packages.
|
|
236
|
+
|
|
237
|
+
### Summary Checklist
|
|
238
|
+
|
|
239
|
+
| Step | Command | Required? |
|
|
240
|
+
| ------------------------- | --------------------------------------------------------------------------- | --------- |
|
|
241
|
+
| 1. Stop services | `systemctl disable --now` + remove unit files | Yes |
|
|
242
|
+
| 2. Remove nginx config | `rm lamalibre-lamaste-*` vhosts and snippets | Yes |
|
|
243
|
+
| 3. Remove Lamaste dirs | `rm -rf /etc/lamalibre/lamaste/ /opt/lamalibre/lamaste/ /var/www/lamaste/` | Yes |
|
|
244
|
+
| 4. Remove Authelia files | `rm -rf /etc/authelia/ /var/log/authelia/` | Yes |
|
|
245
|
+
| 5. Remove binaries | `rm /usr/local/bin/{chisel,authelia}`, `/usr/local/sbin/lamaste-*` | Yes |
|
|
246
|
+
| 6. Remove accounts | `userdel -r lamaste`, `userdel lamaste-authelia`, `groupdel lamaste-chisel` | Yes |
|
|
247
|
+
| 7. Remove sudoers | `rm /etc/sudoers.d/lamaste` | Yes |
|
|
248
|
+
| 8. Remove fail2ban config | `rm /etc/fail2ban/jail.d/lamaste.conf` | Optional |
|
|
249
|
+
| 9. Revert SSH hardening | Restore `sshd_config.pre-lamaste` | Optional |
|
|
250
|
+
| 10. Revert firewall | `ufw delete allow 9292/tcp` | Optional |
|
|
251
|
+
| 11. Remove swap | `swapoff /swapfile && rm /swapfile` | Optional |
|
|
252
|
+
| 12. Remove LE certs | `certbot delete --cert-name <domain>` | Optional |
|
|
253
|
+
| 13. Remove packages | `apt-get remove nginx certbot fail2ban` | Optional |
|
|
254
|
+
|
|
255
|
+
## For Developers
|
|
256
|
+
|
|
257
|
+
### What the Installer Creates
|
|
258
|
+
|
|
259
|
+
For reference, here is a complete list of everything the installer and onboarding provisioning create on the system:
|
|
260
|
+
|
|
261
|
+
**Systemd services** (all written by the installer):
|
|
262
|
+
|
|
263
|
+
- `/etc/systemd/system/lamalibre-lamaste-serverd.service`
|
|
264
|
+
- `/etc/systemd/system/lamalibre-lamaste-gatekeeper.service`
|
|
265
|
+
- `/etc/systemd/system/chisel.service`
|
|
266
|
+
- `/etc/systemd/system/authelia.service`
|
|
267
|
+
|
|
268
|
+
**Directories:**
|
|
269
|
+
|
|
270
|
+
- `/etc/lamalibre/lamaste/` (config, state)
|
|
271
|
+
- `/etc/lamalibre/lamaste/pki/` (certificates)
|
|
272
|
+
- `/opt/lamalibre/lamaste/` (panel server, CLI, client, docs, gatekeeper — root-owned)
|
|
273
|
+
- `/opt/lamalibre/lamaste/lamaste-serverd/` (Fastify backend)
|
|
274
|
+
- `/opt/lamalibre/lamaste/lamaste-server-ui/` (React frontend build)
|
|
275
|
+
- `/var/www/lamaste/` (static site uploads)
|
|
276
|
+
- `/etc/authelia/` (auth config and user database)
|
|
277
|
+
- `/var/log/authelia/` (auth logs)
|
|
278
|
+
|
|
279
|
+
**Binaries** (installed by the installer):
|
|
280
|
+
|
|
281
|
+
- `/usr/local/bin/chisel` (pinned release)
|
|
282
|
+
- `/usr/local/bin/authelia` (pinned release)
|
|
283
|
+
- `/usr/local/bin/lamaste-server` (symlink to the CLI)
|
|
284
|
+
- `/usr/local/sbin/lamaste-priv`, `/usr/local/sbin/lamaste-certbot`, `/usr/local/sbin/lamaste-cert-info`
|
|
285
|
+
|
|
286
|
+
**nginx files:**
|
|
287
|
+
|
|
288
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-panel-ip`
|
|
289
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-http-redirect`
|
|
290
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-panel-domain`
|
|
291
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-auth`
|
|
292
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-tunnel`
|
|
293
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-app-*`
|
|
294
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-site-*`
|
|
295
|
+
- `/etc/nginx/sites-available/lamalibre-lamaste-agent-panel-*`
|
|
296
|
+
- Corresponding symlinks in `/etc/nginx/sites-enabled/`
|
|
297
|
+
- `/etc/nginx/snippets/lamalibre-lamaste-mtls.conf`, `lamalibre-lamaste-authz-cache.conf`
|
|
298
|
+
|
|
299
|
+
**System configuration:**
|
|
300
|
+
|
|
301
|
+
- `/etc/sudoers.d/lamaste`
|
|
302
|
+
- `/etc/fail2ban/jail.d/lamaste.conf`
|
|
303
|
+
- `/etc/ssh/sshd_config.pre-lamaste` (backup only)
|
|
304
|
+
- `/etc/sysctl.d/99-lamaste.conf`
|
|
305
|
+
- `/swapfile` (and entry in `/etc/fstab`)
|
|
306
|
+
|
|
307
|
+
**Service accounts:**
|
|
308
|
+
|
|
309
|
+
- `lamaste` (system user, no login shell — runs the panel and gatekeeper)
|
|
310
|
+
- `lamaste-authelia` (system user, no login shell, no home — runs Authelia)
|
|
311
|
+
- `lamaste-chisel` (group — Chisel runs as `nobody:lamaste-chisel`; `lamaste` is a member)
|
|
312
|
+
|
|
313
|
+
## Quick Reference
|
|
314
|
+
|
|
315
|
+
**Quick uninstall (required steps only):**
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
sudo lamaste-server uninstall
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Or by hand:
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# Stop and remove services
|
|
325
|
+
sudo systemctl disable --now lamalibre-lamaste-serverd lamalibre-lamaste-gatekeeper chisel authelia
|
|
326
|
+
sudo rm -f /etc/systemd/system/{lamalibre-lamaste-serverd,lamalibre-lamaste-gatekeeper,chisel,authelia}.service
|
|
327
|
+
sudo systemctl daemon-reload
|
|
328
|
+
|
|
329
|
+
# Remove nginx config
|
|
330
|
+
sudo rm -f /etc/nginx/sites-enabled/lamalibre-lamaste-*
|
|
331
|
+
sudo rm -f /etc/nginx/sites-available/lamalibre-lamaste-*
|
|
332
|
+
sudo rm -f /etc/nginx/snippets/lamalibre-lamaste-*
|
|
333
|
+
sudo nginx -t && sudo systemctl reload nginx
|
|
334
|
+
|
|
335
|
+
# Remove files, binaries, accounts, and sudoers
|
|
336
|
+
sudo rm -rf /etc/lamalibre/lamaste/ /opt/lamalibre/lamaste/ /var/www/lamaste/
|
|
337
|
+
sudo rm -rf /etc/authelia/ /var/log/authelia/
|
|
338
|
+
sudo rm -f /usr/local/bin/chisel /usr/local/bin/authelia
|
|
339
|
+
sudo rm -f /usr/local/sbin/lamaste-priv /usr/local/sbin/lamaste-certbot /usr/local/sbin/lamaste-cert-info
|
|
340
|
+
sudo userdel -r lamaste
|
|
341
|
+
sudo userdel lamaste-authelia
|
|
342
|
+
sudo groupdel lamaste-chisel
|
|
343
|
+
sudo rm -f /etc/sudoers.d/lamaste
|
|
344
|
+
```
|