服务器开机记录1.5: ghost in Docker 之 覆 灭

A Farewell Song for ghost0, Forever.

ghost使用没多久我就发现了一个问题,就是通过Docker好像没法改一个很重要的配置文件config.development.json。我需要的发信邮箱配置只能直接通过这个文件编辑,而Staff和Member的邀请和订阅就依赖这里的SMTP配置。当前版本的ghost已经只能挂载/ghost/contents,不能直接挂/ghost了。尽管翻了一下之后发现可以单独挂这个文件,但挂上去之后试着改了一下好像没什么卵用来着……?

之后我发现了bitnami/ghost这个镜像说是可以通过环境变量-e输入邮箱的相关设定,但正好之前就觉得还是对网页的掌控度高一点比较好,所以最后还是决定不用Docker装ghost了。反正之前这个ghost已经给了我足够的 折磨 磨练了,已经可以不用不用再战斗了哦,ghost0……一路走好!

好在ghost可以方便地在后台一键导出当前所有的文章和设置到一个.json里,最后很轻松地就恢复了!

流程

安装Node.js 12.x

yum install -y nodejs

安装ghost CLI

npm install ghost-cli@latest -g

ghostCLI不能通过root来执行,如果没有其他用户的话先新建一个用户:

adduser newUser
usermod -aG wheel newUser	#加入管理员组
su newUser					#切换到新建的用户

cd path/for/ghost			#找个合适的空目录装ghost
ghost install local
nano config.development.json

这回终于可以编辑config.development.json了,参照官方文档编辑就成:

{
  "url": "https://your.website/",
  "server": {
    "port": 2368,
    "host": "172.64.0.1"
  },
  "database": {
    "client": "sqlite3",
    "connection": {
      "filename": "/home/shigure/ghost/content/data/ghost-local.db"
    }
  },
  "mail": {
    "transport": "SMTP",
    "from": "your@email.address",
    "options": {
        "host": "hwsmtp.exmail.qq.com",
        "port": 465,
        "secureConnection": true,
        "auth": {
            "user": "your@email.address",
            "pass": "yourEmailPassword"
        }
    }
  },
  "logging": {
    "transports": [
      "file",
      "stdout"
    ]
  },
  "process": "local",
  "paths": {
    "contentPath": "/home/shigure/ghost/content"
  }
}

只需要修改urlservermail

url写你的网址;server填监听的IP和端口。这里注意我们已经把ghost装到外边了,地址应该填写负责和Caddy所在子网通信的网桥的IP,而非其Docker容器的IP。

mail试了一下QQ企业邮箱需要from(不写进去的话默认是noreply@your.site)和options/auth/user保持一致才能成功发送邮件;而service无特殊情况也应该是可以删掉的;其他都看你邮箱服务的安排。

改完json,将ghost重启一下就可以退出来改Caddyfile了:

ghost restart
exit							#退出新建用户

nano /path/to/caddy/Caddyfile	#编辑Caddyfile
docker restart yourCaddy

要编辑的Caddyfile内容和前面编辑的json监听地址相呼应,即把反代地址改为网桥IP即可。重启完Caddy之后即可看到你的新ghost博客上线辣(