配置文件
GoPress 使用 TOML 作为配置格式。每个站点一份独立的 config.toml,多站点可共享数据库(通过表前缀隔离)。
完整示例
[site]
name = "My Website"
url = "https://example.com"
language = "zh"
timezone = "Asia/Shanghai"
theme = "modern-company"
[server]
host = "0.0.0.0"
port = 8080
mode = "debug" # debug / release
[pg]
user = "postgres"
password = "postgres"
hostname = "localhost"
port = "5432"
database = "my_website"
schema = "public"
table_prefix = "gp_" # 表前缀(类 WordPress wp_)
max_open_conns = 20
max_idle_conns = 10
conn_max_lifetime = "30m"
[redis]
host = "localhost"
port = 6379
password = ""
db = 0
[cms]
jwt_secret = "your-secret-key"
jwt_expire_hours = 24
upload_dir = "uploads"
upload_max_size_mb = 10 # 单文件上传上限;JPEG/PNG 上传后会自动生成响应式变体
[mail]
driver = "go-mail"
enabled = false
host = "smtp.example.com"
port = 587
encryption = "starttls" # starttls / ssl / none
username = "smtp-user"
mail_key = "smtp-password-or-app-key"
from_email = "no-reply@example.com"
from_name = "My Website"
reply_to = ""
timeout_seconds = 10
[install]
completed = true
关键字段说明
[site]
name/url— 给 SEOBuilder 的静态 baseline;admin「系统设置 > 网站设置」中的site_name/site_description会在运行时覆盖渲染层(详见 SEO 接入规范)language— 默认语言代码(如zh、en),影响 i18n 默认 fallback 和多语言插件的默认语言timezone— 站点时区,使用 IANA 时区名(如Asia/Shanghai、America/New_York)或Local。后台发布时间输入会按该时区解析后以 UTC 存储,前台和后台展示再转回该时区。老站点没有该字段时会兼容回退到服务器本地时区;建议在「系统设置 > 网站设置」里保存一次明确值。theme— 启动时激活的主题 slug
[pg]
table_prefix— 类似 WordPress 的wp_,多个 GoPress 实例可共享同一数据库,靠前缀隔离。详见 数据库表前缀- 连接池参数 (
max_open_conns等) 影响并发性能上限,生产环境建议根据 PG 实例规格调整
[redis]
可选段。完全删除或留空,引擎自动降级为纯内存 LRU(L1 缓存)。
[cms]
jwt_secret— 生产环境必须替换,泄露后等于把后台和 API 钥匙交给攻击者upload_dir— 上传根目录,子目录按年月组织(uploads/2026/04/...)
[mail]
邮件发送配置是站点级配置,后台「邮件设置」页会写入当前站点的 config.toml。配置文件由安装器和 config.Save() 以 0600 权限保存,mail_key 不会在后台表单中回显。
enabled— SMTP 总开关。关闭时通知规则仍保存,但不会投递邮件driver— SMTP 发信驱动,默认go-mail;可切换为stdlib使用 Go 标准库 SMTP 分支host/port/encryption— SMTP 服务器、端口和加密方式。encryption支持starttls、ssl、noneusername/mail_key— SMTP 登录凭据;mail_key建议填写邮箱服务商提供的 app password 或 API keyfrom_email/from_name— 默认发件人reply_to— 默认 Reply-To。联系留言通知会优先使用留言人的邮箱作为 Reply-Totimeout_seconds— SMTP 连接超时
Gmail 常用配置:host = "smtp.gmail.com"、port = 587、encryption = "starttls",username 和 from_email 都填写 Gmail 地址,mail_key 填 Google 生成的 App Password,不要填 Google 账号登录密码。
多站点配置
sites/ 下每个子目录代表一个站点:
sites/
├── localhost/
│ ├── config.toml
│ └── public/ # 站点级生成物,如 sitemap.xml
├── staging.gopress.xyz/config.toml
└── prod.gopress.xyz/config.toml
启动时通过 -config <path> 指定具体哪个生效。多站点可指向同一 PG 实例不同 database 或同一 database 不同 table_prefix。
后台生成的 sitemap.xml 会写入当前站点目录下的 public/,例如 sites/prod.gopress.xyz/public/sitemap.xml。后续 robots.txt、llms.txt 等站点级公开生成物也应放在同一目录,避免多个站点共享应用根目录时互相覆盖。
