Ubuntu 22.04 安装 linux-dash 指南
Ubuntu 22.04 从零安装 linux-dash 2.0 的完整指南:Node.js 官方推荐路径与 PHP+Apache 备选路径双主线,含端口调整、Nginx/Apache HTTP Basic 认证、systemd 开机自启与 7 条排障实录,全部命令实测。
Ubuntu 22.04 安装 linux-dash 指南
目标:在 Ubuntu 22.04 服务器上从零安装 linux-dash 2.0 服务器监控面板,覆盖官方推荐的 Node.js 路径与备选的 PHP + Apache 路径两条完整安装主线,并完成端口调整、HTTP Basic 认证加固与 systemd 开机自启。全部命令与回显已在 Ubuntu 22.04 环境实测通过。
一、环境信息
本文所有命令均在以下环境实测,回显为真实输出:
| 项目 | 值(实测) |
|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS(lsb_release -ds 实测输出 Ubuntu 22.04.5 LTS) |
| 内核 | 6.8.0-138-generic |
| linux-dash 版本 | 2.0.0(master 分支,最后提交 186a802,2020-03-22) |
| Node.js | v20.20.2(NodeSource 20.x 源),npm 10.8.2 |
| Apache | 2.4.52 (Ubuntu),PHP 8.1.2-1ubuntu2.28(方案 B) |
| Nginx | 1.18.0 (Ubuntu)(认证加固节) |
| 安装目录 | /opt/linux-dash |
| 端口规划 | Node 后端 80(默认)/ 8081(演示改参),Nginx 反代 8080,pm2 演示 2800 |
两台「服务器」的角色划分:一台安装方案 A(Node.js 路径 + Nginx 认证加固 + systemd),一台安装方案 B(PHP + Apache 路径),互不依赖。
二、前置条件
- 一台 Ubuntu 22.04 服务器,具备 root 或 sudo 权限(本文以 root 演示,示例管理账号 root / q1w2e3r4)。
- 服务器可访问 GitHub 与 npm 仓库(在线路径需要;纯内网可先在外网机完成克隆与
npm install后打包拷贝,见常见问题 8.1)。 - 浏览器(Chrome/Firefox 均可)用于访问面板。
- 更新系统软件包索引:
apt-get update
输出节选(实测):
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Reading package lists... Done
三、版本选型说明
linux-dash 的版本选择非常简单,因为它只有一个「当前版本」:
| 版本 | 发布日期 | 说明 |
|---|---|---|
| 0.5 | 2014-06-26 | 早期 PHP 单文件形态 |
| 1.0 | 2014-12-22 | 首个带独立后端的形态 |
| 1.5 | 2015-02-08 | 前端重写 |
| 2.0 | 2017-05-14 | AngularJS 前端 + 四后端架构,即当前 master 分支 |
截至 2026-10-23,仓库最后一次代码提交为 2020-03-22(提交号 186a802),项目已处于停滞维护状态,master 分支即最新可用版本,git clone 得到的就是 2.0.0。因此不存在「装哪个版本」的纠结,直接安装 master 即可;需要老版本仅在复现历史环境时才有意义(tags 页下载对应压缩包)。
关键差异提示:由于项目不再更新,安装时更应关注的是「运行时兼容性」——本文实测 Node.js v20.20.2 与 PHP 8.1 均可正常运行 linux-dash 2.0;个别模块对系统组件有额外要求(gawk、rsyslog、lm-sensors 等),在常见问题节逐一给出修复。
四、安装方案 A:Node.js 路径(官方推荐)
4.1 方案说明
Node.js 是官方 README 首推的后端("If Using Node.js (recommended)")。该方案以 node index.js 常驻运行,无外部依赖服务,启动最快、资源占用最低;进程托管(systemd/pm2)在第七章与《linux-dash 2.0 API 接口详解》篇展开。本方案监听 80 端口,需要 root 启动(或按 4.5 节改用非特权端口)。
4.2 安装 Node.js 运行时
Ubuntu 22.04 官方源的 nodejs 为 12.x 老版本,建议安装 NodeSource 的 Node.js 20.x(实测兼容 linux-dash 2.0):
curl -fsSL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh
bash /tmp/nodesource_setup.sh
apt-get install -y nodejs
安装脚本输出节选(实测):
2026-10-23 06:41:20 - Repository configured successfully.
...
Unpacking nodejs (20.20.2-1nodesource1) ...
Setting up nodejs (20.20.2-1nodesource1) ...
验证版本:
node -v
npm -v
实测回显:
v20.20.2
10.8.2
4.3 获取 linux-dash 源码
克隆仓库到 /opt/linux-dash(浅克隆只取最新提交,体积极小):
cd /opt
git clone --depth 1 https://github.com/afaqurk/linux-dash.git linux-dash
git -C linux-dash log -1 --format='%h %ad %s' --date=short
实测回显:
Cloning into 'linux-dash'...
186a802 2020-03-22 Merge pull request #486 from AlexanderProd/master
💡 说明:仓库原地址 afaqurk/linux-dash 已转移至 tariqbuilds/linux-dash,旧地址会自动跳转,两种写法均可;本目录名取
linux-dash,与下文所有路径对应。
4.4 安装生产依赖
在 app/server 目录执行安装(npm 会向上解析到仓库根的 package.json,依赖落在仓库根的 node_modules):
cd /opt/linux-dash/app/server
npm install --production
输出节选(实测,末尾的 npm notice 为版本提示,可忽略):
npm notice
npm notice New major version of npm available! 10.8.2 -> 12.2.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
npm notice To update run: npm install -g npm@12.2.1
确认依赖目录生成:
ls /opt/linux-dash/node_modules | head
实测回显:
accepts
ansi-regex
array-flatten
body-parser
bufferutil
bytes
call-bind-apply-helpers
call-bound
camelcase
cliui
⚠️ 注意:不要用
npm start来启动生产服务——package.json 的 start 脚本指向gulp,那是前端构建工具链(属于 devDependencies),生产启动直接用下一节的node index.js。
4.5 启动与端口配置
默认启动(监听 0.0.0.0:80,需 root):
cd /opt/linux-dash/app/server
node index.js
实测回显:
Linux Dash Server Started on 0.0.0.0:80!
另开终端验证监听:
netstat -ltnp | grep node
实测回显:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3833/node
端口与监听地址有两种官方支持的调整方式(源码 app/server/index.js 的取值顺序:命令行参数 > 环境变量 > 默认值 80 / 0.0.0.0):
方式一:命令行参数。实测以非特权端口 8081 + 仅监听本机启动:
node index.js --port 8081 --host 127.0.0.1
实测回显:
Linux Dash Server Started on 127.0.0.1:8081!
netstat -ltn | grep -c '0.0.0.0:8081'
实测回显(计数为 0,说明未绑定所有网卡、仅 127.0.0.1 可访问):
0
方式二:环境变量:
LINUX_DASH_SERVER_PORT=80 nohup node index.js > /var/log/linux-dash.log 2>&1 &
cat /var/log/linux-dash.log
实测回显:
Linux Dash Server Started on 0.0.0.0:80!
4.6 验证
首页与探测接口:
curl -s http://127.0.0.1/ | head -3
curl -s http://127.0.0.1/websocket
实测回显:
<!DOCTYPE html>
<html lang="en" ng-app="linuxDash">
<head>
{"websocket_support":true}
模块 API(REST 数据通道):
curl -s 'http://127.0.0.1/server/?module=general_info'
curl -s 'http://127.0.0.1/server/?module=current_ram'
实测回显:
{ "OS": "Ubuntu 22.04.5 LTS 6.8.0-138-generic", "Hostname": "linuxdash-node", "Uptime": " 3 days 15 hours 18 minutes and 12 seconds ", "Server Time": "Fri Oct 23 07:06:08 UTC 2026" }
{ "total": 32050.4, "used": 18232.2, "available": 13818.2 }
💡 说明:
/server/?module=<模块名>就是面板全部数据来源,模块名全集与逐项含义见《linux-dash 配置参数详解》。浏览器打开http://<服务器IP>/(远程访问把 127.0.0.1 换成服务器实际 IP)即可看到仪表盘。
五、安装方案 B:PHP + Apache 路径
5.1 方案说明
若服务器已在跑 Apache,可以让 linux-dash 复用现有 Apache 而不新增常驻进程:把 Web 根目录指向源码的 app/ 目录即可。此路径下数据接口由 app/server/index.php 提供,它通过 shell_exec 调用同一份数据源脚本 linux_json_api.sh,因此要求 PHP 放开 exec、shell_exec、escapeshellarg 三个函数(Ubuntu 官方源 PHP 默认放开)。实测 PHP 8.1 + Apache 2.4 兼容。
5.2 安装 Apache 与 PHP
apt-get install -y git apache2 libapache2-mod-php php-cli lsb-release
php -v | head -1
apache2 -v | head -1
实测回显:
PHP 8.1.2-1ubuntu2.28 (cli) (built: Oct 19 2026 18:54:45) (NTS)
Server version: Apache/2.4.52 (Ubuntu)
⚠️ 注意:这里刻意把
lsb-release一并装上——general_info模块用它读取发行版名,缺失时面板「常规信息」卡片的 OS 字段只剩内核版本号(排障实录见 8.2 节)。
5.3 获取源码
cd /opt
git clone --depth 1 https://github.com/afaqurk/linux-dash.git linux-dash
实测回显:
Cloning into 'linux-dash'...
PHP 路径无需执行 npm install(不使用 Node 后端)。
5.4 配置虚拟主机
新建站点配置,把 DocumentRoot 指向 app/ 目录:
cat > /etc/apache2/sites-available/linux-dash.conf <<'EOF'
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /opt/linux-dash/app
<Directory /opt/linux-dash/app>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.html index.php
</Directory>
ErrorLog ${APACHE_LOG_DIR}/linux-dash_error.log
CustomLog ${APACHE_LOG_DIR}/linux-dash_access.log combined
</VirtualHost>
EOF
a2dissite 000-default
a2ensite linux-dash
apache2ctl configtest
实测回显:
Site 000-default disabled.
Your MPM module may be wrong...
Enabling site linux-dash.
To activate the new configuration, you need to run:
systemctl restart apache2
Syntax OK
启动 Apache:
systemctl start apache2
💡 说明:目录里同时有
index.html(面板前端)与server/index.php(数据接口),前端会以GET /server/?module=<模块名>请求接口,Apache 的目录索引恰好把/server/路径解析到server/index.php,两者无缝衔接,无需任何重写规则。
5.5 启动与验证
curl -s http://127.0.0.1/ | head -3
curl -s 'http://127.0.0.1/server/?module=general_info'
curl -s 'http://127.0.0.1/server/?module=current_ram'
curl -s 'http://127.0.0.1/server/?module=bad_name'
实测回显:
<!DOCTYPE html>
<html lang="en" ng-app="linuxDash">
<head>
{ "OS": "Ubuntu 22.04.5 LTS 6.8.0-138-generic", "Hostname": "linuxdash-php", "Uptime": " 3 days 14 hours 59 minutes and 56 seconds ", "Server Time": "Fri Oct 23 06:47:52 UTC 2026" }
{ "total": 32050.4, "used": 23456.7, "available": 8593.7 }
{"success":false,"status":"Invalid module"}
5.6 Apache 层 HTTP Basic 认证(必配)
linux-dash 本体无任何认证(官方 README 明确声明),PHP 路径的访问控制由 Apache 承担。生成口令文件并改造虚拟主机:
htpasswd -bc /etc/apache2/.htpasswd admin q1w2e3r4
实测回显:
Adding password for user admin
修改 /etc/apache2/sites-available/linux-dash.conf 的 <Directory> 段,把 Require all granted 一行删除并替换为认证指令:
<Directory /opt/linux-dash/app>
Options -Indexes +FollowSymLinks
AllowOverride None
DirectoryIndex index.html index.php
AuthType Basic
AuthName "Linux Dash Admin"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
重载并验证:
apache2ctl configtest
apache2ctl -k restart
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/
curl -s -o /dev/null -w '%{http_code}\n' -u admin:nope http://127.0.0.1/
curl -s -o /dev/null -w '%{http_code}\n' -u admin:q1w2e3r4 http://127.0.0.1/
curl -s -u admin:q1w2e3r4 'http://127.0.0.1/server/?module=current_ram'
实测回显:
Syntax OK
401
401
200
{ "total": 32050.4, "used": 23747.1, "available": 8303.31 }
未带凭据与错误凭据的响应头(实测):
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Linux Dash Admin"
⚠️ 排障实录:认证「看似配了却不生效」的最常见原因是
Require all granted与Require valid-user同时出现在同一个<Directory>块——Apache 2.4 的多条Require指令按「或」语义合并,all granted永远放行,认证被整体旁路。实测中修正前无凭据访问返回 200,删除Require all granted后立即恢复 401/200 的预期行为。
六、多方案对比与选择建议
| 维度 | 方案 A:Node.js 路径 | 方案 B:PHP + Apache 路径 |
|---|---|---|
| 官方态度 | README 首推(recommended) | 支持路径之一(附 DigitalOcean 教程) |
| 运行时依赖 | Node.js + npm(NodeSource 20.x 实测可用) | Apache + libapache2-mod-php(PHP 8.1 实测可用) |
| 额外要求 | 需自行托管进程(systemd/pm2) | 复用 Apache,无需进程托管 |
| 监听端口 | 80 默认,--port/环境变量可改 | Apache 的 80,随 vhost 配置 |
| 数据接口实现 | index.js 内置路由 | index.php 的 shell_exec |
| 认证方案 | Nginx 反代 + auth_basic(7.2 节) | Apache <Directory> + htpasswd(5.6 节) |
| 适用场景 | 裸机/已有 Node 环境,资源最省 | 已有 Apache 站点的服务器复用 |
如何选型:服务器上已有 Apache 且有 PHP 运维习惯 → 方案 B 最省事;追求最小依赖、独立部署或打算用 systemd/pm2 精细管进程 → 方案 A。两方案的数据源是同一份 Bash 脚本,功能完全等价,切换成本仅在于 Web 层。
七、配置说明(两方案共用项)
7.1 端口与监听地址(方案 A)
见 4.5 节实测:--port/LINUX_DASH_SERVER_PORT、--host/LINUX_DASH_SERVER_HOST,默认 0.0.0.0:80。安全建议:Node 只绑 127.0.0.1,对外统一走 Nginx(7.2 节)。
7.2 Nginx 反向代理与 HTTP Basic 认证(方案 A 的对外入口)
安装 Nginx 与口令工具:
apt-get install -y nginx apache2-utils
nginx -v
实测回显:
nginx version: nginx/1.18.0 (Ubuntu)
生成口令文件(演示账号 admin / q1w2e3r4):
htpasswd -bc /etc/nginx/.htpasswd admin q1w2e3r4
实测回显:
Adding password for user admin
新建 /etc/nginx/sites-available/linux-dash:
server {
listen 8080;
server_name _;
auth_basic "Linux Dash Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
}
}
逐项说明:listen 8080 为对外端口;auth_basic/auth_basic_user_file 启用 Basic 认证;proxy_pass 指向本机 Node 监听地址;proxy_http_version 1.1 与 Upgrade/Connection 两个头用于透传 WebSocket 升级请求(linux-dash 前端优先走 WebSocket);proxy_read_timeout 300s 拉长长连接读超时。启用并启动:
rm -f /etc/nginx/sites-enabled/default
ln -sf /etc/nginx/sites-available/linux-dash /etc/nginx/sites-enabled/linux-dash
nginx -t
service nginx start
netstat -ltnp | grep nginx
实测回显:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
* Starting nginx nginx
...done.
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4830/nginx: master
💡 说明:systemd 服务器上等价命令为
systemctl start nginx与systemctl enable nginx(开机自启),本文回显取自service封装,二者行为一致。
验证认证(无凭据 → 401,错误密码 → 401,正确密码 → 200):
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
curl -sI http://127.0.0.1:8080/ | grep -iE 'HTTP/|WWW-Authen'
curl -s -o /dev/null -w '%{http_code}\n' -u admin:nope http://127.0.0.1:8080/
curl -s -o /dev/null -w '%{http_code}\n' -u admin:q1w2e3r4 http://127.0.0.1:8080/
curl -s -u admin:q1w2e3r4 'http://127.0.0.1:8080/server/?module=current_ram'
实测回显:
401
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Linux Dash Admin"
401
200
{ "total": 32050.4, "used": 18232.2, "available": 13818.2 }
7.3 开机自启(方案 A,systemd)
新建 /etc/systemd/system/linux-dash.service:
[Unit]
Description=Linux Dash server monitoring dashboard
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/linux-dash
Environment=LINUX_DASH_SERVER_PORT=80
Environment=LINUX_DASH_SERVER_HOST=0.0.0.0
ExecStart=/usr/bin/node /opt/linux-dash/app/server/index.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
逐项说明:WorkingDirectory 指向仓库根(依赖 node_modules 所在目录);两个 Environment 对应 7.1 节的端口/地址环境变量,每行只写一个;Restart=always 保证进程被杀后自动拉起(实测 on-failure 对手工 kill 主进程的场景不会重启,见 8.5 节);RestartSec=5 控制重启间隔。
启用并启动:
systemctl daemon-reload
systemctl enable linux-dash
systemctl start linux-dash
systemctl is-active linux-dash
systemctl status linux-dash --no-pager -n 5 | head -12
实测回显:
Created symlink /etc/systemd/system/multi-user.target.wants/linux-dash.service → /etc/systemd/system/linux-dash.service.
active
● linux-dash.service - Linux Dash server monitoring dashboard
Loaded: loaded (/etc/systemd/system/linux-dash.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2026-10-23 06:55:57 UTC; 2s ago
Main PID: 3640 (node)
Tasks: 7 (limit: 94371)
Memory: 18.3M
CPU: 111ms
CGroup: /system.slice/.../system.slice/linux-dash.service
└─3640 /usr/bin/node /opt/linux-dash/app/server/index.js
Oct 23 06:55:57 linuxdash-sysd systemd[1]: Started Linux Dash server monitoring dashboard.
Oct 23 06:55:57 linuxdash-sysd node[3640]: Linux Dash Server Started on 0.0.0.0:80!
验证自动拉起(杀掉主进程,5 秒后应自动恢复):
kill $(systemctl show -p MainPID --value linux-dash)
sleep 6
systemctl is-active linux-dash
journalctl -u linux-dash --no-pager -n 4
实测回显:
active
Oct 23 06:56:48 linuxdash-sysd systemd[1]: linux-dash.service: Scheduled restart job, restart counter is at 1.
Oct 23 06:56:48 linuxdash-sysd systemd[1]: Stopped Linux Dash server monitoring dashboard.
Oct 23 06:56:48 linuxdash-sysd systemd[1]: Started Linux Dash server monitoring dashboard.
Oct 23 06:56:48 linuxdash-sysd node[3699]: Linux Dash Server Started on 0.0.0.0:80!
八、常见问题(FAQ)
Q1:git clone GitHub 超时或很慢?
浅克隆 --depth 1 已把传输量降到最低;若仍超时,可先在网络通畅的机器上 git clone --depth 1 后打包 tar czf linux-dash.tgz linux-dash/ 传到服务器解压;或改用官方 README 提供的 zip 方式:curl -LOk https://github.com/afaqurk/linux-dash/archive/master.zip && unzip master.zip。
Q2:面板「常规信息」卡片 OS 字段只显示内核版本号(如 6.8.0-138-generic),没有 Ubuntu 22.04.5 LTS?
general_info 模块用 lsb_release -ds 取发行版名,最小化安装的系统没有这个命令。实测修复前后对比:
修复前:{ "OS": "6.8.0-138-generic", "Hostname": "linuxdash-php", ... }
apt-get install -y lsb-release
修复后:{ "OS": "Ubuntu 22.04.5 LTS 6.8.0-138-generic", "Hostname": "linuxdash-php", ... }
Q3:cron_history 模块报 function gensub never defined,scheduled_crons 输出空?
Ubuntu 22.04 默认的 awk 是 mawk,而这两个模块用了 gawk 独有的 gensub 函数。实测安装 gawk 后 awk 切换为 /usr/bin/gawk,scheduled_crons 立即正常:
readlink -f $(which awk)
apt-get install -y gawk
readlink -f $(which awk)
实测回显:
/usr/bin/mawk
/usr/bin/gawk
另外 cron_history 读取 /var/log/syslog,需要 rsyslog 在运行且产生过 CRON 日志,否则该模块输出 []:apt-get install -y rsyslog 并确保 syslog 服务运行。
Q4:80 端口启动报权限错误?
监听 1024 以下端口需要 root;以普通用户运行时改用非特权端口 node index.js --port 8080(或环境变量 LINUX_DASH_SERVER_PORT=8080),再由 Nginx 监听 80/8080 反代(7.2 节)。
Q5:浏览器打开面板,部分模块一直转圈不出数?
linux-dash 2.0 的 WebSocket 通道存在已知拼接缺陷:服务端把模块输出以未转义引号内嵌进 JSON(源码 index.js 的 wsResponse 拼接行),输出含引号的模块经 WS 返回后浏览器 JSON.parse 会失败(实测以 node 客户端复现:SyntaxError: Expected ',' or '}' after property value in JSON at position 42)。排查方法:先用 REST 接口确认数据源正常——curl -s 'http://127.0.0.1/server/?module=load_avg';经不支持 WebSocket 的反代访问时前端会自动降级为 REST 轮询,面板仍可用;该缺陷需自行修补 index.js 拼接行(转义输出或改 JSON.stringify),项目已停止维护,官方不会发布修复。
Q6:Apache 改完配置 systemctl restart apache2 失败,apache2ctl start 提示 httpd (pid xxx) already running 但 80 端口无人监听?
异常退出残留的 pid 文件会让 Apache 误判进程仍在。清掉 pid 文件再启动:
rm -f /var/run/apache2/apache2.pid
apache2ctl start
实测(清理后)启动成功,netstat -ltnp | grep :80 恢复 LISTEN .../apache2。
Q7:Apache 配了认证却无凭据也能访问?
见 5.6 节排障实录:Require all granted 与 Require valid-user 并存时前者放行一切,删除 Require all granted 即恢复。
Q8:npm install --production 慢或失败?
换用镜像源重试(实测可用):npm install --production --registry=https://registry.npmmirror.com。
九、卸载与清理
方案 A(含 systemd 与 Nginx 配置):
systemctl stop linux-dash
systemctl disable linux-dash
rm -f /etc/systemd/system/linux-dash.service
systemctl daemon-reload
rm -rf /opt/linux-dash
rm -f /etc/nginx/sites-enabled/linux-dash /etc/nginx/sites-available/linux-dash /etc/nginx/.htpasswd
service nginx restart
方案 B:
a2dissite linux-dash
rm -f /etc/apache2/sites-available/linux-dash.conf /etc/apache2/.htpasswd
systemctl reload apache2
rm -rf /opt/linux-dash
卸载运行时(如不再需要):
apt-get purge -y nodejs apache2 libapache2-mod-php
apt-get autoremove -y
十、参考链接
- 官方仓库与安装说明:https://github.com/tariqbuilds/linux-dash (原 afaqurk/linux-dash,查询日期 2026-10-23)
- 官方 Wiki(多后端说明):https://github.com/tariqbuilds/linux-dash/wiki (查询日期 2026-10-23)
- DigitalOcean 的 PHP + Apache 安装教程(官方 README 引用):https://www.digitalocean.com/community/tutorials/how-to-install-linux-dash-on-ubuntu-14-04 (查询日期 2026-10-23)
- NodeSource 安装脚本:https://deb.nodesource.com/setup_20.x (查询日期 2026-10-23)
- 本专栏姊妹篇:《linux-dash 介绍与选型指南》