mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-25 13:16:40 +00:00
139 lines
6 KiB
Markdown
139 lines
6 KiB
Markdown
|
# 配置概述
|
|||
|
|
|||
|
GoToSocial 力求尽可能让所有属性可配置,以适应多种不同的使用场景。
|
|||
|
|
|||
|
我们尽量提供合理的默认值,但在运行 GoToSocial 实例时,你需要进行*一些*配置管理。
|
|||
|
|
|||
|
## 配置方法
|
|||
|
|
|||
|
配置 GoToSocial 实例有三种不同的方法,这些方法可以根据你的设置进行组合。
|
|||
|
|
|||
|
### 配置文件
|
|||
|
|
|||
|
配置 GoToSocial 最简单的方法是将配置文件传递给 `gotosocial server start` 命令,例如:
|
|||
|
|
|||
|
```bash
|
|||
|
gotosocial --config-path ./config.yaml server start
|
|||
|
```
|
|||
|
|
|||
|
该命令需要一个 [YAML](https://en.wikipedia.org/wiki/YAML) 或 [JSON](https://en.wikipedia.org/wiki/JSON) 格式的文件。
|
|||
|
|
|||
|
可以在[这里](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml)找到示例配置文件,其中包含每个配置字段的解释、默认值和示例值。此示例文件也包含在每个发行版的下载资源中。
|
|||
|
|
|||
|
建议创建你自己的配置文件,只更改你需要改变的设置。这可以确保在每次发布时,你不必合并默认值的更改或者增删未从默认值更改的配置设置。
|
|||
|
|
|||
|
#### 在容器中挂载
|
|||
|
|
|||
|
你可能需要在容器中挂载一个 `config.yaml`,因为某些设置不容易通过环境变量或命令行标志管理。
|
|||
|
|
|||
|
为此,请在主机上创建一个 `config.yaml`,将其挂载到容器中,然后告诉 GoToSocial 读取该配置文件。可以通过将容器的运行命令设置为 `--config-path /path/inside/container/to/config.yaml` 或使用 `GTS_CONFIG_PATH` 环境变量来实现这一点。
|
|||
|
|
|||
|
对于 docker compose,可以这样修改配置:
|
|||
|
|
|||
|
```yaml
|
|||
|
services:
|
|||
|
gotosocial:
|
|||
|
command: ["--config-path", "/gotosocial/config.yaml"]
|
|||
|
volumes:
|
|||
|
- type: bind
|
|||
|
source: /path/on/the/host/to/config.yaml
|
|||
|
target: /gotosocial/config.yaml
|
|||
|
read_only: true
|
|||
|
```
|
|||
|
|
|||
|
或者,通过环境变量来修改配置:
|
|||
|
|
|||
|
```yaml
|
|||
|
services:
|
|||
|
gotosocial:
|
|||
|
environment:
|
|||
|
GTS_CONFIG_PATH: /gotosocial/config.yaml
|
|||
|
volumes:
|
|||
|
- type: bind
|
|||
|
source: /path/on/the/host/to/config.yaml
|
|||
|
target: /gotosocial/config.yaml
|
|||
|
read_only: true
|
|||
|
```
|
|||
|
|
|||
|
对于 Docker 或 Podman 命令行,需要传递一个 [符合规范的挂载参数](https://docs.podman.io/en/latest/markdown/podman-run.1.html#mount-type-type-type-specific-option)。
|
|||
|
|
|||
|
在使用 `docker run` 或 `podman run` 时,传递 `--config-path /gotosocial/config.yaml` 作为命令,例如:
|
|||
|
|
|||
|
```sh
|
|||
|
podman run \
|
|||
|
--mount type=bind,source=/path/on/the/host/to/config.yaml,destination=/gotosocial/config.yaml,readonly \
|
|||
|
docker.io/superseriousbusiness/gotosocial:latest \
|
|||
|
--config-path /gotosocial/config.yaml
|
|||
|
```
|
|||
|
|
|||
|
使用 `GTS_CONFIG_PATH` 环境变量:
|
|||
|
|
|||
|
```sh
|
|||
|
podman run \
|
|||
|
--mount type=bind,source=/path/on/the/host/to/config.yaml,destination=/gotosocial/config.yaml,readonly \
|
|||
|
--env 'GTS_CONFIG_PATH=/gotosocial/config.yaml' \
|
|||
|
docker.io/superseriousbusiness/gotosocial:latest
|
|||
|
```
|
|||
|
|
|||
|
### 环境变量
|
|||
|
|
|||
|
你也可以通过设置[环境变量](https://en.wikipedia.org/wiki/Environment_variable)来配置 GoToSocial。这些环境变量遵循的格式为:
|
|||
|
|
|||
|
1. 在配置标志前加上 `GTS_`。
|
|||
|
2. 全部使用大写。
|
|||
|
3. 将短横线(`-`)替换为下划线(`_`)。
|
|||
|
|
|||
|
例如,如果不想在 config.yaml 中设置 `media-image-max-size` 为 `2097152`,你可以改为设置环境变量:
|
|||
|
|
|||
|
```text
|
|||
|
GTS_MEDIA_IMAGE_MAX_SIZE=2097152
|
|||
|
```
|
|||
|
|
|||
|
如果对于环境变量名称有疑问,只需查看你正在使用的子命令的 `--help`。
|
|||
|
|
|||
|
### 命令行标志
|
|||
|
|
|||
|
最后,你可以使用命令行标志来设置配置值,这些标志是在运行 `gotosocial` 命令时直接传递的。例如,不在 config.yaml 或环境变量中设置 `media-image-max-size`,你可以直接通过命令行传递值:
|
|||
|
|
|||
|
```bash
|
|||
|
gotosocial server start --media-image-max-size 2097152
|
|||
|
```
|
|||
|
|
|||
|
如果不确定哪些标志可用,请检查 `gotosocial --help`。
|
|||
|
|
|||
|
## 优先级
|
|||
|
|
|||
|
上述配置方法按列出的顺序相互覆盖。
|
|||
|
|
|||
|
```text
|
|||
|
命令行标志 > 环境变量 > 配置文件
|
|||
|
```
|
|||
|
|
|||
|
也就是说,如果你在配置文件中将 `media-image-max-size` 设置为 `2097152`,但*也*设置了环境变量 `GTS_MEDIA_MAX_IMAGE_SIZE=9999999`,则最终值将为 `9999999`,因为环境变量比 config.yaml 中设置的值具有*更高的优先级*。
|
|||
|
|
|||
|
命令行标志具有最高优先级,因此如果你设置了 `--media-image-max-size 13121312`,无论你在其他地方设置了什么,最终值都将为 `13121312`。
|
|||
|
|
|||
|
这意味着在你只想尝试改变一件事,但不想编辑配置文件的情况下,可以临时使用环境变量或命令行标志来设置那个东西。
|
|||
|
|
|||
|
## 默认值
|
|||
|
|
|||
|
*大多数*配置参数都提供了合理的默认值,除了必须自定义值的情况。
|
|||
|
|
|||
|
请查看[示例配置文件](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml)以获取默认值,或运行 `gotosocial --help`。
|
|||
|
|
|||
|
## `GTS_WAZERO_COMPILATION_CACHE`
|
|||
|
|
|||
|
启动时,GoToSocial 会将嵌入的 WebAssembly `ffmpeg` 和 `ffprobe` 二进制文件编译为 [Wazero](https://wazero.io/) 兼容模块,这些模块用于媒体处理,无需任何外部依赖。
|
|||
|
|
|||
|
为了加快 GoToSocial 的启动时间,你可以在首次启动时缓存已编译的模块,这样 GoToSocial 就不必在每次启动时从头开始编译它们。
|
|||
|
|
|||
|
你可以通过将环境变量 `GTS_WAZERO_COMPILATION_CACHE` 设置为一个目录来指示 GoToSocial 存储 Wazero 工件,该目录将由 GtS 用于存储两个大小约为 ~50MiB 的小型工件(总计约 ~100MiB)。
|
|||
|
|
|||
|
要了解此方法的示例,请参见 [docker-compose.yaml](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml) 和 [gotosocial.service](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/gotosocial.service) 示例文件。
|
|||
|
|
|||
|
如果你希望在 systemd 或 Docker 之外为 GtS 提供此值,可以在启动 GtS 服务器时通过以下方式进行:
|
|||
|
|
|||
|
```bash
|
|||
|
GTS_WAZERO_COMPILATION_CACHE=~/gotosocial/.cache ./gotosocial --config-path ./config.yaml server start
|
|||
|
```
|