在您自己的服务器上进行 Node.js 托管,由面板负责监管
选择 Node.js 应用运行环境,您的程序就成为一个网站:开机启动、退出后重启,其域名、证书和依赖都由系统代为处理。
面板为它做什么
Node.js 托管中没人乐意做的那些部分。
持续运行
在您应用它时启动,重启机器后再次启动,退出后自动重启:崩溃、未处理的 Promise 拒绝、被内存不足终止,都算。
依赖已安装
从面板安装时,它会以该网站自己的账户身份运行 npm,并在存在锁文件时使用该锁文件,因此安装的版本就是您提交的版本。
停止与重启
部署新代码只需一个按钮。在您排查原因期间停止一个行为异常的应用,同样只需一个按钮。
环境变量
以其最终生成的行形式编辑,每行一个名称和取值。您的数据库凭据和 API 密钥应放在这里,而不是放进代码仓库。
您的证书,免费
域名及其 Let's Encrypt 证书归 nginx 所有。续期不是您应用的问题,从来都不是。
受监控
运行环境监控每分钟采样一次应用状态并保留七天,因此“上周二很慢”是一个有答案的问题。
唯一的那条规则
监听分配给您的端口。
您的应用必须监听面板分配给它的端口,并绑定在回环地址上。硬编码为 3000 端口的应用将无法被访问。请从环境变量中读取端口,这也是每一份部署指南本来就告诉您要做的事,这样同一份代码在这里和在其他任何地方都能运行。
作为交换,证书、虚拟主机或防火墙端口等事项都无需您费心。WebSocket 可以工作:协议升级会被透传,连接保持打开,因此会升级请求的应用在这里的表现与在任何其他地方一致。
服务器可提供的版本是 Node.js 20、22 和 24,而版本是按网站选择的,而不是为整台机器选定的。同一台服务器上的两个应用可以需要不同的主版本。
它能触及什么
它自己的网站,以它自己的账户身份运行。
Node.js 应用以该网站自己的 Unix 账户身份、在该网站的目录内运行,与 PHP 站点完全一致。它读写自己的文件、访问自己的数据库,无法读取其他网站的文件,而且该账户没有 shell。
创建数据库的方式与其他网站完全相同:建一个带独立账户的数据库,再把凭据作为环境变量传入。邮件、DNS、计划任务和备份在 Node.js 网站上都能正常使用,因为它们都不关心站点运行什么。
如果您的需求超出这些,比如需要本服务器未安装的某种语言或系统库,可以改用容器网站来运行您自己的镜像。那是另一种运行环境,有不同的取舍,并且需要管理员先批准该镜像。
坦诚相告
监管不是什么。
重启一个已退出的进程只能换来时间,换不来正确性。一个每次请求都崩溃的应用会每次请求都重启,而网站依然打不开。它真正预防的是另一种情况,也就是实际会发生的那一种:凌晨两点的一个异常请求把站点弄下线,直到第二天早上才有人发现。
另外,Node.js 应用与机器上的其他所有网站共享这台机器。隔离依靠的是 Linux 账户和对该服务的限制,这与 PHP 站点所享有的隔离完全相同,并已完整说明。它不是虚拟机,本站也不会告诉您它是。