字
字节笔记本
2026年2月23日
bark-server-docker:一键部署 Bark 消息推送服务器
本文介绍 bark-server-docker,一个用于快速部署 Bark 和 Chanify 消息推送服务器的 Docker Compose 项目。该项目集成了 nginx 反向代理和 acme.sh 自动证书管理,帮助用户轻松搭建安全的私有消息推送服务。
项目简介
bark-server-docker 是一个开源的 Docker Compose 配置项目,由 Bruce Xie 开发维护。该项目在 GitHub 上获得 15 stars,主要用于解决以下场景:
- 自动转发安卓短信到 iPhone:配合 Bark App 实现跨平台消息推送
- 自建消息推送服务器:替代第三方推送服务,保护隐私
- 支持双服务部署:同时部署 Bark 和 Chanify 两个推送服务
核心特性
- 一键部署:使用 Docker Compose 快速启动所有服务
- HTTPS 支持:集成 nginx 反向代理,支持 SSL/TLS 加密
- 自动证书管理:内置 acme.sh,支持 Let's Encrypt 证书自动申请和续期
- 双服务支持:同时支持 Bark 和 Chanify 两个推送服务
- 灵活配置:支持 DNS-01 和 HTTP-01 两种证书申请方式
技术架构
本项目集成了四个核心容器:
| 容器 | 功能 | 端口 |
|---|---|---|
| bark-server | Bark 消息推送服务器 | 8080 |
| chanify | Chanify 消息推送服务器 | 8081 |
| nginx | 反向代理 + HTTPS 支持 | 80/443 |
| acme.sh | 证书申请和自动续期 | - |
工作原理:nginx 承接 HTTPS(443端口)流量,并转发给 bark-server(8080) 和 chanify(8081),实现加密通信。
环境准备
前置要求
- 一台 Linux 服务器(推荐国外服务器免备案)
- 一个域名(如 zhangsan.com)
- 解析两个三级域名到服务器 IP:
- bark.zhangsan.com(用于 Bark)
- chanify.zhangsan.com(用于 Chanify)
安装 Docker
请参考 Docker 官方文档 安装 Docker Engine。
下载项目
bash
cd /root/
git clone https://github.com/xiebruce/bark-server-docker.git快速开始
1. 修改 Docker Compose 配置
编辑 docker-compose.yml,根据需求启用/禁用服务:
yaml
# 默认启用 bark-server
bark-server:
image: finab/bark-server:latest
container_name: bark-server
# ...
# 如需禁用 chanify,注释掉以下部分
# chanify:
# image: wizjin/chanify:dev
# ...2. 配置 nginx
bash
cd bark-server-docker/conf/nginx/vhost
# 复制配置文件模板
cp bark.example.com-80.conf.bak bark.zhangsan.com-80.conf
cp bark.example.com.conf.bak bark.zhangsan.com.conf.bak
# 修改配置文件中的域名
# 将 example.com 替换为你的真实域名3. 申请 HTTPS 证书
方式一:DNS-01 方式(推荐)
适用于非免费域名(.cf/.ml/.tk/.ga/.gq 除外):
bash
# 添加 Cloudflare 环境变量
cat > ~/.bashrc << EOF
export CF_Email=your-email@example.com
export CF_Key=your-cloudflare-api-key
EOF
source ~/.bashrc
# 启动容器
cd bark-server-docker
docker compose up -d
# 进入 acme.sh 容器
docker exec -it acme.sh sh
# 申请证书
acme.sh --issue --dns dns_cf -d zhangsan.com -d '*.zhangsan.com' --keylength ec-256
# 安装证书
acme.sh --install-cert --ecc --home /root/acmeout -d 'zhangsan.com' \
--key-file /root/certs/private.pem \
--fullchain-file /root/certs/fullchain.pem \
--reloadcmd "docker restart nginx"方式二:HTTP-01 方式
适用于所有域名,但不支持通配符证书:
bash
# 启动容器
docker compose up -d
# 进入 acme.sh 容器
docker exec -it acme.sh sh
# 申请证书
acme.sh --issue -d zhangsan.com -d bark.zhangsan.com \
--webroot /data/wwwroot/well-known/ \
--home /root/acmeout --keylength ec-2564. 启用 HTTPS 配置
bash
# 启用 443 端口配置
mv bark.zhangsan.com.conf.bak bark.zhangsan.com.conf
# 重启 nginx
docker restart nginx5. 测试连通性
bash
# 测试 Bark 服务
curl https://bark.zhangsan.com/ping
# 预期输出
{"code":200,"message":"pong","timestamp":1668248534}使用示例
发送推送通知
bash
# Bark 推送测试
curl "https://bark.zhangsan.com/<token>/测试标题/测试内容"
# 支持换行(%0a 表示换行)
curl "https://bark.zhangsan.com/<token>/标题/第一行%0a第二行%0a第三行"配置 Chanify
编辑 conf/chanify/chanify.yml:
yaml
server:
host: 127.0.0.1
port: 8081
endpoint: https://chanify.zhangsan.com
name: "自定义节点名称"
datapath: /data/
register:
enable: false
whitelist:
- YOUR_USER_ID自动更新证书
acme.sh 容器内置 crontab,每天凌晨 3:07 自动检查证书有效期:
7 3 * * * /root/.acme.sh/acme.sh --cron --home /root/acmeout
证书到期时会自动更新,并重启 nginx 加载新证书。
项目链接
- GitHub 仓库:https://github.com/xiebruce/bark-server-docker
- Bark 项目:https://github.com/Finb/Bark
- Chanify 项目:https://github.com/chanify/chanify
- acme.sh 文档:https://github.com/acmesh-official/acme.sh
注意事项
- 端口占用:确保 80、443、8080、8081 端口未被占用
- 域名解析:申请证书前确保域名已正确解析到服务器
- 防火墙设置:开放 80 和 443 端口
- 备份证书:建议定期备份
certs/目录下的证书文件
分享: