- 为不同操作系统(Linux、macOS、Windows、Android、BSD、Solaris)实现了TUN设备的配置函数,确保在各平台上能够正确设置IP地址和设备状态 - 在不支持的平台上提供默认的错误处理,增强代码的健壮性 - 更新日志记录以包含平台特定的配置状态信息,增强调试信息 - 确保适配器在不同操作系统下的兼容性和性能优化
weron
基于WebRTC的覆盖网络。
概述
weron提供基于WebRTC的精简、快速且安全的覆盖网络。
它使您能够:
- 访问NAT后面的节点:由于weron使用WebRTC建立节点之间的连接,它可以通过STUN轻松穿越企业防火墙和NAT,甚至可以使用TURN服务器隧道传输流量。这对于例如无需在路由器上转发任何端口就能SSH进入家庭实验室非常有用。
- 保护您的家庭网络:由于WebRTC在低延迟网络中的相对较低开销,weron可用于保护LAN中节点之间的流量,而不会显著影响性能。
- 将本地节点加入云网络:如果您运行的例如Kubernetes集群的节点基于云实例,但同时也想将您的本地节点加入其中,您可以使用weron创建一个可信网络。
- 绕过审查:底层的WebRTC套件,即流行的视频会议工具如Zoom、Teams和Meet所基于的技术,在网络层面很难被阻止,使其成为绕过国家或企业审查的有价值工具。
- 编写您自己的点对点协议:简单的API使编写具有自动重连、多数据通道等功能的分布式应用变得容易。
安装
库
您可以通过运行以下命令将weron添加到您的Go项目中:
$ go get github.com/pojntfx/weron/...@latest
容器化
您可以按照以下方式获取OCI镜像:
$ podman pull ghcr.io/pojntfx/weron
本机安装
静态二进制文件可在GitHub发布页获取。
在Linux上,您可以按照如下方式安装:
$ curl -L -o /tmp/weron "https://github.com/pojntfx/weron/releases/latest/download/weron.linux-$(uname -m)"
$ sudo install /tmp/weron /usr/local/bin
$ sudo setcap cap_net_admin+ep /usr/local/bin/weron # 这允许无需root权限执行
在macOS上,您可以使用以下命令:
$ curl -L -o /tmp/weron "https://github.com/pojntfx/weron/releases/latest/download/weron.darwin-$(uname -m)"
$ sudo install /tmp/weron /usr/local/bin
在Windows上,以下命令应该可行(以管理员身份使用PowerShell):
PS> Invoke-WebRequest https://github.com/pojntfx/weron/releases/latest/download/weron.windows-x86_64.exe -OutFile \Windows\System32\weron.exe
您可以在GitHub发布页找到更多操作系统和架构的二进制文件。
教程
简而言之:使用
sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/32,192.0.2.1/24
加入托管信令服务器上的第3层(IP)覆盖网络,使用sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey
加入第2层(以太网)覆盖网络
1. 使用 weron signaler
启动信令服务器
信令服务器通过在节点之间交换连接信息来将它们相互连接。它还通过客户端的 --password
标志管理对社区的访问,并且可以在所有节点断开连接后维护持久性社区。
虽然使用托管信令服务器 wss://weron.up.railway.app/
是可行且相对私密的(除了TLS,连接信息还使用客户端的 --key
标志进行加密),但自行托管有许多好处,例如更低的延迟和更好的隐私。
信令服务器可以使用具有内存数据库或SQLite/PostgreSQL的进程内代理;对于生产使用,强烈推荐PostgreSQL,因为它允许您轻松水平扩展信令服务器。如果您想水平扩展,这一点尤为重要。
展开容器化安装说明
$ sudo podman network create weron
$ sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-postgres --network weron -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=weron_communities postgres
$ sudo podman generate systemd --new weron-postgres | sudo tee /lib/systemd/system/weron-postgres.service
$ sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-signaler --network weron -p 1337:1337 -e DATABASE_URL='postgres://postgres@weron-postgres:5432/weron_communities?sslmode=disable' -e API_PASSWORD='myapipassword' ghcr.io/pojntfx/weron:unstable weron signaler
$ sudo podman generate systemd --new weron-signaler | sudo tee /lib/systemd/system/weron-signaler.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now weron-postgres
$ sudo systemctl enable --now weron-signaler
$ sudo firewall-cmd --permanent --add-port=1337/tcp
$ sudo firewall-cmd --reload
展开本机安装说明
sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-postgres -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=weron_communities -p 127.0.0.1:5432:5432 postgres
sudo podman generate systemd --new weron-postgres | sudo tee /lib/systemd/system/weron-postgres.service
sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-signaler -p 127.0.0.1:1337:1337 -e DATABASE_URL='postgres://postgres@localhost:5432/weron_communities?sslmode=disable' -e API_PASSWORD='myapipassword' ghcr.io/pojntfx/weron:unstable weron signaler
sudo podman generate systemd --new weron-signaler | sudo tee /lib/systemd/system/weron-signaler.service
sudo systemctl daemon-reload
sudo systemctl restart weron-postgres
sudo systemctl restart weron-signaler
sudo firewall-cmd --permanent --add-port=1337/tcp
sudo firewall-cmd --reload
现在应该可以在 ws://localhost:1337/
上访问它了。
要在生产环境中使用,请将此信令服务器放在启用TLS的反向代理(如Caddy或Traefik)后面。您可能还希望保持 API_PASSWORD
为空以完全禁用管理API,或使用OpenID Connect进行身份验证;有关更多信息,请参阅信令服务器参考。您还可以使用其Go API将信令服务器嵌入到您自己的应用程序中。
2. 使用 weron manager
管理社区
虽然可以在信令服务器上创建不需要任何授权的临时社区,但对于大多数应用程序,您可能希望创建一个持久性社区。临时社区会随着客户端的加入或离开而自动创建和删除,而持久性社区则永远不会自动删除。您可以使用管理器CLI管理这些社区。
如果您想在自托管的信令服务器上工作,首先设置远程地址:
$ export WERON_RADDR='http://localhost:1337/'
接下来,使用 API_PASSWORD
环境变量设置API密码:
$ export API_PASSWORD='myapipassword'
如果您使用OIDC进行身份验证,可以使用goit来设置API密码:
$ export OIDC_CLIENT_ID='Ab7OLrQibhXUzKHGWYDFieLa2KqZmFzb' OIDC_ISSUER='https://pojntfx.eu.auth0.com/' OIDC_REDIRECT_URL='http://localhost:11337'
$ export API_KEY="$(goit)"
如果我们现在列出社区,我们会看到当前不存在任何社区:
$ weron manager list
id,clients,persistent
我们可以使用 weron create
创建一个持久性社区:
$ weron manager create --community mycommunity --password mypassword
id,clients,persistent
mycommunity,0,true
也可以使用 weron delete
删除社区,这也会断开所有已连接的节点:
$ weron manager delete --community mycommunity
有关更多信息,请参见管理器参考。您还可以使用其Go API将管理器嵌入到您自己的应用程序中。
3. 使用 weron chat
测试系统
如果您想在自托管的信令服务器上工作,首先设置远程地址:
$ export WERON_RADDR='ws://localhost:1337/'
聊天是测试一切是否正常工作的简单方法。要加入聊天室,请运行以下命令:
$ weron chat --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
在另一个节点上,运行以下命令(如果您的信令服务器是公开的,您可以在地球上的任何地方运行此命令):
$ weron chat --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
.wss://weron.up.railway.app/
user2!
+user1@one
+user1@two
+user1@three
user2>
现在,您可以开始发送和接收消息,或者向聊天室添加新的节点来测试网络。
有关更多信息,请参见聊天参考。您还可以使用其Go API将聊天嵌入到您自己的应用程序中。
4. 使用 weron utility latency
测量延迟
网络的一个重要指标是其延迟,您可以使用此实用工具测量它;把它看作是WebRTC版的ping
。首先,像这样启动延迟测量服务器:
$ weron utility latency --community mycommunity --password mypassword --key mykey --server
在另一个节点上,启动客户端,它应该立即开始测量延迟;按CTRL C停止它并获取总体统计信息:
$ weron utility latency --community mycommunity --password mypassword --key mykey
# ...
128 B written and acknowledged in 110.111µs
128 B written and acknowledged in 386.12µs
128 B written and acknowledged in 310.458µs
128 B written and acknowledged in 335.341µs
128 B written and acknowledged in 264.149µs
^CAverage latency: 281.235µs (5 packets written) Min: 110.111µs Max: 386.12µs
有关更多信息,请参见延迟测量实用工具参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。
5. 使用 weron utility throughput
测量吞吐量
如果您想传输大量数据,网络的吞吐量是一个关键特性。此实用工具允许您测量两个节点之间的这一指标;把它看作是WebRTC版的iperf
。首先,像这样启动吞吐量测量服务器:
$ weron utility throughput --community mycommunity --password mypassword --key mykey --server
在另一个节点上,启动客户端,它应该立即开始测量吞吐量;按CTRL C停止它并获取总体统计信息:
$ weron utility throughput --community mycommunity --password mypassword --key mykey
# ...
97.907 MB/s (783.253 Mb/s) (50 MB read in 510.690403ms)
64.844 MB/s (518.755 Mb/s) (50 MB read in 771.076908ms)
103.360 MB/s (826.881 Mb/s) (50 MB read in 483.745832ms)
89.335 MB/s (714.678 Mb/s) (50 MB read in 559.692495ms)
85.582 MB/s (684.657 Mb/s) (50 MB read in 584.233931ms)
^CAverage throughput: 74.295 MB/s (594.359 Mb/s) (250 MB written in 3.364971672s) Min: 64.844 MB/s Max: 103.360 MB/s
有关更多信息,请参见吞吐量测量实用工具参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。
6. 使用 weron vpn ip
创建第3层(IP)覆盖网络
如果您想将多个节点加入到覆盖网络中,IP VPN是最佳选择。它的工作方式类似于例如Tailscale/WireGuard,可以从CIDR表示法中动态分配IP地址或为您静态分配一个。在Windows上,请确保先安装TAP-Windows。另请注意,由于技术限制,Windows上一次只支持一个IPv4或IPv6网络和一个VPN实例;在macOS上,只支持IPv6网络,IPv4网络会被忽略。要开始,请在第一个节点上启动VPN:
$ sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/64,192.0.2.1/24
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:20:51+02:00","message":"Connecting to signaler"}
{"level":"info","id":"[\"2001:db8::6a/64\",\"192.0.2.107/24\"]","time":"2022-05-06T22:20:56+02:00","message":"Connected to signaler"}
在另一个节点上,也启动VPN:
$ sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/64,192.0.2.1/24
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:22:30+02:00","message":"Connecting to signaler"}
{"level":"info","id":"[\"2001:db8::b9/64\",\"192.0.2.186/24\"]","time":"2022-05-06T22:22:36+02:00","message":"Connected to signaler"}
{"level":"info","id":"[\"2001:db8::6a/64\",\"192.0.2.107/24\"]","time":"2022-05-06T22:22:36+02:00","message":"Connected to peer"}
现在您可以在节点之间通信:
$ ping 2001:db8::b9
PING 2001:db8::b9(2001:db8::b9) 56 data bytes
64 bytes from 2001:db8::b9: icmp_seq=1 ttl=64 time=1.07 ms
64 bytes from 2001:db8::b9: icmp_seq=2 ttl=64 time=1.36 ms
64 bytes from 2001:db8::b9: icmp_seq=3 ttl=64 time=1.20 ms
64 bytes from 2001:db8::b9: icmp_seq=4 ttl=64 time=1.10 ms
^C
--- 2001:db8::b9 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 1.066/1.180/1.361/0.114 ms
如果您暂时失去网络连接,网络拓扑发生变化等,它将自动重新连接。有关更多信息和在macOS等专有操作系统上的限制,请参见IP VPN参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。
7. 使用 weron vpn ethernet
创建第2层(以太网)覆盖网络
如果您想要更大的灵活性或在非IP网络上工作,以太网VPN是一个不错的选择。它的工作方式类似于n2n
或ZeroTier。由于API限制,这种VPN类型在macOS上不可用;请使用Asahi Linux、尊重您自由的计算机或第3层(IP)VPN作为替代。要开始,请在第一个节点上启动VPN:
$ sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:42:10+02:00","message":"Connecting to signaler"}
{"level":"info","id":"fe:60:a5:8b:81:36","time":"2022-05-06T22:42:11+02:00","message":"Connected to signaler"}
如果您想给TAP接口添加IP地址,请使用iproute2
或您操作系统的工具:
$ sudo ip addr add 192.0.2.1/24 dev tap0
$ sudo ip addr add 2001:db8::1/32 dev tap0
在另一个节点上,也启动VPN:
$ sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:52:56+02:00","message":"Connecting to signaler"}
{"level":"info","id":"b2:ac:ae:b6:32:8c","time":"2022-05-06T22:52:57+02:00","message":"Connected to signaler"}
{"level":"info","id":"fe:60:a5:8b:81:36","time":"2022-05-06T22:52:57+02:00","message":"Connected to peer"}
并添加IP地址:
$ sudo ip addr add 192.0.2.2/24 dev tap0
$ sudo ip addr add 2001:db8::2/32 dev tap0
现在您可以在节点之间通信:
$ ping 2001:db8::2
PING 2001:db8::2(2001:db8::2) 56 data bytes
64 bytes from 2001:db8::2: icmp_seq=1 ttl=64 time=1.20 ms
64 bytes from 2001:db8::2: icmp_seq=2 ttl=64 time=1.14 ms
64 bytes from 2001:db8::2: icmp_seq=3 ttl=64 time=1.24 ms
^C
--- 2001:db8::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.136/1.193/1.239/0.042 ms
如果您暂时失去网络连接,网络拓扑发生变化等,它将自动重新连接。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。
8. 使用 wrtcconn
编写您自己的协议
使用weron构建您自己的分布式应用几乎是微不足道的,类似于PeerJS的工作方式。以下是简单回显示例背后的核心逻辑:
// ...
for {
select {
case id := <-ids:
log.Println("Connected to signaler", id)
case peer := <-adapter.Accept():
log.Println("Connected to peer", peer.PeerID, "and channel", peer.ChannelID)
go func() {
defer func() {
log.Println("Disconnected from peer", peer.PeerID, "and channel", peer.ChannelID)
}()
reader := bufio.NewScanner(peer.Conn)
for reader.Scan() {
log.Printf("%s", reader.Bytes())
}
}()
go func() {
for {
if _, err := peer.Conn.Write([]byte("Hello!\n")); err != nil {
return
}
time.Sleep(time.Second)
}
}()
}
}
您可以使用最小适配器或命名适配器;后者在节点之间协商用户名,而前者不检查重复项。有关更多信息,请查看Go API并查看包中提供的示例、实用工具和服务以获取示例。
🚀 就是这样! 我们希望您喜欢使用weron。
Reference
Library API
Command Line Arguments
$ weron --help
基于WebRTC的覆盖网络。
在以下网址查找更多信息:
https://github.com/pojntfx/weron
用法:
weron [command]
可用命令:
chat 通过覆盖网络聊天
completion 为指定的shell生成自动完成脚本
help 关于任何命令的帮助
manager 管理信令服务器
signaler 启动信令服务器
utility 覆盖网络的实用工具
vpn 加入建立在覆盖网络上的虚拟专用网络
标志:
-h, --help weron的帮助
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
使用 "weron [command] --help" 获取有关命令的更多信息。
展开子命令参考
Signaling Server
$ weron signaler --help
启动信令服务器
用法:
weron signaler [flags]
别名:
signaler, sgl, s
标志:
--api-password string 管理API的密码(也可以使用API_PASSWORD环境变量设置)。如果设置了任何OIDC参数,则忽略此项。
--api-username string 管理API的用户名(也可以使用API_USERNAME环境变量设置)。如果设置了任何OIDC参数,则忽略此项。(默认为"admin")
--cleanup (警告:仅在停止所有其他访问数据库的服务器后启用此项!)在启动前从数据库中删除所有临时社区并重置客户端计数
--ephemeral-communities 启用临时社区的创建(默认为true)
--heartbeat duration 等待心跳的时间(默认为10s)
-h, --help signaler的帮助
--laddr string 监听地址(也可以使用PORT环境变量设置)(默认为":1337")
--oidc-client-id string OIDC客户端ID(例如myoidcclientid)(也可以使用OIDC_CLIENT_ID环境变量设置)
--oidc-issuer string OIDC颁发者(例如https://pojntfx.eu.auth0.com/)(也可以使用OIDC_ISSUER环境变量设置)
--postgres-url string 要使用的PostgreSQL数据库的URL(例如postgres://myuser:mypassword@myhost:myport/mydatabase)(也可以使用DATABASE_URL环境变量设置)。如果为空,将使用内存数据库。
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Manager
$ weron manager --help
管理信令服务器
用法:
weron manager [command]
别名:
manager, mgr, m
可用命令:
create 创建持久性社区
delete 删除持久性或临时社区
list 列出持久性和临时社区
标志:
-h, --help manager的帮助
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
使用 "weron manager [command] --help" 获取有关命令的更多信息。
Chat
$ weron chat --help
通过覆盖网络聊天
用法:
weron chat [flags]
别名:
chat, cht, c
标志:
--channels strings 要加入的社区中的频道的逗号分隔列表(默认为[weron/chat/primary])
--community string 要加入的社区的ID
--force-relay 强制使用TURN服务器
-h, --help chat的帮助
--ice strings STUN服务器(格式为stun:host:port)和TURN服务器(格式为username:credential@turn:host:port,例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp)的逗号分隔列表(默认为[stun:stun.l.google.com:19302])
--id-channel string 用于协商名称的频道(默认为"weron/chat/id")
--key string 社区的加密密钥
--kicks duration 等待踢出的时间(默认为5s)
--names strings 尝试并从中声明一个名称的逗号分隔列表
--password string 社区的密码
--raddr string 远程地址(默认为"wss://weron.up.railway.app/")
--timeout duration 等待连接的时间(默认为10s)
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Latency Measurement Utility
$ weron utility latency --help
测量覆盖网络的延迟
用法:
weron utility latency [flags]
别名:
latency, ltc, l
标志:
--community string 要加入的社区的ID
--force-relay 强制使用TURN服务器
-h, --help latency的帮助
--ice strings STUN服务器(格式为stun:host:port)和TURN服务器(格式为username:credential@turn:host:port,例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp)的逗号分隔列表(默认为[stun:stun.l.google.com:19302])
--key string 社区的加密密钥
--packet-length int 要发送和确认的数据包大小(默认为128)
--password string 社区的密码
--pause duration 发送下一个数据包前等待的时间(默认为1s)
--raddr string 远程地址(默认为"wss://weron.up.railway.app/")
--server 作为服务器
--timeout duration 等待连接的时间(默认为10s)
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Throughput Measurement Utility
$ weron utility throughput --help
测量覆盖网络的吞吐量
用法:
weron utility throughput [flags]
别名:
throughput, thr, t
标志:
--community string 要加入的社区的ID
--force-relay 强制使用TURN服务器
-h, --help throughput的帮助
--ice strings STUN服务器(格式为stun:host:port)和TURN服务器(格式为username:credential@turn:host:port,例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp)的逗号分隔列表(默认为[stun:stun.l.google.com:19302])
--key string 社区的加密密钥
--packet-count int 在等待确认前发送的数据包数量(默认为1000)
--packet-length int 要发送的数据包大小(默认为50000)
--password string 社区的密码
--raddr string 远程地址(默认为"wss://weron.up.railway.app/")
--server 作为服务器
--timeout duration 等待连接的时间(默认为10s)
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Layer 3 (IP) Overlay Networks
$ weron vpn ip --help
加入第3层覆盖网络
用法:
weron vpn ip [flags]
别名:
ip, i
标志:
--community string 要加入的社区的ID
--dev string 给TUN设备的名称(例如weron0)(默认自动生成;仅在Linux上支持)
--force-relay 强制使用TURN服务器
-h, --help ip的帮助
--ice strings STUN服务器(格式为stun:host:port)和TURN服务器(格式为username:credential@turn:host:port,例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp)的逗号分隔列表(默认为[stun:stun.l.google.com:19302])
--id-channel string 用于协商名称的频道(默认为"weron/ip/id")
--ips strings 要从中声明IP地址并给TUN设备的IP网络的逗号分隔列表(例如2001:db8::1/32,192.0.2.1/24)(在Windows上,只支持一个IP网络(IPv4或IPv6);在macOS上,IPv4网络被忽略)
--key string 社区的加密密钥
--kicks duration 等待踢出的时间(默认为5s)
--max-retries int 尝试声明IP地址的最大次数(默认为200)
--parallel int 用于解码帧的线程数量(默认为20)
--password string 社区的密码
--raddr string 远程地址(默认为"wss://weron.up.railway.app/")
--static 尝试静态地声明--ips标志中指定的确切IP,而不是从指定网络中选择随机IP
--timeout duration 等待连接的时间(默认为10s)
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Layer 2 (Ethernet) Overlay Networks
$ weron vpn ethernet --help
加入第2层覆盖网络
用法:
weron vpn ethernet [flags]
别名:
ethernet, eth, e
标志:
--community string 要加入的社区的ID
--dev string 给TAP设备的名称(例如weron0)(默认自动生成;仅在Linux和macOS上支持)
--force-relay 强制使用TURN服务器
-h, --help ethernet的帮助
--ice strings STUN服务器(格式为stun:host:port)和TURN服务器(格式为username:credential@turn:host:port,例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp)的逗号分隔列表(默认为[stun:stun.l.google.com:19302])
--key string 社区的加密密钥
--mac string 给TAP设备的MAC地址(例如3a:f8:de:7b:ef:52)(默认自动生成;仅在Linux上支持)
--parallel int 用于解码帧的线程数量(默认为20)
--password string 社区的密码
--raddr string 远程地址(默认为"wss://weron.up.railway.app/")
--timeout duration 等待连接的时间(默认为10s)
全局标志:
-v, --verbose int 详细程度级别(0为禁用,默认为info,7为trace)(默认为5)
Environment Variables
上面描述的所有命令行参数也可以使用环境变量设置;例如,要使用环境变量将--max-retries
设置为300
,使用WERON_MAX_RETRIES=300
。
Acknowledgements
- Font Awesome提供了用于图标和徽标的资产。
- songgao/water为weron提供了TUN/TAP设备库。
- pion/webrtc提供了WebRTC功能。
Contributing
要在本地构建和启动weron的开发版本,请运行以下命令:
$ git clone https://github.com/pojntfx/weron.git
$ cd weron
$ make depend
$ make && sudo make install
$ weron signaler # 启动信令服务器
# 在另一个终端
$ weron chat --raddr ws://localhost:1337 --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
# 在另一个终端
$ weron chat --raddr ws://localhost:1337 --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
有任何问题或需要帮助?在Matrix上与我们聊天!
License
weron (c) 2024 Felicitas Pojtinger and contributors
SPDX-License-Identifier: AGPL-3.0