安装 nvda 远程服务器

我将 nvda 远程服务器安装在 /data/nvdaRemoteServer_linux_amd64 目录下。使用的是 tech10 编写的 golang 版本的 nvda 远程服务器

使用 caddy 服务器位域名获取的证书作为 nvda 远程服务器的证书。同时实现证书续期后,自动重启 nvda 远程服务器。

我位 nvda 远程服务器分配的域名是 rs.qt.hk

首先创建 rs.qt.hk 这个网站。在 qt.hk 这个域名的控制台添加 rs.qt.hk 这个二级域名,将他绑定到服务器的ip。

接着创建网站配置, 将下面内容保存为 rs.qt.hk.conf, 然后复制到 /data/caddy/conf/vhost 目录下,这是 caddy的网站配置所在的目录。

关于如何安装 caddy 可以参考我另外的文章,地址是: https://www.qt06.com/post/417/

rs.qt.hk {
	root * /data/www/rs.qt.hk
	encode gzip
	header -Server
	# file_server
	log {
		format json {
			time_format "iso8601"
		}
		output file /data/caddy/log/rs.qt.hk.log
	}
}

接着我们在 /data/www 目录下新建 rs.qt.hk 目录,在该目录下新建 index.html 文件,里面写入你想展示的内容,比如介绍 你提供的 nvda 远程服务器的信息。

之后,我们在 bash 下输入systemctl reload caddy 来刷新 caddy 配置。 这样,我们的网站就建好了。可以在浏览器输入 rs.qt.hk 访问了。

我们在地址栏如果能听到 https://rs.qt.hk 字样,就表示已经成功启用了 https 服务,也就有了证书。接下来就可以开始安装 nvda 远程服务器了。

首先下载 nvda 远程服务器文件,并且解压,设置相应的目录和文件权限。

1
2
3
4
5
6
cd /data
wget https://github.com/tech10/nvdaRemoteServer/releases/download/v1.1.11/nvdaRemoteServer_linux_amd64.tar.gz
tar -xzvf nvdaRemoteServer_linux_amd64.tar.gz
cd nvdaRemoteServer_linux_amd64
mkdir tmp
chmod 0777 tmp

systemctl 配置文件

将下面内容保存为 nvdaRemoteServer.service ,然后复制到 /etc/systemd/system 目录下。

特别注意, ExecStart 那一行里 -cert-file 和 -key-file 两个参数指向的证书文件的具体路径,需要根据你使用的域名证书所在位置进行修改。

# This is a nvdaRemoteServer systemd service file.
# Modify the values for the exec parameter,
# user, group, and output for standard output and standard error.
[Unit]
Description=NVDARemote server
After=network.target

[Service]
Type=simple
User=caddy
Group=caddy
ExecStart=/data/nvdaRemoteServer_linux_amd64/nvdaRemoteServer -cert-file /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/rs.qt.hk/rs.qt.hk.crt -key-file /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/rs.qt.hk/rs.qt.hk.key -log-level=1
StandardOutput=append:/data/nvdaRemoteServer_linux_amd64/tmp/stdout.log
StandardError=append:/data/nvdaRemoteServer_linux_amd64/tmp/stderr.log
Restart=always
RestartSec=10s
TimeoutStopSec=10s

[Install]
WantedBy=multi-user.target

接着在 bash 下 输入 systemctl enable nvdaRemoteServer 来注册服务,然后用 systemctl start nvdaRemoteServer 来启动服务。

/data/nvdaRemoteServer_linux_amd64 目录下新建一个名为 restartnvdaRemoteServer.sh 的文件,将下面内容粘贴进去:

1
2
3
4
5
6
#!/usr/bin/bash
if [ -f "/data/nvdaRemoteServer_linux_amd64/tmp/need-restart" ]; then
  systemctl restart nvdaRemoteServer
  rm -rf /data/nvdaRemoteServer_linux_amd64/tmp/need-restart
  echo "$(date)" >> /data/nvdaRemoteServer_linux_amd64/tmp/cron.log
fi

接着将该文件的权限改为 0755,可以在 winscp里修改,也可以直接在 bash下输入下面命令:

1
chmod +x /data/nvdaRemoteServer_linux_amd64/restartnvdaRemoteServer

接着修改 caddy的配置文件,位于 /etc/caddy/Caddyfile, 在全局配置末尾,也就是最后一个花括号的前面,加入下面内容:

	events {
		on cert_obtained exec touch /data/nvdaRemoteServer_linux_amd64/tmp/need-restart
	}

接着添加计划任务,每隔十分钟执行一次,在 bash 下运行下面命令:

1
echo "*/10 * * * * root /data/nvdaRemoteServer_linux_amd64/restartnvdaRemoteServer.sh" > /etc/cron.d/restartnvdaRemoteServer
updatedupdated2024-06-272024-06-27