9 个版本
0.1.1 | 2020 年 12 月 27 日 |
---|---|
0.1.0 | 2020 年 10 月 7 日 |
0.0.8 | 2019 年 5 月 27 日 |
0.0.7 | 2019 年 1 月 27 日 |
0.0.2 | 2018 年 3 月 6 日 |
在 多媒体 中排名第 386
每月下载量 28 次
52KB
1K SLoC
Tox 引导节点
运行 tox 引导节点的服务器应用程序。
构建和运行
您需要 Rust >= 1.42.0。
使用以下方式构建
cargo build --release
使用以下方式运行
cargo run --release
如果您想更改默认日志级别,可以通过设置环境变量 RUST_LOG
来实现。例如,如果您想查看所有接收和发送的数据包,可以将日志级别更改为 trace
以适用于 tox
包
RUST_LOG=tox=trace cargo run --release
还可以通过 --log-type
参数使用 syslog。
在 Docker 中运行 tox-node
tox-node 有一个 Docker 仓库,其中暴露了 443/tcp 3389/tcp 33445/tcp 33445/udp 端口。您可以使用 Docker 运行 tox-node,如下所示
TOX_SECRET_KEY=<secret key> docker run -e TOX_SECRET_KEY toxrust/tox-node <ARGS>
或
docker run --mount type=bind,source=<path/to/config.yml>,target=<path/to/target/config.yml> \
--mount type=bind,source=<path/to/keys>,target=/var/lib/tox-node/keys toxrust/tox-node config <path/to/config.yml>
示例命令
TOX_SECRET_KEY="4a2d4098e9d6ae6addb8035085cf1467fd7611edd2e22df2f1b60a71763b4ce4" \
docker run -e TOX_SECRET_KEY toxrust/tox-node \
--bootstrap-node 1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F 198.98.51.198:33445 \
--udp-address '0.0.0.0:33445' --tcp-address '0.0.0.0:33445' \
--motd "{{start_date}} {{uptime}} Tcp: incoming {{tcp_packets_in}}, outgoing {{tcp_packets_out}}, Udp: incoming {{udp_packets_in}}, outgoing {{udp_packets_out}}"
或
docker run --mount type=bind,source=$PWD/dpkg/config.yml,target=/config.yml \
--mount type=bind,source=$PWD/keys,target=/var/lib/tox-node/keys toxrust/tox-node config /config.yml
在 NixOS 上运行 tox-node
如果您正在使用 NixOS(不稳定频道),您可以通过将 services.tox-node.enable = true;
添加到您的 configuration.nix
来安装和运行 tox-node。
配置选项也可用。以下是一个配置示例
{
services.tox-node = {
enable = true;
logType = "Syslog";
keysFile = "/var/lib/tox-node/keys";
udpAddress = "0.0.0.0:33445";
tcpAddresses = [ "0.0.0.0:33445" ];
tcpConnectionLimit = 8192;
lanDiscovery = true;
threads = 1;
motd = "Hi from tox-rs! I'm up {{uptime}}. TCP: incoming {{tcp_packets_in}}, outgoing {{tcp_packets_out}}, UDP: incoming {{udp_packets_in}}, outgoing {{udp_packets_out}}";
};
}
在 Arch Linux 上运行 tox-node
通过 AUR 以任何方便的方式安装 tox-node-rs 或 tox-node-rs-git。有关更多信息,请参阅 ArchWiki。
公告
每日消息(MOTD)是“每日消息”的缩写。Tox引导节点有一个特殊的包类型,称为BootstrapInfo
,可以同时获取MOTD和版本信息。我们的节点支持基本的MOTD模板,可以通过--motd
键来指定。可以使用以下变量,这些变量被包围在{{ }}
start_date
:节点启动的时间uptime
:以“XX天XX小时XX分钟”格式的运行时间tcp_packets_in
:TCP传入包的计数器tcp_packets_out
:TCP传出包的计数器udp_packets_in
:UDP传入包的计数器udp_packets_out
:UDP传出包的计数器
密钥生成
为了运行节点,您必须提供密钥或密钥文件的路径。
密钥文件
密钥文件是一个二进制文件,其中顺序存储了公钥和私钥。可以通过--keys-file
参数指定密钥文件的路径。如果文件不存在,它将自动创建并使用自动生成的密钥。该文件的格式与tox-bootstrapd
兼容。
您还可以从文件中提取密钥
hexdump -s32 -e '32/1 "%02x" "\n"' ./key
私钥
私钥是一个32字节的十六进制字符串。可以通过TOX_SECRET_KEY
环境变量指定。任何随机字符串都适用,但请注意,只有强大的随机生成器才应该用于生成私钥。以下是在终端中执行的一些示例
openssl rand -hex 32
hexdump -n 32 -e '8 "%08x" 1 "\n"' /dev/random
od -vN 32 -An -tx1 /dev/random | tr -d " \n" ; echo
配置或CLI
要使用配置运行,请使用config
子命令,例如tox-node config <file>
。以下是一个示例config.yml。
log-type: Stderr
keys-file: ./keys
udp-address: 0.0.0.0:33445
tcp-addresses:
- 0.0.0.0:33445
tcp-connections-limit: 512
motd: "{{start_date}} {{uptime}} Tcp: incoming {{tcp_packets_in}}, outgoing {{tcp_packets_out}}, Udp: incoming {{udp_packets_in}}, outgoing {{udp_packets_out}}"
bootstrap-nodes:
- pk: 1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F
addr: 198.98.51.198:33445
- pk: DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43
addr: 185.25.116.107:33445
threads: auto # or any u16 > 0
lan-discovery: True
或者您可以像这样使用CLI
tox-node --keys-file keys \
--bootstrap-node 1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F 198.98.51.198:33445 \
--udp-address '0.0.0.0:33445' --tcp-address '0.0.0.0:33445' \
--motd "{{start_date}} {{uptime}} Tcp: incoming {{tcp_packets_in}}, outgoing {{tcp_packets_out}}, Udp: incoming {{udp_packets_in}}, outgoing {{udp_packets_out}}"
构建Debian软件包
安装cargo-deb - 一个Cargo辅助命令,它可以从Cargo项目自动创建二进制Debian软件包(.deb)
cargo install cargo-deb
然后构建二进制Debian软件包
cargo deb
该命令将在target/debian
目录中创建一个Debian软件包。软件包的描述
- 二进制文件在
/usr/bin/tox-node
- 默认配置在
/etc/tox-node/config.yml
- Systemd配置在
/lib/systemd/system/tox-node.service
- postinstall将创建用户
tox-node
及其家目录在/var/lib/tox-node/
- 如果服务启动期间缺少密钥,将在
/var/lib/tox-node/keys
中生成密钥
可以使用以下方法从config.yml生成引导节点
curl 'https://nodes.tox.chat/json' -s | jq -r '.nodes[] | .public_key + " " + .ipv4 + ":" + (.port | tostring)' | \
while read pk addr; do echo " - pk: $pk"; echo " addr: $addr"; done
依赖项
~31–42MB
~404K SLoC