#短信 架构 gotify-android-client + gotify-server + mysql + docker
- mysql 做数据储存
- 借助 docker 来部署
mysql
从 ubuntu 软件仓库安装, 之后更改密码, 新建用户, 授权远程访问权限
安装
sudo apt upgrade
sudo apt install mysql-serverroot 密码 & 授权
新安装的 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