基于 OICQ 的 Icalingua++ 中继,可以部署在自己的服务器上,服务器通过 OICQ 库与上级服务器通信,本地电脑与自己的服务器通信。这样可以实现一些原先无法实现的功能:
- 在电脑关闭时保持在线和消息同步
- 在多个地点同时使用一个帐号
- 通过创建不同实例同时登录多个账号
注意:
建议不要使用淘宝源,容易造成依赖丢失;你可以使用 nrm 命令快速地切换源,安装命令如下: npm i -g nrm
。
使用方法,例如:
nrm use npm
-
服务器需要安装 pnpm 和
ffmpeg
,选装 MongoDB / MySQL / MariaDB / PostgreSQL / Redis 作为默认数据库 SQLite 的替代 -
在项目根目录运行
pnpm install
安装必要依赖 -
进入目录 icalingua-bridge-oicq 中,运行
pnpm compile
(Windows 用户则运行pnpm compile:win
) 将 ts 转换为 js -
前往此页面点击按钮生成一组 ECC 密钥对,记录私钥和 ed 公钥备用
注意:
请不要使用自带的公钥
207a067892821e25d770f1fba0c47c11ff4b813e54162ece9eb839e076231ab6
;它对应的私钥为
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
。该密钥仅适用于本地环境及测试环境,暴露在公网中是非常危险的。
当然,如果你不信任在线服务,可以使用本地工具生成对应的密钥对。
-
修改
config.yaml
,内容如下:host: 0.0.0.0 # 监听地址。如果有反代工具,可以改成 localhost 或者 127.0.0.1 pubKey: # 上一步生成的公钥 custom: false # 自定义插件功能,默认禁用 port: 6789 # 如果需要运行多个实例,可以设置不同端口
-
执行
node build
,然后软件将监听在你设置的端口(默认6789
)。可以通过 HTTP(S) 反向代理的软件(如 Caddy , Nginx 等)将端口绑定到域名(虚拟主机)上,并安装 SSL 证书;或者直接暴露 HTTP 端口(不建议,因为这样的话流量将以未加密的方式传输), 关于反向代理的配置文件示例,可以参考仓库当前目录下的 nginx.example.conf。
-
服务器需要安装 pnpm 和
ffmpeg
命令,选装 MongoDB / MySQL / MariaDB / PostgreSQL / Redis 作为默认数据库 SQLite 的替代 -
从 GitHub Actions 中下载所需版本的
bridge-oicq
并解压 -
运行
pnpm install
安装必要依赖,同时自行补充缺失的依赖 -
转到常规步骤第四步
使用 Docker 部署是一件非常简单的事情,必要的依赖已经全部打包进去,仅仅需要一份 docker-compose.yml
以及一份 config.yaml
即可。
同时,修改 docker-compose.yml
中的 ports
, network
以及 container_name
即可快速地部署多个实例。
目前支持了 x86_64
和 arm64
两种架构的镜像。
注意:该 docker-compose.yml
提供的数据库是 MongoDB
,并对数据库文件进行了挂载,来实现持久化存储;
如果你需要使用其他数据库,可以自行参考 docker-compose.yml
的 db
部分修改,并持久化数据,即挂载数据库文件为数据卷(强烈建议,否则会出现数据库容器重建后丢失数据的问题);当然,你也可以删除 DB 部分,连接宿主机本身的数据库。
安装 Docker 和 Docker Compose(已有 Docker 环境略过)
curl -fsSL https://get.docker.com | bash -s docker
如果你是国内服务器,可以使用 --mirror 参数指定国内镜像源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
使用 wget 来获取所需文件
mkdir qq-bridge && cd qq-bridge
# 下载 docker-compose.yml
wget https://fastly.jsdelivr.net/gh/Icalingua-plus-plus/Icalingua-plus-plus@develop/icalingua-bridge-oicq/docker-compose.yml
# 下载 config.yaml
wget https://fastly.jsdelivr.net/gh/Icalingua-plus-plus/Icalingua-plus-plus@develop/icalingua-bridge-oicq/config.yaml
依照上文中的方法,修改公钥即可,然后运行
具体跳转到 常规安装 的第 4,5 个步骤
使用 docker compose 来启动
docker compose up -d
当然,仅仅如此也是比较不安全的,你仍然需要反向代理等过程,以保证安全性。
反向代理时,需要代理的地址为http://127.0.0.1:6789
,即容器映射后的端口,具体请根据实际情况修改。
关于反向代理的配置文件示例,可以参考仓库当前目录下的 nginx.example.conf。
保持 Icalingua++ 在未运行状态下,编辑 config.yaml
(Linux:~/.config/icalingua/config.yaml,Windows:%AppData%\icalingua\config.yaml) 或通过 -c
开关自定义的配置文件,修改以下配置项:
adapter: socketIo # 将 Icalingua++ 切换到自有协议
server: http://127.0.0.1:6789 # http(s)://服务器的地址,若非 HTTP80 或 HTTPS443 需要:端口号
privateKey: # 安装的步骤中生成的私钥
首次运行的时候会弹出登录界面,需要注意的是数据库是相对应服务器的地址,所以请在服务端配置好你想连接的数据库。
如果你的服务端使用 Docker 部署,那么 MongoDB
数据库的地址如下 mongodb://mongo
。
客户端与服务器建立连接后,服务器将当前时间戳的 MD5 发送给客户端。客户端使用私钥签名发送给服务端验证,服务端验证成功后开放通信