公司要整一个国内站点拿去做各种备案,因此我拿到了一台 Ubuntu 的机器,目标是简单配置一个 SSR 的官网。我首先装了 neofetch
查看系统配置,以及安装 NodeJS 环境,后期就可以快速跑起来服务运行。考虑到网站要上 SSL 证书,以及多站点托管,就想着上一个 Caddy 试试看。由于不需要跑 PHP 什么的后端,就没用安装脚本自己来了。
安装过程基本按照 官网文档 来,设置完 APT 源就可以直接装,装完默认是以高权限进程级别运行(因此开机也会自启)。安装的下一个章节就是“开始使用”,此时 文档内容 并没有和前面安装的部分直接对应上,那里是以当前用户的身份去启动的,导致我误解了很久。其实直接 curl localhost:80
就能看到对应的说明,直接修改 CaddyFile 就可以用了。
部署 Caddy 的时候主要遇到的错误都是和权限有关系,一个是 SSL 证书的权限,一个是根目录的权限,我本来想放在 ubuntu
家目录的,尝试了很久发现由于进程默认是 root
身份打开,则必须放在 root
能直接访问的地方才行(它默认给的配置文件在 /etc/caddy/Caddyfile
,而网站内容目录则是在 /usr/share/caddy
下),我把证书的文件也丢在了 CaddyFile 的旁边,而修改 CaddyFile 则是 这种格式:
example.com {
tls cert.pem key.pem
}
接下来就是把项目在服务器上跑起来,使用 pm2
启动,再加上 301 到 www 域名以及反向代理,就基本完成,非常简单。
// ecosystem.config.cjs
module.exports = {
apps: [
{
name: "Remix",
script: "pnpm start",
env: { PORT: 5001 },
},
],
};
// CaddyFile
paul.me {
tls paul.me.pem paul.me.key
redir https://www.paul.me
}
www.paul.me {
root * /usr/share/caddy
tls paul.me.pem paul.me.key
encode zstd gzip
file_server
reverse_proxy 127.0.0.1:5001
}