自从用上「CapsWriter」这款语音输入法,彻底摆脱云端的延迟或者 VIP 订阅服务了。但如果有多台电脑需要同时用,或者长期每台都运行服务端和客户端的话,有点不划算。

于是有了本篇的分离式部署,把服务端部署在指定一台电脑,其他电脑都只运行客户端就好。这样就省去每台都要运行服务端的 CPU 资源。

局域网部署

先找一台电脑运行服务端

如果只是局域网要分离服务端的话,不必用 Docker 方式部署在本地电脑,只需要按照正常使用那样,把服务端 start_server.exe 打开。

我们还要找出这台电脑的局域网 IP 地址,比较快捷的方式是:鼠标右键点击开始菜单 - 运行 - 输入:cmd 后按回车 - 输入:ipconfig /all 后按回车

找到类似:

本机的局域网 IP 是:192.168.0.19,这是笔者的举例截图,你的以你的为准。

其他电脑连接的方法

其他电脑,先修改 config.py

# 客户端配置
class ClientConfig:
    addr = '192.168.0.19'          # Server 地址,以刚才的为例
    port = '6016'                  # Server 端口

接着,只需要运行 start_client.exe 就好。

服务器部署

服务器端的话,底层操作系统一般都是用 Linux 的居多,所以选用 Docker 方式部署比较通用些。

Docker 部署服务端

由于 CapsWriter 官方没有提供 Docker 镜像,只能从它的 Github 仓库自己制作容器镜像,它的 Dockerfile 如下:

# 使用官方 Python 3.10 镜像
FROM python:3.10

# 设置工作目录
WORKDIR /app

# 克隆项目代码
RUN git clone https://github.com/HaujetZhao/CapsWriter-Offline.git .

# 安装 requirements-server.txt 中的依赖
RUN pip install --no-cache-dir -r requirements-server.txt

# 给 core_server.py 脚本执行权限
RUN chmod +x core_server.py

# 暴露端口 6016
EXPOSE 6016

# 容器启动时运行 run.sh 脚本
CMD ["python", "./core_server.py"]

这个还是有一定的门槛,因为有可能被网络拦截,还有制作也需要一定的动手能力,制作完成之后,还要上传到仓库等,故优先找现成的,就是别人已经制作好的容器镜像。

有两位兄弟已经制作好了镜像,那我们直接 pull 其中一个就好。

docker pull sipcink/capswriter-offline-server:1.0

sipcink/capswriter-offline-server 1.0 331ced5f9eaf 17 months ago 2.98GB

考虑到大部分网络是没法直接拉取的,所以又要做一个网盘保存镜像导出的包。这个文章末尾再提供,接着完成部署教程。

由于容器部署需要一定的技术基础,笔者这里就不是手把手逐步截图教程了,而是放一些关键的配置出来就好。

docker-compose.yml

services:

  capswriter-offline-server:
    image: sipcink/capswriter-offline-server:1.0
    ports:
      - "6016:6016"

docker compose up -d,启动之后,就可以看到类似这种日志:

客户端连接方法

和局域网的一样,只是这里要修改服务端的 IP 为服务器的公网 IP。然后运行start_client.exe 连接。

再去看服务器端:

这样说明连接成功了。

需要注意的地方

因为服务器部署的话,是公网 IP,而且它没有认证环节,所以我们自行要做好安全策略,避免公开被别人恶意破坏。

策略一

用服务器的防火墙放行我们本地的 IP,但是这种方法也比较麻烦,因为大部分本地的 IP 是变化的,每次改变都要修改防火墙规则,不现实。

策略二

frpc 做反向代理访问,上面的截图为何是:127.0.0.1:36040,就是用了 frpc 的 sctp 隧道做了策略。相当于模拟本机访问远程。

这个策略对技术要求也不低,只是方便多了,不用每次都修改对外的访问 IP。

镜像下载

我把镜像导出保存在网盘,有需要的可以去下载导入加载使用。

docker save -o ./capswriter-offline-server.tar sipcink/capswriter-offline-server:1.0

下载好之后上传到线上服务器,切换到传的目录,使用这个命令导入:

docker load -i ./capswriter-offline-server.tar

你们导入之后,记得留意 331ced5f9eaf 这个 images id 要对应得上。接着,就是创建 docker-compose.yml 然后启动容器。

获取容器镜像网盘地址

1、本公众号回复 20250630 即可看到自动回复网盘链接。
2、如果网盘链接失效,请长按识别以下二维码,加微信发给你。

另外,本次启动推文,还有附带一个飞书的话题群「米八和他的伙伴们」,所有「米八说」读者都可以免费进话题群,每个话题都会产生一个帖子,比较方便非实时交流。

为迎接 AI 时代到来!欢迎你跟我一起学习数字化技能。