字节笔记本

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-serverBark 消息推送服务器8080
chanifyChanify 消息推送服务器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-256

4. 启用 HTTPS 配置

bash
# 启用 443 端口配置
mv bark.zhangsan.com.conf.bak bark.zhangsan.com.conf

# 重启 nginx
docker restart nginx

5. 测试连通性

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 加载新证书。

项目链接

注意事项

  1. 端口占用:确保 80、443、8080、8081 端口未被占用
  2. 域名解析:申请证书前确保域名已正确解析到服务器
  3. 防火墙设置:开放 80 和 443 端口
  4. 备份证书:建议定期备份 certs/ 目录下的证书文件
分享: