
注:要实现自动识别,需将修改版部署在阿里云服务器等公网或内网环境中。使用官方版本的VIA网站(https://usevia.app)时,仍需要自行导入JSON。
VIA网站使用的是Node.js。为了方便,将在Windows 10上进行整个编译过程(与纯Linux环境下基本一致)。部署系统为Debian 12,Web服务器选择Nginx。

0.环境准备
方法一.在MSYS2 MINGW64环境中进行编译
从官网下载MSYS2,点击红框处蓝色链接进行下载。

从官网下载
如果速度太慢可以使用镜像站的链接下载。
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/
下拉找到最新的下载即可。

从镜像站下载
安装MSYS2,默认安装在C盘,可以自己更改安装目录。这里我改为D盘,然后一路NEXT即可。

安装MSYS2
安装完成打开的版本不对,重新找到MSYS2 MINGW64运行。

运行MSYS2 MINGW64
更换MSYS2软件源,使用清华大学开源软件镜像站的软件源。
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* 安装git和npm。
pacman -S git
pacman -S mingw-w64-x86_64-nodejs
方法二.在WSL环境中进行编译(Windows商店抽风/系统配置等问题容易失败)
安装git、nodejs和npm。
apt update
apt install git nodejs npm 1.获取the-via/keyboards源码
git clone https://github.com/the-via/keyboards.git

获取the-via/keyboards源码
2.添加键盘JSON
先进入keyboards源码目录。
cd keyboards 可以看到v3内有很多其他厂商/工作室键盘的JSON。

厂商/工作室键盘
例如这个keychron的v3的多个JSON。

单键盘的JSON
要实现自动识别,就需要按照结构新建一个目录,再将路转ln80的JSON添加进去。
mkdir -p v3/luzhuan/ln80 在文件资源管理器中打开这个目录,将JSON添加进去。
D:\msys64\home\你的用户名\keyboards\v3\luzhuan\ln80

添加JSON
在虚拟终端检查一下是否已经存在。

已经可以看到添加的JSON
可视情况删除其他的JSON,或仅保留luzhuan文件夹。
3.配置ssh key,用于访问个人仓库(可选)
如果新建仓库时将仓库设置为Private私密,需要此操作。
将邮箱替换成自己github内预留的邮箱,重新生成一次。执行后直接回车即可,无需设置keyphrase。
ssh-keygen -t rsa -C "邮箱" 生成完毕,将这串复制到github
cat ~/.ssh/id_rsa.pub

读取ssh key
点击个人头像进入设置

找到设置
添加ssh key

添加ssh key
在Title输入名字,Key中粘贴ssh key

添加ssh key
测试一下是否有效

测试连接有效
有successfully字样即表示成功有效。
4.推送修改过的源码到自己的个人仓库
和常规的新建空白仓库Push的流程一致。
5.获取the-via/app源码

获取the-via/app源码
6.修改package.json文件,更换为从个人仓库获取
进入app目录
cd app
vim package.json 将两处 github:the-via/keyboards 更改为自己的个人仓库,格式为:git+ssh://后面接从仓库复制的链接。如果是Public仓库可以直接将其更改为 github:仓库名 。

复制仓库ssh链接

修改package.json文件
7.安装模块并编译
安装模块
npm install

安装模块
编译
npm run build 无报错即编译完成。

编译完成
编译完的文件在dist目录内。需要将这些文件复制到Nginx Web服务器上。

dist目录内文件
8.将文件上传到Linux服务器中,配置Nginx
需要将上述dist目录内的所有文件上传至/var/www/html,目录中。
因为使用到了https的一些特性,需要修改一下默认的Nginx配置。
先使用ssl生成证书,后续需要使用到。
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.cer -days 365 -nodes 在目录/etc/nginx下新建目录cert,将两个文件都复制到/etc/nginx/cert中。
cp server.* /etc/nginx/cert/ 在目录/etc/nginx/sites-enabled中,复制一份default,改名为usevia。
cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/usevia 修改usevia,将此处监听80端口改为443。

修改监听端口
新增红框中的内容来开启ssl,并将证书设置为刚刚复制的自签名证书。

添加自签名证书
完成后重新启动Nginx。
systemctl restart nginx 9.通过Linux服务器的IP地址进行访问(记得加https://),测试能否自动识别
无需导入JSON即可自动识别。

自动识别成功
效果可以看这个视频。