> ## Content Index
> Fetch the complete content index at: https://nigzu.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Ghost进阶： 一些依赖项的配置
- URL: https://nigzu.com/ghost-config/
- Published: 2022-09-15T05:37:10.000Z
- Updated: 2025-05-03T17:47:31.000Z
- Author: 宁嘉
- Tags: Ghost, 自托管

更新时间：2022年9月15日13点40分

---

### 配置方式

如果没有自定义配置Ghost将使用默认配置，自定义配置：`config.development.json`和 `config.production.json`，这两个文件分别应用于开发和生产运行环境，默认在环境变量中指定：

```bash
NODE_ENV=production(or development)

```

Docker部署的容器直接映射配置文件在本地，方便修改，修改后重启才能生效。这两个文件在容器中的路径是：

```bash
/var/lib/ghost/config.production.json
/var/lib/ghost/config.development.json

```

环境变量也可以替换默认配置中的选项，嵌套配置选项使用两个下划线分隔，例如：

```bash
admin__url=domain

```

对应：

```json
"admin": {
  "url": "domain"
}

```

### 数据库的选择

[Bookshelf.js](https://bookshelfjs.org/?ref=nigzu.com)是Ghost的ORM框架，尽管该框架已实现对 PostgreSQL的操作，Ghost源码仍移除了相应选项，官方[表示](https://ghost.org/changelog/dropping-support-for-postgresql/?ref=nigzu.com)团队中缺乏维护人员，5.0以后版本只支持Sqlite3和MySQL 8，并且在5.8版本以后生产环境只能使用MySQL。

docker下mysql有两个官方的库，大同小异：

1. 由Docker团队维护，通过下载`mysql:latest`即可使用；
2. 由Oracle的MySQL团队维护， 镜像地址是`mysql/mysql-server:latest`；

### 评论插件的选择

最新的情况是，官方在5.9版本以上终于集成了评论系统，此前只能安装第三方评论插件，[且需要在主题中添加几行代码](https://ghost.org/tutorials/adding-comments/?ref=nigzu.com)。

网站主题中可以设置评论部分仅限会员可见，但是第三方评论系统通常需要读者另外再登录一个账号，而可以单点登录并会员结合的评论系统，目前只有[Cove](https://cove.chat/?ref=nigzu.com)实现了这一功能：数据在云端，价格在每月7.5美元以上，不推荐使用。

而最新的官方评论系统完全实现了上述需求。

### Gravatar头像无法显示的问题

网站会员头像来自邮箱对应的Gravatar账号，无法在本站自主上传，Gravatar是一项网络头像服务。用户在Gravatar服务器上传了自己的头像并绑定邮箱，便可以在其他任何支持Gravatar的博客、论坛等地方显示它。

目前官方源在中国内地无法访问，要么用CDN源替代，要么在配置中禁用：

```json
"privacy": {
    "useGravatar": false,
}

```

禁用是不必的，有国内可用的CDN源，推荐两个国内外皆可用的源：

> [https://gravatar.zeruns.tech/avatar/](https://gravatar.zeruns.tech/avatar/?ref=nigzu.com)  
> [https://use.sevencdn.com/avatar/](https://use.sevencdn.com/avatar/?ref=nigzu.com)

示例（替换url前缀）：

```json
"gravatar": {
	"url": "https://use.sevencdn.com/avatar/{hash}?s={size}&r={rating}&d={_default}"
},

```

### 管理面板的域

假设主站url是：`https://content_domain`，管理面板的默认路径是后面加上`/ghost/`。为管理面板指定不同域的配置：

```json
"admin": {
  "url": "https://content_domain"
}

```

访问`https://content_domain/ghost/`将自动重定向到`https://admin_domain/ghost/`。官方文档中未说明的是：若想禁止重定向，无法通过路由`routes.yaml`和重定向`redirects.json`设置做到这一点，只能在自定义配置中增加一个字段：

```json
"admin": {
	"url": "https://admin_domain",
	"redirects": false
}

```

不过此方法并不能隐藏网站后端，假设这么一种需求：

给博客上加了 CDN，这可以保护源站，另一方面又希望管理员绕过 CDN 直接在源站管理后台，通过分别设置管理端域名是无法实现的，因为Ghost Core 定义了 Content 和 Admin 两套 API，它们的 Base URL同样都是`https://{admin_domain}/ghost/api/`，而访问主站会向 Content API请求数据，也就是说会暴露管理端的域名和背后的 IP。如果不进行管理端的域名配置，而另外从反向代理的地址访问管理面板，又会有CORS（跨域请求资源限制） 的问题，其中*预检请求发生了重定向*错误意味着只能修改源码。

我不知道Ghost这么设计的意义，如果不需要切换主题和修改样式，那么其实也不需要单独配置管理端的url，只需要另外用一个域名+端口反向代理到ghost，然后防火墙设置这个端口只允许局域网和某个范围的外网IP（例如自己家里和办公地点的IP子网）可以访问，然后就可以通过该域名+端口进管理端，写作和发布文章和进行一些不涉及跨域的其他设置是没有问题的，这不会暴露内容前端的源站。

---

> Ghost是一套开源的（博客）建站平台，这是一个持续更新的系列，用来列举一些[官方文档](https://ghost.org/docs/introduction/?ref=nigzu.com)和公开网络上尚未详细说明的问题与解决办法，您可以用标签 [#Ghost](https://nigzu.com/tag/ghost-tag/) 或搜索找到所有相关的文章。