Bark
Bark is an iOS App which allows you to push customed notifications to your iPhone.
Table of Contents
Installation
For Docker User
The docker image is already available, you can use the following command to run the bark server:
docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
If you use the docker-compose tool, you can copy docker-copose.yaml under this project to any directory and run it:
mkdir bark-server && cd bark-server
curl -sL https://git.io/JvSRl > docker-compose.yaml
docker-compose up -d
For General User
- 1、Download precompiled binaries from the releases page
- 2、Add executable permissions to the bark-server binary:
chmod +x bark-server
- 3、Start bark-server:
./bark-server --addr 0.0.0.0:8080 --data ./bark-data
- 4、Test the server:
curl localhost:8080/ping
Note: Bark-server uses the /data
directory to store data by default. Make sure that bark-server has permission to write to the /data
directory, otherwise use the -d
option to change the directory.
For Developer
Developers can compile this project by themselves, and the dependencies required for compilation:
- Golang 1.18+
- Go Mod Enabled(env
GO111MODULE=on
) - Go Mod Proxy Enabled(env
GOPROXY=https://goproxy.cn
) - go-task Installed
Run the following command to compile this project:
task
task linux_amd64
task linux_amd64_v3
Note: The linux amd64 v3 architecture was added in go 1.18, see https://github.com/golang/go/wiki/MinimumRequirements#amd64
Nginx Proxy
Most users want to deploy the bark server on the intranet server, and then use Nginx to reverse proxy the bark server;
here is a simple Nginx configuration example (we assume that the bark server is listening at 192.168.1.123:8080
)
server {
listen 80;
listen [::]:80;
server_name bark.app.dev;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bark.app.dev;
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
location / {
log_not_found on;
proxy_pass http://192.168.1.123:8080;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
Use MySQL instead of Bbolt
Just run the server with -dsn=user:pass@tcp(mysql_host)/bark
, it will use MySQL instead of file database Bbolt
API V2
Please read API_V2.md.
Other
中文:
Markdown support:
Contributing to bark-server
Development environment
This project requires at least the golang 1.12 version to compile and requires Go mod support.
- Golang 1.16
- GoLand 2020.3 or other Go IDE
- Docker(Optional)
Update
Now the push certificate embedded in the program will never expire. You only need to update the program if the push fails due to the expired certificate.