INSTALL.md: keep exec() enabled in the default pool (node pages and CSR parsing use it), add openssl package, describe empty dashboard without the API
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+15
-8
@@ -26,7 +26,7 @@ everywhere you see it.
|
||||
## 1. Packages
|
||||
|
||||
```bash
|
||||
sudo apt install nginx php8.4-fpm php8.4-redis php8.4-mbstring php8.4-cli redis-server certbot
|
||||
sudo apt install nginx php8.4-fpm php8.4-redis php8.4-mbstring php8.4-cli redis-server certbot openssl
|
||||
```
|
||||
|
||||
Check the PHP version you actually got (`php -v`) and use that number instead
|
||||
@@ -75,22 +75,26 @@ redis-cli -s /run/redis-svxportal/redis.sock -a 'PASTE-THE-VALUE-HERE' ping #
|
||||
## 4. PHP-FPM
|
||||
|
||||
Two pools are used. The default pool (`www`) handles all normal pages. A
|
||||
second small pool handles only `auth/admin_reflector_api.php`, because that
|
||||
script calls `exec()` to reach the sudo helpers (step 9) and you do not want
|
||||
`exec()` enabled for the whole site.
|
||||
second small pool handles only `auth/admin_reflector_api.php`, so its longer
|
||||
timeout and separate process limits do not affect the rest of the site.
|
||||
|
||||
```bash
|
||||
sudo cp install/php-fpm-svxadmin.conf /etc/php/8.4/fpm/pool.d/svxadmin.conf
|
||||
```
|
||||
|
||||
In the default pool hardening is recommended. Edit
|
||||
Hardening of the default pool is recommended. Edit
|
||||
`/etc/php/8.4/fpm/pool.d/www.conf` and add at the end:
|
||||
|
||||
```ini
|
||||
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,popen,proc_open,proc_close,pcntl_exec,dl,phpinfo,show_source
|
||||
php_admin_value[disable_functions] = passthru,shell_exec,system,popen,proc_open,proc_close,pcntl_exec,dl,phpinfo,show_source
|
||||
php_admin_value[expose_php] = Off
|
||||
```
|
||||
|
||||
Do **not** add `exec` to that list. The portal uses `exec()` in the default
|
||||
pool too: `openssl req` to read the e-mail out of a pending CSR, and the sudo
|
||||
helpers from the node pages (`auth/node_auth_api.php`, `auth/node_cmd_api.php`,
|
||||
`auth/admin_nodes.php`). With `exec` disabled those pages return errors.
|
||||
|
||||
Then:
|
||||
|
||||
```bash
|
||||
@@ -228,8 +232,11 @@ Log in on the web page with that callsign. The **Admin** menu appears.
|
||||
The dashboard (node list, map, monitor, last-heard, trunks) fetches JSON and
|
||||
Server-Sent Events from `/svxportal/api/...`, which nginx proxies to
|
||||
`127.0.0.1:8098`. That backend service is **not included** here. Without it
|
||||
the account/admin/talkgroup pages work, but the live node views stay empty
|
||||
(the page shows a connection error banner).
|
||||
the account/admin/talkgroup pages work, but the front page's node list, map,
|
||||
monitor, last-heard and trunks views simply stay **empty**. There is no error
|
||||
banner: the API helper returns null on a failed fetch and the page keeps its
|
||||
empty tables. Check the browser console (404 on `/svxportal/api/status`) if
|
||||
you are unsure.
|
||||
|
||||
Endpoints the UI expects:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user