RosterServer 是 Node.js 的多站点虚拟主机库,用于在同一进程内托管多个 HTTPS 域名,并自动管理 Let's Encrypt 证书。每个域名获得隔离的 VirtualServer 实例,模拟 http.Server,避免应用间配置冲突。
主要能力:按域名目录自动加载站点;支持 Node 处理器(index.js/.mjs/.cjs 导出 (httpsServer) => handler)、Express 应用、Socket.IO 和纯静态站点(仅有 index.html 时无需代码);支持通配符域名(*.example.com)与自定义端口(domain:port);自动签发与续期证书(到期前 45 天),支持 SNI 多域名;提供本地模式(HTTP,CRC32 确定性端口 4000-9999)便于开发。
使用方式:安装后创建 Roster 实例,配置 email、wwwPath、greenlockStorePath 等,调用 roster.start()。站点目录结构为 www/{域名}/index.js 或 index.html。也可用 roster.register(domain, handler) 手动注册,或用 roster.init() 配合外部服务器实现集群部署。核心 API 包括 start、init、requestHandler、upgradeHandler、sniCallback、ensureCertificate、loadCertificate、createManagedHttpsServer、createServingHttpsServer、attach、register、use、getUrl。
适用场景:多域名 HTTPS 托管、本地多站点开发、集群部署(证书管理器与工作进程分离)、需要自动 SSL 的 Node 应用。
限制与注意:生产环境需开放 80 和 443 端口并正确配置 DNS;端口 80 保留给 ACME 挑战,不可作为 HTTPS 端口;建议先用 staging: true 测试以避免 Let's Encrypt 速率限制;默认 DNS-01 插件为本地/手动 acme-dns-01-cli;扫描器拦截插件状态为进程内内存,默认 60 秒窗口、3 次触发、封禁 15 分钟,仅在可信反向代理后设置 trustProxy: true。具体安装命令与版本信息暂未提供。