@lamalibre/create-portlama 1.0.31 → 1.0.33

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.
Files changed (37) hide show
  1. package/package.json +1 -1
  2. package/src/lib/service-config.js +4 -3
  3. package/src/tasks/panel.js +9 -1
  4. package/src/tasks/redeploy.js +10 -1
  5. package/vendor/panel-client/dist/assets/index-DYc0AT5L.js +689 -0
  6. package/vendor/panel-client/dist/assets/index-DkI5S9UE.css +1 -0
  7. package/vendor/panel-client/dist/docs/01-concepts/authentication.md +48 -15
  8. package/vendor/panel-client/dist/docs/01-concepts/security-model.md +39 -5
  9. package/vendor/panel-client/dist/docs/01-concepts/tickets.md +292 -0
  10. package/vendor/panel-client/dist/docs/02-guides/disaster-recovery.md +66 -9
  11. package/vendor/panel-client/dist/docs/03-architecture/panel-server.md +146 -19
  12. package/vendor/panel-client/dist/docs/04-api-reference/overview.md +50 -7
  13. package/vendor/panel-client/dist/docs/04-api-reference/settings.md +343 -0
  14. package/vendor/panel-client/dist/docs/04-api-reference/tickets.md +601 -0
  15. package/vendor/panel-client/dist/docs/06-reference/config-files.md +192 -11
  16. package/vendor/panel-client/dist/docs/06-reference/ports-and-services.md +3 -1
  17. package/vendor/panel-client/dist/docs/_index.json +8 -1
  18. package/vendor/panel-client/dist/index.html +2 -2
  19. package/vendor/panel-server/package.json +2 -1
  20. package/vendor/panel-server/src/cli/reset-admin.js +26 -5
  21. package/vendor/panel-server/src/index.js +28 -1
  22. package/vendor/panel-server/src/lib/authelia.js +33 -2
  23. package/vendor/panel-server/src/lib/config.js +8 -0
  24. package/vendor/panel-server/src/lib/constants.js +8 -0
  25. package/vendor/panel-server/src/lib/mtls.js +18 -2
  26. package/vendor/panel-server/src/lib/nginx.js +34 -0
  27. package/vendor/panel-server/src/lib/plugins.js +3 -6
  28. package/vendor/panel-server/src/lib/session.js +151 -0
  29. package/vendor/panel-server/src/lib/tickets.js +1092 -0
  30. package/vendor/panel-server/src/lib/totp.js +76 -0
  31. package/vendor/panel-server/src/middleware/twofa-session.js +68 -0
  32. package/vendor/panel-server/src/routes/management/settings.js +307 -0
  33. package/vendor/panel-server/src/routes/management/tickets.js +430 -0
  34. package/vendor/panel-server/src/routes/management.js +4 -0
  35. package/vendor/panel-server/src/routes/plugin-router.js +2 -5
  36. package/vendor/panel-client/dist/assets/index-D_V4j6Yu.css +0 -1
  37. package/vendor/panel-client/dist/assets/index-q6OoAeBX.js +0 -679
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lamalibre/create-portlama",
3
- "version": "1.0.31",
3
+ "version": "1.0.33",
4
4
  "description": "One-command setup for secure reverse tunnels with a management dashboard",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -74,7 +74,8 @@ portlama ALL=(root) NOPASSWD: /usr/bin/systemctl restart portlama-panel
74
74
  # --- nginx config test ---
75
75
  portlama ALL=(root) NOPASSWD: /usr/sbin/nginx -t
76
76
 
77
- # --- certbot: restrict certonly to --nginx only (prevents --manual-auth-hook) ---
77
+ # --- certbot: restrict certonly to --nginx (code always passes --non-interactive) ---
78
+ # Note: trailing wildcard allows additional flags; trust boundary is @lamalibre/ scope
78
79
  portlama ALL=(root) NOPASSWD: /usr/bin/certbot certonly --nginx *
79
80
  portlama ALL=(root) NOPASSWD: /usr/bin/certbot renew
80
81
  portlama ALL=(root) NOPASSWD: /usr/bin/certbot renew --cert-name *
@@ -86,7 +87,7 @@ portlama ALL=(root) NOPASSWD: /usr/bin/openssl x509 -in /etc/letsencrypt/live/*
86
87
  portlama ALL=(root) NOPASSWD: /usr/bin/openssl x509 -req -in /etc/portlama/pki/* *
87
88
  portlama ALL=(root) NOPASSWD: /usr/bin/openssl genrsa -out /etc/portlama/pki/* *
88
89
  portlama ALL=(root) NOPASSWD: /usr/bin/openssl req -new -key /etc/portlama/pki/* *
89
- portlama ALL=(root) NOPASSWD: /usr/bin/openssl pkcs12 -export *
90
+ portlama ALL=(root) NOPASSWD: /usr/bin/openssl pkcs12 -export -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1 -out /etc/portlama/pki/*
90
91
 
91
92
  # --- mv: restrict source to /tmp/ or known config paths ---
92
93
  portlama ALL=(root) NOPASSWD: /usr/bin/mv /tmp/* /var/www/portlama/*
@@ -111,7 +112,7 @@ portlama ALL=(root) NOPASSWD: /usr/bin/mkdir -p /etc/authelia/*
111
112
  portlama ALL=(root) NOPASSWD: /usr/bin/mkdir -p /var/log/authelia
112
113
  portlama ALL=(root) NOPASSWD: /usr/bin/mkdir -p /var/log/authelia/*
113
114
  portlama ALL=(root) NOPASSWD: /usr/bin/cat /etc/authelia/*
114
- portlama ALL=(root) NOPASSWD: /usr/local/bin/authelia storage *
115
+ portlama ALL=(root) NOPASSWD: /usr/local/bin/authelia storage user totp generate *
115
116
 
116
117
  # --- Static site file operations under /var/www/portlama/ ---
117
118
  portlama ALL=(root) NOPASSWD: /usr/bin/mkdir -p /var/www/portlama/*
@@ -83,7 +83,7 @@ export function panelTasks(ctx, task) {
83
83
 
84
84
  subtask.output = 'Installing production dependencies...';
85
85
  try {
86
- await execa('npm', ['install', '--production'], {
86
+ await execa('npm', ['install', '--production', '--ignore-scripts'], {
87
87
  cwd: serverDest,
88
88
  });
89
89
  } catch (err) {
@@ -94,6 +94,14 @@ export function panelTasks(ctx, task) {
94
94
 
95
95
  await execa('chown', ['-R', 'portlama:portlama', serverDest]);
96
96
 
97
+ // Create CLI symlink for portlama-reset-admin
98
+ const resetAdminSrc = join(serverDest, 'src', 'cli', 'reset-admin.js');
99
+ const resetAdminDest = '/usr/local/bin/portlama-reset-admin';
100
+ if (existsSync(resetAdminSrc)) {
101
+ await execa('chmod', ['+x', resetAdminSrc]);
102
+ await execa('ln', ['-sf', resetAdminSrc, resetAdminDest]);
103
+ }
104
+
97
105
  subtask.output = 'Panel server deployed';
98
106
  },
99
107
  rendererOptions: { persistentOutput: true },
@@ -103,7 +103,7 @@ export function redeployTasks(ctx, task) {
103
103
 
104
104
  subtask.output = 'Installing production dependencies...';
105
105
  try {
106
- await execa('npm', ['install', '--production'], {
106
+ await execa('npm', ['install', '--production', '--ignore-scripts'], {
107
107
  cwd: serverDest,
108
108
  });
109
109
  } catch (err) {
@@ -113,6 +113,15 @@ export function redeployTasks(ctx, task) {
113
113
  }
114
114
 
115
115
  await execa('chown', ['-R', 'portlama:portlama', serverDest]);
116
+
117
+ // Ensure CLI symlink for portlama-reset-admin
118
+ const resetAdminSrc = join(serverDest, 'src', 'cli', 'reset-admin.js');
119
+ const resetAdminDest = '/usr/local/bin/portlama-reset-admin';
120
+ if (existsSync(resetAdminSrc)) {
121
+ await execa('chmod', ['+x', resetAdminSrc]);
122
+ await execa('ln', ['-sf', resetAdminSrc, resetAdminDest]);
123
+ }
124
+
116
125
  subtask.output = 'Panel server updated';
117
126
  },
118
127
  rendererOptions: { persistentOutput: true },