#短信 架构 gotify-android-client + gotify-server + mysql + docker
- mysql 做数据储存
- 借助 docker 来部署
mysql
从 ubuntu 软件仓库安装, 之后更改密码, 新建用户, 授权远程访问权限
安装
sudo apt upgrade
sudo apt install mysql-server
root 密码 & 授权
新安装的 mysql 默认使用 auth_socket
来进行授权访问, 在本机无需密码就可以登录 root 用户。
#也可以把root改成密码登录,这里默认不做改变
#新建用户
mysql
#进入到mysql prompt
create user 'yuxia'@'%' identified with caching_sha2_password by 'password';
grant all on *.* to 'yuxia'@'%';
#如用户已经存在但是无法远程访问
use mysql;
update user set host='%' where user='yuxia';
为了提高安全性, 应该收窄给予 yuxia 的权限, 即限定操作对象为 gotify 数据库。这里选择数据库名为 gotify, 后面写 docker 配置文件时应该要注意要一致。基于上述分析,可做如下优化
create databases gotify;
grant all on gotify.* to 'yuxia'@'%';
docker
按照官网给出的方法安装 docker
获取 gotify/server 镜像
推荐从 docker hub 获取
sudo docker pull gotify/server:latest
编写 bash 脚本
gotify 在 docker 上的部署可能不会一次就成功, 为了免去反复输入同样的命令的麻烦, 编写一个脚本是一个值得考虑的手段。
#!/bin/bash
# file name start
function restart() {
stop
sudo docker compose up -d
}
function stop() {
id=`sudo docker ps|awk 'FNR!=1 {print $1}'`
if [ -z "$id" ];then
echo no docker image loaded
else
sudo docker kill $id
echo killed
fi
}
function showlogs(){
id=`sudo docker ps|awk 'FNR!=1 {print $1}'`
if [ -z "$id" ];then
echo no docker image loaded
else
sudo docker logs $id
fi
}
opts=$1
case $opts in
start)
sudo docker compose up -d
echo sucess
;;
stop)
stop
;;
restart)
restart
;;
showlogs)
showlogs
;;
*)
echo "Usage: ./start command"
echo -e "\n"
echo -e "command\t\tmeaning"
echo -e "start\t\tlist start gofify"
echo -e "stop\t\tstop"
echo -e "restart\t\trestart"
echo -e "showlogs\tshotlogs"
echo -e "\n"
;;
esac
授予执行的权利 chmod u+x start
配置文件
#todo 需要对 https 支持
version: "3"
services:
gotify:
image: gotify/server:latest
container_name: gotify
restart: always
network_mode: bridge
ports:
- 3000:80
environment:
- TZ=Asia/Shanghai
- GOTIFY_SERVER_PORT=80
- GOTIFY_SERVER_KEEPALIVEPERIODSECONDS=0
- GOTIFY_SERVER_LISTENADDR=
- GOTIFY_SERVER_SSL_ENABLED=false
- GOTIFY_SERVER_SSL_REDIRECTTOHTTPS=true
- GOTIFY_SERVER_SSL_LISTENADDR=
- GOTIFY_SERVER_SSL_PORT=443
- GOTIFY_SERVER_SSL_CERTFILE=
- GOTIFY_SERVER_SSL_CERTKEY=
- GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED=false
- GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS=false
- GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE=data/certs
- GOTIFY_SERVER_STREAM_PINGPERIODSECONDS=45
- GOTIFY_DATABASE_DIALECT= mysql
- GOTIFY_DATABASE_CONNECTION=yuxia:yuxia@tcp(182.61.23.170:3306)/gotify?charset=utf8&parseTime=True&loc=Local
- GOTIFY_DEFAULTUSER_NAME=yuxia
- GOTIFY_DEFAULTUSER_PASS=yuxia
- GOTIFY_PASSSTRENGTH=10
- GOTIFY_UPLOADEDIMAGESDIR=data/images
- GOTIFY_PLUGINSDIR=data/plugins
- GOTIFY_REGISTRATION=yes
volumes:
- "/var/gotify/data:/app/data "
本文中没有配置 https 相关的内容, 你也可以参看官方文档来加上。https://gotify.net/docs/config
主要配置了
- volumes docker 内文件映射到 host 的位置
- ports docker 内 gotify 端口为 80, 映射到 host 端口为 3000
- 数据库的配置
- 默认用户和密码
- 是否开启注册用户
运行
#开启运行
./start starwt
#停止
./start stop
#重启
./start restart
#展示日志
./start showlogs
运行后, 需要去查看日志, 没报错就可以复制网址到浏览器中打开, 本文更改了端口, 切记要带上。
gotify 使用
使用默认用户和密码登录上去以后, 可以把密码改了, 然后添加一个用户。接着添加一个 app, 复制 token , 按照官方文档来测试, 没有问题添加就可愉快使用。https://gotify.net/docs/pushmsg