gosignal
本项目是端对端加密聊天软件 Signal 服务端 Signal-Server 使用 Golang 语言的实现,完全兼容 Signal 客户端现有协议,并且保持同步更新。相较于 Java 版本的 Signal-Server,本项目替换相关 AWS 服务依赖为开源软件,自由可控,部署更加简单方便。另外新增了非端对端加密、支持数万人群聊的 Channel 功能,以满足用户在不同场景下的聊天需求。
服务依赖
Nats
Redis
PostgreSQL
MinIO (非必须, 影响文件上传)
Cassandra (非必须, 影响Channel)
TurnServer (非必须, 影响语音视频)
强烈建议使用 Docker 快速搭建开发环境:
docker run --name signal_nats -d -p 4222:4222 -p 6222:6222 -p 8222:8222 nats
docker run --name signal_redis -d -p 6379:6379 redis
docker run --name signal_postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=${postgres_pwd} postgres
快速开始
编译
cd cmd/signal && go build
配置文件
服务配置模板文件(*.example)存放在 ./config 目录,配置文件需要根据模板生成,执行命令:
python init_config.py
也可以自行拷贝重命名去掉 .example 后缀,生成完毕后可以根据需求自行修改,配置文件不能上传到 git 服务器。
需要将配置文件夹 config 和 lua 文件夹 放到执行文件同一目录。
启动服务
./signal
生成文档
swag init -g swagger.go
go run swagger.go
Docker 部署
脚本 generate.py 用于快速生成 docker-compose.yml 文件,定义和运行 Signal Server 以及相关依赖服务的容器。生成后的相关文件存放在 docker 目录,可以将 docker 文件夹拷贝至生产服务器进行快速部署。
执行脚本前请预先安装 Python 环境以及 Docker,然后执行 pip install click 命令安装相关依赖。
生成
python generate.py
启动服务
cd docker/
./deploy_on_docker.sh
更新服务
首先将可执行文件拷贝到 docker//bin 目录进行替换,然后执行命令:
docker-compose restart server