群晖上搭建Ghost博客

每次自己都没想起来的时候,运营商、航空公司、银行、券商却从不曾忘记,虽然只是短信,也让我感受到了你们的真诚,让我们携手共进,共创辉煌!😁😁😁


本文是应网友 luffy 的要求重新折腾的,原文主框架完成于 2021 年 4 月,采用了 SQLite 作为数据库,本次应要求改为了 MySQL ,发布前对大部分图片进行了重新截取;

什么是 Ghost ?

Ghost 是一款个人博客系统,采用 Node.js 编写,同时支持 MariaDB、SQLite 和 PostgreSQL 数据库。前后台简洁,占用资源少,支持 Markdown,是一个现代化的,开源的博客发布平台。

关于数据库

老苏首先尝试了使用系统自带的 MariaDB,但 MariaDB 不是 Ghost 官方支持的数据库 ,在安装过程中遇到了各种数据库错误,似乎是 Knex 和 MariaDB 的兼容问题。

从 Ghost 5.0 开始,官方建议使用 MySQL8 ,所以接下来老苏采用了 MySQL 容器,但似乎 MySQL5.7 也可以正常工作。

下面的安装,图形化安装方式和 docker cli 安装方式继续保留了之前采用的 SQLite,docker-compose 命令行方式则重新采用了 MySQL

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 ghost ,选择第一个 ghost,版本选择 latest。

卷

在 docker 文件夹中,创建一个新文件夹 ghost,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/ghost/data /var/lib/ghost/content 存放设置

端口

直接用了默认的端口 2368

本地端口 容器端口
2368 2368

环境

因为采用了 SQLite ,所以不需要设置 database 相关的参数

可变 值
database__client 数据库类型
database__connection__host 数据库主机IP
database__connection__port 数据库端口
database__connection__user 数据库用户
database__connection__password 数据库访问密码
database__connection__database 数据库名
NODE_ENV 默认为 production,必须修改为 development
url url地址

  • 这个 url 会影响到主界面的菜单地址,不设置的时候,默认主菜单地址会是 http://localhost:2368;
  • 老苏只是在局域网用,所以设的是局域网 IP;
  • 如果在公网使用,请设置为公网 IP 或者域名;
  • 必须设置为 development,否则容器日志会显示 "Unknown database error"错误,导致不可访问

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建文件夹 ghost 和 子目录
mkdir -p /volume2/docker/ghost/data

# 进入 ghost 目录
cd /volume2/docker/ghost

# 运行容器(采用 SQLite)
docker run -d \
--restart always \
--name ghost \
-p 2368:2368 \
-v $(pwd)/data:/var/lib/ghost/content \
-e NODE_ENV=development \
-e url=http://192.168.0.197:2368 \
ghost

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3.1'

services:

ghost:
image: ghost
container_name: gh_ghost
restart: always
ports:
- 2368:2368
environment:
#NODE_ENV: development
NODE_ENV: production
url: http://192.168.0.197:2368
database__client: 'mysql'
database__connection__host: 'db'
database__connection__user: 'root'
database__connection__password: '321.qwerty'
database__connection__database: 'ghost'

db:
image: mysql:5.7
container_name: gh_mysql
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: '321.qwerty'
MYSQL_DATABASE: 'ghost'
MYSQL_USER: 'ghost'
MYSQL_PASSWORD: '123456'
command: --character-set-server=utf8 --collation-server=utf8_unicode_ci

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 ghost 和 子目录
mkdir -p /volume2/docker/ghost/{data,mysql}

# 进入 ghost 目录
cd /volume2/docker/ghost

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:2368,就能看到首界面了

上面是老版本的,下面是现在新版本的,相比之下,现在的版本界面似乎更简洁

创建用户

在浏览器中输入 http://群晖IP:2368/ghost

首先要创建账号

进入主界面

发布帖子

接下来你可以发第一个帖子

发布完成后回到首页的效果

后台管理

在浏览器中输入 http://群晖IP:2368/ghost,如果之前登陆过,会看到整个后台管理的 Dashboard 界面

可以做管理帖子、管理人员、装修站点等操作。

参考文档

TryGhost/Ghost: 👻 The #1 headless Node.js CMS for professional publishing
地址:https://github.com/TryGhost/Ghost

Ghost: Turn your audience into a business
地址:https://ghost.org/

Ghost Docs
地址:https://ghost.org/docs/install/docker/