日志, 技术

开始使用Ghost啦!

关注Ghost很久很久了,14年就尝试过0.5.3版,由于一直没有出正式版,所以一直处于关注和等待中。

终于在差不多一年前Ghost在GitHub上发布了1.0.0-alpha.1,本以为很快就能出正式版了,开始了焦急的等待。一开始基本上每天都会去GitHub上检查下他们的动态。后来变成了大约每周会去看一次,等了一个又一个版本,甚至等了大半年,终于在第21个alpha版后,推出了beta版,随后不久发布了1.0.0正式版。尝试去安装,结果发现挺多坑的,试了很久都没成功,正式版的Docker镜像也一直没出。再后面,Ghost团队的更新也非常勤奋,基本每周都会发布新版本,那段期间我正好也比较忙,一直在默默关注,没有再去尝试安装,任务列表里的“博客迁移到Ghost上”也被一再推迟。

直到今天,突然想再去试下。看到Docker镜像也同步了最新的版本,于是直接上Docker。几分钟就装完了,如丝般顺滑,很爽!(20171012更新:通过默认命令安装,有些地址会显示成localhost开头的地址,通过--env url=https://hadb.me/可以修改这个地址,但是由于Nginx设置有问题,导致设置成https的地址后就陷入重定向循环,这个问题后来困扰了很久,解决方案下面会讲。)

作为一个技术博主,我觉得还是有必要把安装步骤写一下,方便后人。

我的博客是搭建在自己家里的NAS服务器上,具体细节以后再讲。

宿主机安装证书

service nginx stop && \
certbot certonly --standalone --preferred-challenges tls-sni -d hadb.me && \
service nginx start

宿主机Nginx设置

server {
    listen 443 ssl;
    server_name hadb.me;
    client_max_body_size 1024m;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/hadb.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hadb.me/privkey.pem;
    location / {
        proxy_redirect off;
        proxy_read_timeout 300;
        proxy_set_header host $host;
        proxy_set_header x-real-ip $remote_addr;
        proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header x-forwarded-proto https;
        proxy_pass http://localhost:12368;
    }
}

其中 proxy_set_header x-forwarded-proto https;很重要,如果不加的话,当启动docker设置url为https开头的地址时,就会陷入重定向循环,这个问题困扰了我很久,最终在这个issue里找到了答案。

创建数据镜像

docker create -v /srv/ghost/hadb.me:/var/lib/ghost/content --name ghost-hadb-me-data ubuntu:16.04

启动docker

sudo docker run --detach \
    --name ghost-hadb-me \
    --env url=https://hadb.me/ \
    --publish 12368:2368 \
    --volumes-from ghost-hadb-me-data \
    --tty \
    ghost:latest

几行命令,Done!就可以开始愉快的写博客啦!哈哈哈哈哈!😃

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。