原文:gitroomhq/postiz-docs · 2026-06-28
用 Postiz 排期发布内容
Postiz 是一个开源社交媒体排期工具,主项目截至 2026-07-18 为 33.4k Star。下面按官方文档完成一条可复现的路径:启动 Postiz、从界面连接渠道、创建内容、排期发布,再核对结果。
这次会完成什么
- 准备一台能运行 Docker 的电脑或服务器。
- 用官方 Docker Compose 仓库启动 Postiz。
- 打开 Postiz,完成首次登录。
- 先用无需额外环境变量的 Bluesky 跑通;需要服务器频道时,再按图接入 Discord。
- 用 Postiz CLI 创建一条草稿,检查后转为排期发布。
- 到 Discord 查看结果,再安排下一条内容。
1. 准备 Docker 环境
先安装 Docker 与 Docker Compose。官方文档验证过的最低参考环境是:
- Ubuntu 24.04
- 2 GB 内存
- 2 vCPU
本地体验可以直接使用 http://localhost:4007。正式部署需要 HTTPS,可在 Caddy 或 Nginx 后面运行 Postiz。
容器内部只需要把 5000/tcp 接给反向代理。前端 4200、API 3000、PostgreSQL 5432 和 Redis 6379 不要直接暴露到公网。
如果只是本地测试且没有 HTTPS,可临时设置 NOT_SECURED=true;它会关闭安全 Cookie 要求,不要用于正式环境。
2. 用 Docker Compose 启动 Postiz
官方文档要求从专用仓库取得最新 Compose 文件,不要从教程复制一份可能过期的快照。
bash
git clone https://github.com/gitroomhq/postiz-docker-compose
cd postiz-docker-compose打开仓库里的 docker-compose.yaml,按文件注释检查环境变量,并把示例 JWT_SECRET 换成自己的随机长字符串。后面连接 Discord 时,还会回到这里加入三个 Discord 变量。
启动全部服务:
bash
docker compose up第一次启动要拉取镜像并初始化数据库。终端没有继续报错后,打开:
- Postiz:
http://localhost:4007 - Temporal 工作流界面:
http://localhost:8080
如果页面打不开,先看 docker compose up 的终端日志。修改环境变量后必须重建容器:
bash
docker compose down
docker compose up3. 打开界面并登录
浏览器进入 http://localhost:4007,按页面提示完成首次账号创建并登录。接下来会同时用到两个页面:
- Postiz:连接频道、生成 API Key。
- 渠道账号:最快可直接连接 Bluesky;连接 Discord 时才需要打开 Discord Developer Portal。
不要把社交账号密码、Discord Client Secret、Bot Token 或 Postiz API Key 发给任何人,也不要放进公开仓库。
4. 连接第一个发布渠道
4.1 最快跑通:Bluesky
Bluesky 不需要给 Postiz 增加环境变量。回到 Postiz,点击 Add Channel,选择 Bluesky,然后填写服务地址、账号标识和密码。

提交后应直接回到 Postiz,并能开始发布。只想先完成一次排期发布时,可以跳到第 5 步。
4.2 需要服务器频道:Discord
你需要拥有目标 Discord 服务器的 Manage Server 权限。
4.2.1 创建 Discord 应用
登录 Discord Developer Portal,点击 New Application,填写名称并创建。

4.2.2 添加应用图标
进入应用设置,上传一个不超过 1024 × 1024 px 的图标并保存。官方文档特别说明:没有图标时,在 Postiz 添加 Discord 频道可能出现 404。
![]()
4.2.3 复制 OAuth2 凭据
进入 OAuth2,复制 Client ID 与 Client Secret。

在 docker-compose.yaml 的 Postiz 环境变量中加入:
bash
DISCORD_CLIENT_ID="your_client_id"
DISCORD_CLIENT_SECRET="your_client_secret"把两个占位值换成刚复制的真实值。
4.2.4 添加 OAuth2 回调地址
Discord 回调地址必须等于:
text
FRONTEND_URL + /integrations/social/discord按本教程的默认地址填写:
text
http://localhost:4007/integrations/social/discord正式部署时,把前半段换成自己的 HTTPS 域名,并确保与 Postiz 的 FRONTEND_URL 完全一致。

4.2.5 创建 Bot
在 Discord 应用左侧进入 Bot,填写机器人信息,点击 Reset Token 生成 Bot Token。
把 Token 加到同一个 docker-compose.yaml:
bash
DISCORD_BOT_TOKEN_ID="your_bot_token"然后重建容器,让三个 Discord 变量生效:
bash
docker compose down
docker compose up4.2.6 在 Postiz 添加频道
回到 Postiz,点击 Add Channel,选择 Discord。浏览器会跳到 Discord 登录与授权页;选择你有管理权限的服务器并完成授权。
授权完成后,Discord 会出现在 Postiz 的频道列表里。
5. 安装 CLI 并连接自建 Postiz
官方 CLI 能把“创建草稿—检查—转为排期—查看状态”完整跑通。
bash
npm install -g postiz
postiz --help在 Postiz 的 Settings 页面创建 API Key,然后只在当前终端设置:
bash
export POSTIZ_API_KEY="your_api_key_here"
export POSTIZ_API_URL="http://localhost:4007"列出已连接的渠道:
bash
postiz integrations:list命令会返回 JSON。找到刚才接入的渠道,复制它的 id。如果先用 Bluesky 跑通,可以直接取出:
bash
PUBLISH_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="bluesky") | .id')
postiz integrations:settings "$PUBLISH_ID"如果选择 Discord,把筛选值改成 discord。第二条命令会列出当前渠道可用的发布设置;Bluesky 不需要额外设置,Discord 需要记下 channel-id。
6. 创建第一条排期内容
先创建草稿,避免未经检查就进入发布队列。把时间改成未来的 UTC 时间:
bash
postiz posts:create \
-c "本周产品更新:新版本已经上线。" \
-s "YYYY-MM-DDTHH:mm:ssZ" \
-t draft \
-i "$PUBLISH_ID"发布到 Discord 时,用完整命令带上频道设置:
bash
postiz posts:create \
-c "本周产品更新:新版本已经上线。" \
-s "YYYY-MM-DDTHH:mm:ssZ" \
-t draft \
--settings '{"channel":"channel-id"}' \
-i "$PUBLISH_ID"-s 必须是 ISO 8601 时间,例如 2026-07-21T10:00:00Z。命令返回 JSON 后,保存其中的帖子 ID。
查看草稿是否已经进入 Postiz:
bash
postiz posts:list确认内容、时间和频道都正确后,把草稿转入排期队列:
bash
postiz posts:status <post-id> --status schedule如果发布前要暂停,再改回草稿:
bash
postiz posts:status <post-id> --status draft官方文档说明,转回 draft 会终止正在运行的发布工作流,帖子不会按原计划发布。
7. 查看结果并继续排期
先用下面的命令核对 Postiz 里的记录:
bash
postiz posts:list到排期时间后,再打开目标 Bluesky 账号或 Discord 频道,确认内容已经出现。这一步才是发布成功的最终核对。
继续排期时,重复 posts:create,换一段内容与下一个未来时间即可。要同时安排多条内容,就为每条内容分别设置不同的 -s 时间,再用 posts:list 统一核对。
出错时检查这 6 项
docker compose up日志里是否有启动错误。- 修改变量后是否执行了
docker compose down再up。 integrations:list返回的渠道 ID 是否与-i一致。- 使用 Discord 时,回调地址是否与
FRONTEND_URL完全一致。 - Discord 应用是否已经上传图标,三个凭据是否都已填写。
- 当前 Discord 账号是否有目标服务器的 Manage Server 权限。
本文所用文档和截图按 MIT License 收录。