⭐️ 部署一台正式环境的 Caddy

2024-03-10

公司要整一个国内站点拿去做各种备案,因此我拿到了一台 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
}
中雨 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君