# 使用 systemd 后台值守运行 Bark

- Link: https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/
- Published: 2021-09-21T11:06:47+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#)

 * [什么是 Bark？](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#%e4%bb%80%e4%b9%88%e6%98%af_bark%ef%bc%9f)
 * [Bark 如何部署？](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#bark_%e5%a6%82%e4%bd%95%e9%83%a8%e7%bd%b2%ef%bc%9f)
 * [使用 Systemd 进行值守](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#%e4%bd%bf%e7%94%a8_systemd_%e8%bf%9b%e8%a1%8c%e5%80%bc%e5%ae%88)
    - [1. 将 bark server 移动到一个固定目录](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#1_%e5%b0%86_bark_server_%e7%a7%bb%e5%8a%a8%e5%88%b0%e4%b8%80%e4%b8%aa%e5%9b%ba%e5%ae%9a%e7%9b%ae%e5%bd%95)
    - [2. 创建 Bark Service](https://www.ixiqin.com/2021/09/21/using-systemd-background-unattended-operation-bark/#2_%e5%88%9b%e5%bb%ba_bark_service)

## 什么是 Bark？

Bark 是由 Fin 开源的一个向 iOS 设备推送通知的服务，Bark 支持自行部署服务端，从而
实现消息的推送通过自己的服务器进行，避免与官方的服务共享，提升推送时效。

服务端源码：[Finb/bark-server: Backend of Bark (github.com)](https://github.com/Finb/bark-server)

客户端源码：[Finb/Bark: Bark is an iOS App which allows you to push customed notifications to your iPhone (github.com)](https://github.com/Finb/bark)

## Bark 如何部署？

Bark 的部署非常简单，直接下载官方的 release 文件即可。

下载完成后，你可以执行如下命令来进行测试

    ```shcb-line-numbers
    bark-server -addr 0.0.0.0:8080 -data ./bark-data
    ```

执行成功后，你会看到如下的界面，此时你可以访问 `127.0.0.1/ping` 来验证你的 Bark 
的部署

![](https://postimg.aliavv.com/mbp2021/1jj0p.png)

## 使用 Systemd 进行值守

验证成功后，接下来就可以设定值守运行了

### 1. 将 bark server 移动到一个固定目录

首先，你需要将 bark server 移动到一个固定的目录，方便后续执行。

    ```shcb-line-numbers
    mv bark-server /usr/local/sbin/bark-server
    ```

### 2. 创建 Bark Service

创建 `/etc/systemd/system/bark.service` 文件，并添加如下内容

    ```javascript
    [Unit]
    Description=Bark Server
    [Service]
    ExecStart=/usr/local/sbin/bark-server -addr 0.0.0.0:8080 -data /usr/local/bark-data
    [Install]
    WantedBy=multi-user.target
    Code language: JavaScript (javascript)
    ```

创建完成后，你可以执行 `systemctl status bark` 来查看 bark server 的状态。

![](https://postimg.aliavv.com/mbp2021/7jwil.png)

然后，你就可以使用 `systemctl` 来控制bark 了

 * 启动服务 `systemctl start bark`
 * 停止服务 `systemctl stop bark`
 * 查看服务状态 `systemctl status bark`
