SSH
systemctl指令
systemctl restart ssh # 重启ssh服务
systemctl stop ssh # 关闭ssh服务
systemctl status ssh # 查看ssh服务状态
systemctl enable ssh # 在开机时启动ssh服务
systemctl disable ssh # 在开机时禁用ssh服务
systemctl is-enabled ssh # 查看ssh服务是否开机时启动
systemctl list-unit-files | grep enabled # 查看已启动的服务列表
systemctl --failed # 查看启动失败的服务列表
开启root访问
sudo nano /etc/ssh/sshd_config
取消注释
PermitRootLogin
并将后面选项改成yes
ssh root@192.168.6.230
修改服务端口
sudo nano /etc/ssh/sshd_config
取消注释
Port
并修改后面数字22
至其它数字.例如2222sudo systemctl restart ssh
ssh root@192.168.6.230 -p 2222
换源
nano /etc/apt/sources.list
deb https://mirrors.tsinghua.edu.cn/debian/ bookworm main non-free non-free-firmware contrib
deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm main non-free non-free-firmware contrib
deb https://mirrors.tsinghua.edu.cn/debian-security/ bookworm-security main
deb-src https://mirrors.tsinghua.edu.cn/debian-security/ bookworm-security main
deb https://mirrors.tsinghua.edu.cn/debian/ bookworm-updates main non-free non-free-firmware contrib
deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm-updates main non-free non-free-firmware contrib
deb https://mirrors.tsinghua.edu.cn/debian/ bookworm-backports main non-free non-free-firmware contrib
deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm-backports main non-free non-free-firmware contrib
配置网络
ip a
nano /etc/network/interfaces
添加
auto ens5p0
iface ens5p0 inet dhcpnano /etc/resolv.conf
添加
nameserver 8.8.8.8
nameserver 192.168.6.1systemctl restart networking
V2ray
sudo apt install v2ray
sudo nano /etc/v2ray/config.json
东京节点配置,直接替换原有配置
{ "log": { "access": "", "error": "", "loglevel": "warning" }, "inbounds": [ { "tag": "socks", "port": 10808, "listen": "127.0.0.1", "protocol": "socks", "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ], "routeOnly": false }, "settings": { "auth": "noauth", "udp": true, "allowTransparent": false } }, { "tag": "http", "port": 10809, "listen": "127.0.0.1", "protocol": "http", "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ], "routeOnly": false }, "settings": { "auth": "noauth", "udp": true, "allowTransparent": false } }, { "tag": "socks2", "port": 10810, "listen": "0.0.0.0", "protocol": "socks", "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ], "routeOnly": false }, "settings": { "auth": "noauth", "udp": true, "allowTransparent": false } }, { "tag": "http2", "port": 10811, "listen": "0.0.0.0", "protocol": "http", "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ], "routeOnly": false }, "settings": { "auth": "noauth", "udp": true, "allowTransparent": false } } ], "outbounds": [ { "tag": "proxy", "protocol": "vless", "settings": { "vnext": [ { "address": "20.44.167.24", "port": 2482, "users": [ { "id": "70073c11-b86c-4249-825b-90d8873dba3d", "alterId": 0, "email": "t@t.tt", "security": "auto", "encryption": "none" } ] } ] }, "streamSettings": { "network": "kcp", "kcpSettings": { "mtu": 1350, "tti": 50, "uplinkCapacity": 12, "downlinkCapacity": 100, "congestion": false, "readBufferSize": 2, "writeBufferSize": 2, "header": { "type": "wechat-video" }, "seed": "hREOXtNT" } }, "mux": { "enabled": true, "concurrency": 8 } }, { "tag": "direct", "protocol": "freedom", "settings": {} }, { "tag": "block", "protocol": "blackhole", "settings": { "response": { "type": "http" } } } ], "dns": { "servers": [ "1.1.1.1", "8.8.8.8" ] }, "routing": { "domainStrategy": "AsIs", "rules": [ { "type": "field", "inboundTag": [ "api" ], "outboundTag": "api" }, { "type": "field", "port": "0-65535", "outboundTag": "proxy" } ] } }
重启v2ray服务
systemctl restart v2ray
1Panel
aquaoh
14364
MCSM
Web 23333
Daemon 24444
Usage:
systemctl start mcsm-{daemon,web}.service
systemctl stop mcsm-{daemon,web}.service
systemctl restart mcsm-{daemon,web}.service
执行sh脚本
debian上默认使用dash执行
sh xx.sh
dash换bash
shell脚本中含有source命令运行时提示 source: not found
运行 ls -l /bin/sh 后显示/bin/sh -> dash,说明当前脚本使用dash运行的,而不是bash
解决方法
修改脚本的 shebang 行:
将 start.sh
的第一行修改为 #!/bin/bash
,而不是 #!/bin/sh
。
释伴:Linux 上的 Shebang 符号(#!)-CSDN博客
手动使用
bash
来执行脚本:使用以下命令来执行脚本:
bash ./start.sh
脚本内手动调用bash
/bin/bash -c "source ./test_env/bin/activate"
添加硬盘
安装parted
apt install parted
查看硬盘
fdisk -l
建立磁盘标签
选择要分区的硬盘:parted /dev/nvme0n1
使用print 对磁盘信息进行查看:
如果磁盘还没有进行分区。
create the GPT disklabel – in other words, create the partitioning tables to support GPT:
输入mklabel gpt
创建磁盘标签
创建分区
计算起始位置
root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/optimal_io_size
0
root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/minimum_io_size
512
root@AQUA7950X:~# cat /sys/block/nvme0n1/alignment_offset
0
root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/physical_block_size
512
公式
起点=(optimal_io_size + alignment_offset) / physical_block_size = (0 + 0) / 512 = 0s
root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/optimal_io_size 0 root@AQUA13600KF:~# cat /sys/block/nvme0n1/alignment_offset 0 root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/physical_block_size 512 root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/minimum_io_size 512
Warning: You requested a partition from 0.00B to 1024GB (sectors 0..2000409263). The closest location we can manage is 17.4kB to 1024GB (sectors 34..2000409230).
在现代硬盘和SSD中,最佳的分区对齐方式是以4KB或者1MB的倍数来对齐扇区。你的命令
(parted) mkpart primary 34s 100%
创建了一个起始于34扇区(sector)的分区,但34不是2048(2^11)的倍数,这会导致未对齐的问题。解决方法
你可以选择一个更合适的起始扇区号来对齐分区。通常,我们会从2048扇区(1MB)开始,这样可以确保分区的对齐并优化性能。
重新开始分区创建,指定起始位置为2048扇区:
bash 复制代码 (parted) mkpart primary 2048s 100%
分区命令
parted /dev/nvme0n1
mkpart primary 0s 100%
0%
: 分区的起始位置,可以用0s
(表示起始扇区)或者0%
(表示起始位置的百分比)。100%
: 分区的结束位置,这里使用100%
表示分区占用所有剩余的可用空间。
检查是否正确对齐
(parted) align-check optimal 1
1 aligned
格式化
mkfs.ext4 /dev/nvme0n1
自动挂载
查看硬盘以及分区
root@AQUA7950X:/# fdisk -l
Disk /dev/nvme1n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: FDC SSD V800 256GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7315FF64-5C7E-49C4-AF74-A98DF124C9B6
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme1n1p2 1050624 498116607 497065984 237G Linux filesystem
/dev/nvme1n1p3 498116608 500117503 2000896 977M Linux swap
Disk /dev/nvme0n1: 3.73 TiB, 4096805658624 bytes, 8001573552 sectors
Disk model: HYV4TBX4(PRO)
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
手动挂载
概念补充
作者:灵剑 链接:https://www.zhihu.com/question/266907637/answer/315386532 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
linux下面所有的文件、目录、设备都有一个路径,这个路径永远以/开头,用/分隔,如果一个路径是另一个路径的前缀,则这两个路径有逻辑上的父子关系。
但是并不是所有逻辑上的父子关系都必须要是同一个设备,决定不同路径对应到哪个设备的机制就叫做mount(挂载)。通过mount,可以设置当前的路径与设备的对应关系。
每个设备会设置一个挂载点,挂载点是一个空目录。一般来说必须有一个设备挂载在/这个根路径下面,叫做rootfs。其他挂载点可以是/tmp,/boot,/dev等等,通过在rootfs上面创建一个空目录然后用mount命令就可以将设备挂载到这个目录上。挂载之后,这个目录下的子路径,就会映射到被挂载的设备里面。
当访问一个路径时,会选择一个能最大匹配当前路径前缀的挂载点。比如说,有/var的挂载点,也有/var/run的挂载点的情况下,访问/var/run/test.pid,就会匹配到/var/run挂载点设备下面的/test.pid。
同一个设备可以有多个挂载点,同一个挂载点同时只能加载一个设备。访问非挂载点的路径的时候,按照前面所说,其实是访问最接近的一个挂载点,如果没有其他挂载点那么就是rootfs上的目录或者文件了。
实际上并不只有linux支持挂载点,Windows也是一样支持的。去控制面板/管理工具/计算机管理 里面,挑一个磁盘(比如D盘),然后给它分一个新的挂载点试试,比如C:\data
输入mkdir /home/data
创建挂载点
输入mount /dev/nvme0n1 /home/data
进行手动挂载
自动挂载
首先获取新分区的 UUID
root@AQUA7950X:/# blkid /dev/nvme0n1
/dev/nvme0n1: UUID="08b067f8-a668-47b9-97a6-532a8adcb273" BLOCK_SIZE="4096" TYPE="ext4"
复制输出中 UUID
的值,然后编辑 fstab
文件:
nano /etc/fstab
其每行的格式如下
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0
要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
挂载点:指定的文件夹 1 挂载选项:defaults 1 转储频率:
0:不做备份
1:每天转储
2:每隔一天转储
自检次序:
0
: 不检查文件系统。
1
: 启动时优先检查的文件系统。通常是根分区/
。
2
: 对除根分区之外的其他文件系统进行检查。具有2
的文件系统将在系统启动时按顺序被检查。
在文件末尾添加以下行:
UUID=08b067f8-a668-47b9-97a6-532a8adcb273 /home/data ext4 defaults 0 2
取消挂载
umount /dev/nvme0n1
python-is-python3
root@AQUA13600KF:~# python
-bash: python: command not found
root@AQUA13600KF:~# apt install python-is-python3
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
python-is-python3
0 upgraded, 1 newly installed, 0 to remove and 35 not upgraded.
Need to get 3216 B of archives.
After this operation, 16.4 kB of additional disk space will be used.
Get:1 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 python-is-python3 all 3.11.2-1+deb12u1 [3216 B]
Fetched 3216 B in 0s (17.1 kB/s)
Selecting previously unselected package python-is-python3.
(Reading database ... 32703 files and directories currently installed.)
Preparing to unpack .../python-is-python3_3.11.2-1+deb12u1_all.deb ...
Unpacking python-is-python3 (3.11.2-1+deb12u1) ...
Setting up python-is-python3 (3.11.2-1+deb12u1) ...
Processing triggers for man-db (2.11.2-2) ...
root@AQUA13600KF:~# python
Python 3.11.2 (main, May 2 2024, 11:59:08) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip
镜像加速
-i
或--index-url
:pip
的一个选项,用于指定 Python 包的下载源地址(Python 包索引)。默认情况下,pip
会从 Python 官方包管理仓库 PyPI 下载包。
-i https://pypi.tuna.tsinghua.edu.cn/simple
依赖列表
-r requirements.txt
已安装模块列表
pip list
venv
安装pip
apt install pip
安装venv
apt install python3-venv
创建虚拟环境
cd /home/data/ChatBridge
python3 -m venv test_env
-m
是 Python 命令行选项,用于告诉 Python 解释器运行指定模块的命令。通过使用-m
,你可以运行一个模块并将其视为一个脚本,而不是手动指定文件路径。
这条命令会在当前目录下创建一个名为 test_env
的文件夹,其中包含虚拟环境的可执行文件和所需的Python库。
查看下文件结构
root@AQUA13600KF:~# cd /home/data/ChatBridge
root@AQUA13600KF:/home/data/ChatBridge# ls
ChatBridge.pyz ChatBridge_server.json logs start.sh test_env
root@AQUA13600KF:/home/data/ChatBridge# cd test_env/
root@AQUA13600KF:/home/data/ChatBridge/test_env# ls
bin include lib lib64 pyvenv.cfg
root@AQUA13600KF:/home/data/ChatBridge/test_env# cd bin
root@AQUA13600KF:/home/data/ChatBridge/test_env/bin# ls
Activate.ps1 activate activate.csh activate.fish pip pip3 pip3.11 python python3 python3.11
激活虚拟环境
root@AQUA13600KF:/home/data/ChatBridge# source ./test_env/bin/activate
(test_env) root@AQUA13600KF:/home/data/ChatBridge#
可以看到,命令行的提示符前面会出现括号,里面是虚拟环境名称。
安装包
虚拟环境启用后,就可以使用pip
命令来安装需要的包
(test_env) root@AQUA13600KF:/home/data/ChatBridge# pip3 install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
...
(test_env) root@AQUA13600KF:/home/data/ChatBridge#
在Linux系统上,安装的包放在./test_env/lib/pythonx.x/site-packages
目录下
使用包
安装后,可以在命令行执行python
命令,进入Python交互式环境,然后import 安装的包,如果不报错,就说明安装成功了
(test_env) root@AQUA13600KF:/home/data/ChatBridge# pip3 list
Package Version
------------------ ---------
certifi 2024.8.30
charset-normalizer 3.3.2
colorama 0.4.6
colorlog 6.8.2
idna 3.8
mcdreforged 2.13.1
packaging 24.1
parse 1.20.2
pip 23.0.1
prompt_toolkit 3.0.47
psutil 6.0.0
requests 2.32.3
resolvelib 1.0.1
ruamel.yaml 0.18.6
ruamel.yaml.clib 0.2.8
setuptools 66.1.1
typing_extensions 4.12.2
urllib3 2.2.2
wcwidth 0.2.13
(test_env) root@AQUA13600KF:/home/data/ChatBridge# python
Python 3.11.2 (main, Aug 26 2024, 07:20:54) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mcdreforged
>>>
退出虚拟环境
deactivate
容器内使用
及时更新Path
#!/bin/bash
source ./test_env/bin/activate # 激活虚拟环境
chmod +x ./test_env/bin/pip
chmod +x ./test_env/bin/python
export PATH="/workspace/test_env/bin:$PATH"
python -m mcdreforged # 在虚拟环境中运行命令
pipvenv
Pipenv:新一代Python项目环境与依赖管理工具 - 知乎 (zhihu.com)
Docker
Docker加速
nano /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1panelproxy.com",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
命令
Docker常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客
run
docker run 命令常用参数详解 - 明月, - 博客园 (cnblogs.com)
exec
0e6516685686
为容器ID
docker exec -it 0e6516685686 /bin/bash
DockerFile
【自定义镜像—Dockerfile完全指南】常用的十三种dockerfile指令及构建Tomcat镜像例子_tomcat dockerfile-CSDN博客
docker入门(八)—— dockerfile详细介绍,编写dockerfile-CSDN博客
FROM # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER # 镜像维护者的姓名混合邮箱地址
RUN # 容器构建时需要运行的命令
EXPOSE # 当前容器对外保留出的端口
WORKDIR # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV # 用来在构建镜像过程中设置环境变量
ADD # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY # 类似ADD,拷贝文件和目录到镜像中!
VOLUME # 容器数据卷,用于数据保存和持久化工作
CMD # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!
ENTRYPOINT # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发
# 基础镜像 基础debian环境
FROM ustclug/debian:12.2
# 维护者
MAINTAINER aquaoh<aquaoh@outlook.com>
# 配置环境
ENV MIRROR https://pypi.tuna.tsinghua.edu.cn/simple
# 更新包索引,安装 Python 和 OracleJDK 21
RUN apt-get update && apt-get install -y \
ca-certificates \
python3 \
python3-pip \
python3-venv \
python-is-python3 \
wget && \
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb && \
dpkg -i jdk-21_linux-x64_bin.deb || apt-get install -f -y && \
rm jdk-21_linux-x64_bin.deb && \
apt-get clean && rm -rf /var/lib/apt/lists/
# 配置 Python 包镜像源
RUN pip3 config set global.index-url $MIRROR
# 创建一个符号链接使得 'python' 命令指向 'python3'
#RUN ln -s /usr/bin/python3 /usr/bin/python
# 配置 Java 环境变量
RUN echo "export JAVA_HOME=/usr/java/jdk-21.0.2" >> /etc/profile && \
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile
# 安装gcc clang valgrind perf procps
RUN apt-get update && apt-get install -y \
gcc \
clang \
valgrind \
procps \
linux-perf && \
apt-get clean && rm -rf /var/lib/apt/lists/
# 修改perf_event_paranoid默认设置
# 设置ENTRYPOINT来调整kernel参数
ENTRYPOINT ["sh", "-c", "sysctl -w kernel.perf_event_paranoid=-1 && exec \"$@\"", "--"]
CMD ["bash"]
# 运行命令
docker run --privileged -it my_image_name
NapCat & LLOneBot
构建Docker
Docker安装Napcat反向ws-鑫仔博客 (xinz.fun)
NapNeko/NapCat-Docker: NapCat-Docker (github.com)
正向WS模板
docker run -d \
-e ACCOUNT=<机器人qq> \
-e WS_ENABLE=true \
-e NAPCAT_GID=$(id -g) \
-e NAPCAT_UID=$(id -u) \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
--restart=always \
mlikiowa/napcat-docker:latest
反向WS模板
docker run -d \
-e ACCOUNT="机器人qq" \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-e MESSAGE_POST_FORMAT="string" \
-e WSR_ENABLE=true \
-e WS_URLS='["ws://自己的ws ip加端口/api/bot/qqws"]' \
-p 6099:6099 \
-v /自己的目录只改这前面/QQ:/app/.config/QQ \
-v /自己的目录只改这前面/config:/app/napcat/config \
-v /自己的目录只改这前面/logs:/app/napcat/logs \
--name napcat \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest
正向ws修改后的
docker run -d \
-e ACCOUNT="2329377943" \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-e MESSAGE_POST_FORMAT="string" \
-p 3001:3001 \
-p 6099:6099 \
-v /home/data/NapCat/QQ:/app/.config/QQ \
-v /home/data/NapCat/config:/app/napcat/config \
-v /home/data/NapCat/logs:/app/napcat/logs \
--name napcat \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest
-d:以分离模式运行容器(即在后台运行)。 -e:设置环境变量,这些变量将传递给容器内的应用程序。 ACCOUNT:设置账户信息。填写自己的机器人QQ NAPCAT_GID 和 NAPCAT_UID:设置容器内的用户和组 ID。 MESSAGE_POST_FORMAT:设置消息的格式。 WSR_ENABLE:启用 WebSocket 连接。 WS_URLS:指定 WebSocket 服务器的 URL。填写自己框架的ws地址 -p 6099:6099:将主机的 6099 端口映射到容器的 6099 端口。 -v:挂载卷,将主机的目录映射到容器内的指定路径。 /opt/1panel/apps/napcat/QQ:用于 QQ 配置。/opt/1panel/apps/napcat将/QQ前面改为自动的路径 /opt/1panel/apps/napcat/config:用于 Napcat 配置。/opt/1panel/apps/napcat将/config前面改为自动的路径 /opt/1panel/apps/napcat/logs:用于存放日志文件。/opt/1panel/apps/napcat将/logs前面改为自动的路径 --name napcat:指定容器的名称。 --mac-address=02:42:ac:11:00:99:为容器分配一个特定的 MAC 地址。 如果要开多个自己改后面尾数 --mac-address=02:42:ac:11:00:98 97 96 都可以 mlikiowa/napcat-docker:latest:要使用的 Docker 镜像。 注意事项 端口冲突:确保主机的 6099 端口没有被其他服务占用。如果已经被占用,您可以选择另一个可用的端口。 文件夹权限:确保您挂载的目录(如 /opt/1panel/apps/napcat/QQ、/opt/1panel/apps/napcat/config 和 /opt/1panel/apps/napcat/logs)具有适当的权限,以便容器能够读写这些目录。 环境变量的正确性:确保所有传递的环境变量(如 ACCOUNT 和 WS_URLS)都是正确的并符合您的需求。 MAC 地址:如果您指定了 MAC 地址,确保它是唯一的,并且不会与网络中的其他设备发生冲突。
配置WebUI
nano /home/data/NapCat/config/webui.json
{
"host": "0.0.0.0",
"port": 6099,
"prefix": "",
"token": "1ysti6j43vi",
"loginRate": 3
}
浏览器访问http://$host:$port$prefix/webui/login.html
,此中为http://192.168.6.120:6099/webui/login.html
输入token1ysti6j43vi
QR登录后配置正向ws保存持久化配置即可