
【重磅福利】Home Assistant应用商店正式上线!国内用户终于迎来春天~
📣 国内玩家苦网络问题久矣!今天给大家带来一个爆炸性好消息——专为国区打造的Home Assistant应用商店正式发布!从此安装插件、升级系统快到飞起,全程中文无障碍!快跟着教程三步上手👇 ⏳省流提示:文末有保姆级安装指南,手残党也能...
📣 国内玩家苦网络问题久矣!今天给大家带来一个爆炸性好消息——专为国区打造的Home Assistant应用商店正式发布!从此安装插件、升级系统快到飞起,全程中文无障碍!快跟着教程三步上手👇 ⏳省流提示:文末有保姆级安装指南,手残党也能...
你是否也希望通过 HA 获取电费相关信息呢?如果你也有这个想法,我相信这篇文章会让你这个想法得到实现。 实现这个想法是该项目:https://github.com/ARC-MX/sgcc_electricity_new 在这里我通过 Add...
10刀/年VPS晚高峰8K,成立于美国十几年的老牌 VPS 提供商,非国人商家,隐私无忧放心使用 ,支付渠道更灵活:支持支付宝、paypal、信用卡、加密货币等付款
不知道你有没有这样的场景,手机老是放在家里哪个角落忘记了,然后翻来翻去找手机找不到?放手机花了一秒,找手机花了一小时~ 本文的灵感来源于微信小友:Interesting Sou,经过琢磨才发现真的可以。 本文基于下面第一个链接而来,无论手机...
在上一篇文章中说到小米发布了官方的HA(Home Assistant)集成并介绍了如何接入 Home Assistant 。有很多新手朋友不知道接入 Home Assistant 有什么作用,今天我们就来详细的讨论下把 HA 中的设备(小米...
一、ha_xiaomi_home:小米设备接入Home Assistant ha_xiaomi_home 是小米官方提供的Home Assistant集成组件,它扮演着桥梁的角色,将你众多的小米智能设备无缝连接到Home Assistant...
前言 本文主要介绍如何在刷入CasaOS轻NAS系统的香橙派Zero3中安装HomeAssistant智能家居系统,并结合cpolar内网穿透工具轻松实现远程管理家中的智能设备,无需公网IP也不用设置路由器那么麻烦。 HomeAssista...
HomeAssistant是一个可以控制苹果、小米、MQTT等设备的智能家居平台。本文首先介绍如何使用群晖NAS的Docker套件来安装HomeAssistant平台,安装成功后,如何结合cpolar内网穿透工具实现公网访问。 基本条件: ...
在当今快速发展的智能家居领域,拥有一个强大且灵活的自动化平台是每个智能家居爱好者的梦想。Home Assistant,作为一款开源的智能家居自动化平台,正迅速成为智能家居市场的佼佼者。那么,Home Assistant究竟是什么?它又是如何...
家里的测试环境、办公室的开发机器,还有那台放在机房角落吃灰但关键时刻要用的备用服务器,怎么让你能随时能访问到?内网穿透!
说起内网穿透,我算是踩过不少坑了。从最开始用花生壳被限速限到怀疑人生,到后来自己搭建各种开源方案,这几年下来也算是摸出了点门道。今天就跟大家聊聊几个好用的内网穿透工具,特别是frp和WireGuard这两个我用得最多的。
简单说,内网穿透就是让外网能够访问到内网的服务。你想想,公司内网的服务器,家里的NAS,或者你在虚拟机里跑的测试环境,正常情况下外面是访问不到的。
这里面涉及到NAT(网络地址转换)的概念。现在IPv4地址不够用,运营商基本都会给你分配一个内网IP,然后通过NAT转换访问外网。比如你家里的路由器分配给设备的192.168.1.x这种地址,外网是直接访问不到的。
但有时候你就是需要在外面连进去看看,比如:
传统的解决方案是在路由器上做端口映射(Port Forwarding),但这玩意儿有个大问题:很多宽带运营商不给你公网IP,或者给了也是动态的。而且端口映射配置起来也挺麻烦,每个服务都要单独配置,安全性还不好控制。
我之前为了在家能连公司的服务器,专门买了个支持DDNS的路由器,结果发现运营商根本不给公网IP。
frp(Fast Reverse Proxy)应该是目前最流行的内网穿透工具了。这个项目是国人开发的,GitHub上有4万多个star,社区很活跃。我第一次用它的时候就被它的简单程度震惊了,配置文件就几行,跑起来就能用。
frp采用的是客户端-服务端模式,工作原理其实不复杂。你需要一台有公网IP的服务器作为中转(这台服务器叫frps,s代表server),然后在内网机器上运行frp客户端(叫frpc,c代表client)。
具体的流程是这样的:
内网服务frpc (客户端)frps (服务端)外部客户端内网服务frpc (客户端)frps (服务端)外部客户端初始化阶段请求处理阶段建立控制连接连接确认发送请求到frps暴露的端口通过控制连接通知frpc建立新的数据传输连接转发外部请求数据转发请求到内网服务返回响应数据转发响应数据转发响应给外部客户端
这种设计的好处是,内网的机器不需要有公网IP,只要能访问外网就行。而且所有的连接都是frpc主动发起的,不会被防火墙阻挡。
先说服务端配置。我一般用阿里云的轻量应用服务器,1核2G的配置就够用了,一个月几十块钱。系统选择Ubuntu 20.04,比较稳定。
首先下载frp:
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -zxvf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64
服务端配置文件 frps.toml
(新版本用toml格式了):
bindPort = 7000
vhostHTTPPort = 80
vhostHTTPSPort = 443
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "your_complex_password"
auth.method = "token"
auth.token = "your_very_secret_token_here"
# 日志配置
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 3
# 限制配置
transport.maxPoolCount = 5
transport.maxPortsPerClient = 0
这个配置比基础版本详细多了。bindPort是frp服务监听的端口,vhostHTTPPort和vhostHTTPSPort是HTTP和HTTPS服务的端口。webServer是管理界面的配置,通过浏览器访问 http://your_server_ip:7500 就能看到连接状态。
auth.token记得设置复杂一点,这是客户端连接的凭证。我一般用随机生成的32位字符串。
创建systemd服务文件 /etc/systemd/system/frps.service
:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
启动服务:
sudo mkdir -p /opt/frp
sudo cp frps frps.toml /opt/frp/
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
客户端配置就更灵活了。我一般会根据不同的需求创建不同的配置文件。
基础的客户端配置 frpc.toml
:
serverAddr = "your_server_ip"
serverPort = 7000
auth.method = "token"
auth.token = "your_very_secret_token_here"
# SSH服务穿透
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
# Web服务穿透
[[proxies]]
name = "web"
type = "http"
localPort = 8080
customDomains = ["your_domain.com"]
# HTTPS服务穿透
[[proxies]]
name = "web-https"
type = "https"
localPort = 8443
customDomains = ["your_domain.com"]
# 文件服务器
[[proxies]]
name = "file-server"
type = "tcp"
localIP = "127.0.0.1"
localPort = 9000
remotePort = 9000
# 数据库访问(谨慎使用)
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 3306
这个配置把本地的SSH服务映射到服务器的6000端口,把本地8080端口的web服务通过域名暴露出去。还包括了HTTPS、文件服务器和数据库的配置。
启动客户端:
./frpc -c frpc.toml
frp不只是简单的端口转发,还有很多高级功能。
HTTP基本认证:
[[proxies]]
name = "web-auth"
type = "http"
localPort = 8080
customDomains = ["admin.your_domain.com"]
httpUser = "admin"
httpPassword = "password"
这样访问的时候会弹出认证框,增加一层安全保护。
负载均衡:
# 服务器1
[[proxies]]
name = "web1"
type = "http"
localPort = 8080
customDomains = ["app.your_domain.com"]
group = "web"
groupKey = "123456"
# 服务器2(另一台机器)
[[proxies]]
name = "web2"
type = "http"
localPort = 8080
customDomains = ["app.your_domain.com"]
group = "web"
groupKey = "123456"
多台机器配置相同的group和groupKey,frp会自动做负载均衡。
带宽限制:
[[proxies]]
name = "limited-web"
type = "http"
localPort = 8080
customDomains = ["slow.your_domain.com"]
transport.bandwidthLimit = "1MB"
可以限制单个代理的带宽,避免某个服务占用太多资源。
健康检查:
[[proxies]]
name = "web-health"
type = "http"
localPort = 8080
customDomains = ["health.your_domain.com"]
healthCheck.type = "http"
healthCheck.timeoutSeconds = 3
healthCheck.maxFailed = 3
healthCheck.intervalSeconds = 10
healthCheck.path = "/health"
frp会定期检查后端服务的健康状态,如果检查失败会自动停止转发。
生产环境使用frp,监控是必不可少的。frp提供了几种监控方式:
Web Dashboard:
访问 http://your_server_ip:7500 可以看到:
Prometheus监控:
在frps.toml中添加:
webServer.pprofEnable = true
# Prometheus metrics
enablePrometheus = true
然后就可以通过 http://your_server_ip:7500/metrics 获取Prometheus格式的监控数据。
日志分析:
frp的日志很详细,包含了所有连接和错误信息。我一般会配合ELK或者Grafana Loki来做日志分析。
常见的日志格式:
2024-01-15 10:30:15 [I] [service.go:349] frps tcp listen on 0.0.0.0:7000
2024-01-15 10:30:20 [I] [control.go:464] [ssh] new proxy connection from [192.168.1.100:54321]
2024-01-15 10:30:25 [W] [control.go:123] [ssh] connection timeout, retry in 5 seconds
通过分析日志可以发现网络问题、性能瓶颈等。
连接池优化:
transport.poolCount = 10
transport.tcpMux = true
transport.tcpMuxKeepaliveInterval = 60
增加连接池大小,启用TCP多路复用,可以显著提高并发性能。
压缩配置:
[[proxies]]
name = "web-compressed"
type = "http"
localPort = 8080
customDomains = ["compressed.your_domain.com"]
transport.useCompression = true
对于文本内容较多的服务,启用压缩可以节省带宽。
缓冲区调优:
transport.tcpKeepalive = 7200
调整TCP keepalive参数,在网络不稳定的环境下可以提高连接稳定性。
安全性是frp部署中最重要的考虑因素:
TLS加密:
transport.tls.enable = true
transport.tls.certFile = "/path/to/cert.pem"
transport.tls.keyFile = "/path/to/key.pem"
启用TLS可以加密frpc和frps之间的通信。
IP白名单:
# 只允许特定IP连接
allowPorts = "6000-6010,7000,9000-9010"
[[proxies]]
name = "ssh-restricted"
type = "tcp"
localPort = 22
remotePort = 6000
allowUsers = ["user1", "user2"]
防火墙配置:
# 只允许必要的端口
ufw allow 7000/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 7500/tcp from your_admin_ip
ufw enable
在实际使用中,我遇到过不少问题,这里分享一些解决方案:
连接频繁断开:
这通常是网络不稳定导致的。可以调整心跳参数:
transport.heartbeatInterval = 30
transport.heartbeatTimeout = 90
端口被占用:
# 检查端口占用
netstat -tlnp | grep :7000
# 或者用ss命令
ss -tlnp | grep :7000
DNS解析问题:
如果使用自定义域名,确保DNS记录正确:
# 检查DNS解析
nslookup your_domain.com
dig your_domain.com
性能问题:
可以通过iperf3测试网络性能:
# 服务端
iperf3 -s -p 5201
# 客户端
iperf3 -c server_ip -p 5201 -t 60
说到WireGuard,这玩意儿真的是让我眼前一亮。我第一次听说WireGuard是在前前年,当时还是实验性质的项目。现在它已经集成到Linux内核里了,成为了VPN领域的新标准。
WireGuard最大的特点就是简单和高效。传统的VPN协议像OpenVPN、IPSec配置复杂,代码量庞大。OpenVPN有几十万行代码,IPSec的实现更是复杂得让人头疼。
WireGuard的代码量只有4000行左右,这意味着什么?代码少意味着bug少,安全性更高,性能也更好。而且代码简单,审计起来也容易,安全专家可以很快发现潜在的问题。
WireGuard使用了现代的加密算法:
这些都是经过密码学专家验证的安全算法,而且性能优异。
WireGuard没有传统VPN的服务端客户端概念,它更像是点对点的网络。每个节点(peer)都有自己的密钥对,通过公钥来识别对方。
这种设计的好处是配置灵活,你可以搭建星型网络(所有节点连接到一个中心节点),也可以搭建网状网络(节点之间互相连接)。
WireGuard的路由是基于密钥的,每个peer配置了允许的IP范围(AllowedIPs),只有匹配的流量才会通过VPN隧道发送。这种设计既简单又安全。
我以Ubuntu 20.04为例,演示完整的部署过程。
安装WireGuard:
sudo apt update
sudo apt install wireguard wireguard-tools resolvconf
现在的Linux发行版基本都内置了WireGuard支持,安装很简单。resolvconf是用来管理DNS的,虽然不是必须的,但建议安装。
生成密钥对:
# 切换到root用户,因为密钥文件权限要求很严格
sudo su
# 创建配置目录
mkdir -p /etc/wireguard
cd /etc/wireguard
# 生成服务端密钥对
wg genkey | tee server_private.key | wg pubkey > server_public.key
# 生成客户端密钥对
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
wg genkey | tee client2_private.key | wg pubkey > client2_public.key
# 设置正确的权限
chmod 600 *.key
WireGuard使用Curve25519椭圆曲线加密,密钥长度是32字节,用base64编码后是44个字符。
服务端配置:
创建 /etc/wireguard/wg0.conf
:
[Interface]
# 服务端私钥
PrivateKey = your_server_private_key_here
# VPN网段地址
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
# 保存配置
SaveConfig = true
# 网络转发规则
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# 客户端1
[Peer]
# 客户端公钥
PublicKey = client1_public_key_here
# 允许的IP范围
AllowedIPs = 10.0.0.2/32
# 客户端2
[Peer]
PublicKey = client2_public_key_here
AllowedIPs = 10.0.0.3/32
# 保持连接活跃
PersistentKeepalive = 25
这个配置创建了一个10.0.0.0/24的VPN网段,服务端IP是10.0.0.1。PostUp和PostDown是启动和关闭时执行的命令,用来配置iptables规则,实现NAT转发。
%i是WireGuard的变量,代表接口名称(这里是wg0)。eth0需要替换成你服务器的实际网卡名称,可以用 ip route
命令查看。
启用IP转发:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
这一步很重要,没有IP转发,客户端就无法通过VPN访问外网。
启动WireGuard:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
# 检查状态
sudo wg show
sudo systemctl status wg-quick@wg0
如果一切正常,你应该能看到类似这样的输出:
interface: wg0
public key: your_server_public_key
private key: (hidden)
listening port: 51820
客户端配置:
创建客户端配置文件 client1.conf
:
[Interface]
# 客户端私钥
PrivateKey = client1_private_key_here
# 客户端VPN IP
Address = 10.0.0.2/24
# DNS服务器
DNS = 8.8.8.8, 1.1.1.1
[Peer]
# 服务端公钥
PublicKey = server_public_key_here
# 服务端地址和端口
Endpoint = your_server_ip:51820
# 允许的IP范围(0.0.0.0/0表示所有流量都走VPN)
AllowedIPs = 0.0.0.0/0
# 保持连接活跃
PersistentKeepalive = 25
如果你只想访问内网资源,可以把AllowedIPs改成 10.0.0.0/24, 192.168.1.0/24
这样的内网网段。
客户端连接:
# Linux客户端
sudo wg-quick up client1
# 检查连接状态
sudo wg show
# 断开连接
sudo wg-quick down client1
多网段支持:
如果你的内网有多个网段,可以这样配置:
[Interface]
PrivateKey = server_private_key
Address = 10.0.0.1/24
ListenPort = 51820
# 添加额外的路由
PostUp = ip route add 192.168.1.0/24 dev %i
PostUp = ip route add 172.16.0.0/16 dev %i
PostDown = ip route del 192.168.1.0/24 dev %i
PostDown = ip route del 172.16.0.0/16 dev %i
[Peer]
PublicKey = client_public_key
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24, 172.16.0.0/16
动态DNS支持:
如果服务器IP会变化,可以使用域名:
[Peer]
PublicKey = server_public_key
Endpoint = vpn.your_domain.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
流量分流:
只让特定流量走VPN:
# 只有访问公司内网的流量走VPN
AllowedIPs = 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
# 或者只让特定域名走VPN(需要配合路由表)
PostUp = ip route add 1.2.3.4/32 dev %i # 某个特定服务器的IP
MTU调优:
[Interface]
PrivateKey = your_private_key
Address = 10.0.0.2/24
MTU = 1420
WireGuard的默认MTU是1420,在某些网络环境下可能需要调整。可以用ping测试最佳MTU:
# 测试MTU大小
ping -M do -s 1392 server_ip
CPU亲和性:
对于高流量的服务器,可以绑定WireGuard到特定CPU核心:
# 查看WireGuard进程
ps aux | grep wg
# 设置CPU亲和性
taskset -cp 2,3 $(pgrep wg)
内核参数调优:
# 增加网络缓冲区
echo 'net.core.rmem_max = 134217728' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 134217728' >> /etc/sysctl.conf
echo 'net.ipv4.udp_mem = 102400 873800 16777216' >> /etc/sysctl.conf
sudo sysctl -p
WireGuard在移动端的表现特别出色,我经常用手机连接公司网络。
Android配置:
iOS配置:
生成二维码:
# 安装qrencode
sudo apt install qrencode
# 生成二维码
qrencode -t ansiutf8 < client1.conf
手机扫描二维码就能直接导入配置,很方便。
状态监控:
# 查看详细状态
sudo wg show all
# 查看流量统计
sudo wg show wg0 transfer
# 实时监控
watch -n 1 'sudo wg show wg0'
日志查看:
# 查看系统日志
journalctl -u wg-quick@wg0 -f
# 查看内核日志
dmesg | grep wireguard
连接问题:
# 检查防火墙
sudo ufw status
sudo iptables -L
# 检查端口监听
sudo netstat -ulnp | grep 51820
# 测试UDP连通性
nc -u server_ip 51820
路由问题:
# 查看路由表
ip route show table all
# 手动添加路由
sudo ip route add 10.0.0.0/24 dev wg0
DNS问题:
# 检查DNS配置
cat /etc/resolv.conf
# 测试DNS解析
nslookup google.com
除了frp和WireGuard,还有一些其他的工具也挺不错的,各有特色。
ngrok应该是最知名的内网穿透服务了,特别适合临时演示用。我记得第一次用ngrok的时候,就被它的简单程度震惊了。
基本使用:
# 下载ngrok
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
# 注册账号获取token
./ngrok authtoken your_auth_token
# 暴露HTTP服务
./ngrok http 8080
# 暴露TCP服务
./ngrok tcp 22
# 暴露多个端口
./ngrok http 8080 --region=ap
ngrok会给你分配一个随机的子域名,比如 https://abc123.ngrok.io
,外网就能通过这个地址访问你的本地服务了。
配置文件:
创建 ~/.ngrok2/ngrok.yml
:
authtoken: your_auth_token_here
region: ap
tunnels:
web:
proto: http
addr: 8080
subdomain: myapp
ssh:
proto: tcp
addr: 22
remote_port: 2222
然后可以这样启动:
# 启动单个隧道
./ngrok start web
# 启动所有隧道
./ngrok start --all
自建ngrok服务:
ngrok是开源的,你也可以自己搭建:
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
# 生成证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=your_domain.com" -days 5000 -out rootCA.pem
# 编译
make release-server release-client
# 启动服务端
./bin/ngrokd -tlsKey=rootCA.key -tlsCrt=rootCA.pem -domain="your_domain.com" -httpAddr=":8080" -httpsAddr=":8443"
但说实话,自建ngrok比较麻烦,而且功能不如frp完善。
ZeroTier是一个很有意思的项目,它的理念是创建一个全球性的虚拟以太网。你可以把分布在世界各地的设备组成一个虚拟局域网,就像它们在同一个交换机下一样。
基本使用:
# 安装ZeroTier
curl -s https://install.zerotier.com | sudo bash
# 加入网络
sudo zerotier-cli join your_network_id
# 查看状态
sudo zerotier-cli status
sudo zerotier-cli listnetworks
ZeroTier的配置主要在web界面完成:
高级配置:
ZeroTier支持很多高级功能,比如路由规则、流量规则等。
路由配置:
# 让192.168.1.0/24网段通过特定节点路由
192.168.1.0/24 via 10.147.17.100
流量规则:
# 只允许HTTP和HTTPS流量
accept ipprotocol tcp and dport 80 or dport 443;
drop;
我用ZeroTier管理家里的各种设备,包括NAS、树莓派、软路由等等。出门在外也能随时访问,很方便。而且ZeroTier的移动端app做得很好,手机上也能轻松管理。
Tailscale基于WireGuard开发,但提供了更友好的管理界面和更简单的配置方式。它的理念是"零配置VPN",确实做到了开箱即用。
安装和使用:
# Ubuntu/Debian
curl -fsSL https://tailscale.com/install.sh | sh
# 启动并认证
sudo tailscale up
# 查看状态
tailscale status
# 查看IP
tailscale ip
第一次运行会给你一个认证链接,在浏览器中完成认证后,设备就自动加入你的Tailscale网络了。
高级功能:
Tailscale有很多企业级功能:
子网路由:
# 让某台机器作为子网网关
sudo tailscale up --advertise-routes=192.168.1.0/24
# 在管理界面启用子网路由
出口节点:
# 设置出口节点
sudo tailscale up --advertise-exit-node
# 使用出口节点
tailscale up --exit-node=exit-node-name
ACL(访问控制列表):
{
"acls": [
{
"action": "accept",
"src": ["group:admin"],
"dst": ["*:*"]
},
{
"action": "accept",
"src": ["group:dev"],
"dst": ["tag:dev-servers:*"]
}
]
}
不过Tailscale是商业服务,免费版本有设备数量限制(20台)。如果你不想自己维护服务器,而且设备不多,Tailscale是个不错的选择。
Cloudflare Tunnel(以前叫Argo Tunnel)是Cloudflare提供的免费内网穿透服务。它的优势是完全免费,而且性能很好,缺点是只支持HTTP/HTTPS协议。
安装和配置:
# 下载cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# 登录认证
cloudflared tunnel login
# 创建隧道
cloudflared tunnel create my-tunnel
# 配置隧道
cat > ~/.cloudflared/config.yml << EOF
tunnel: my-tunnel
credentials-file: /home/user/.cloudflared/tunnel-id.json
ingress:
- hostname: app.example.com
service: http://localhost:8080
- hostname: api.example.com
service: http://localhost:3000
- service: http_status:404
EOF
# 配置DNS
cloudflared tunnel route dns my-tunnel app.example.com
cloudflared tunnel route dns my-tunnel api.example.com
# 运行隧道
cloudflare tunnel run my-tunnel
高级配置:
Cloudflare Tunnel支持很多高级功能:
负载均衡:
ingress:
- hostname: app.example.com
service: http://localhost:8080
originRequest:
connectTimeout: 30s
tlsTimeout: 10s
- hostname: app.example.com
service: http://localhost:8081
访问控制:
ingress:
- hostname: admin.example.com
service: http://localhost:8080
originRequest:
access:
required: true
teamName: your-team
我用Cloudflare Tunnel部署了几个内部工具,比如监控面板、文档系统等。因为有Cloudflare的CDN加速,访问速度很快,而且自动HTTPS,省去了证书管理的麻烦。
如果你喜欢Tailscale的功能,但不想依赖商业服务,可以试试Headscale。它是Tailscale控制服务器的开源实现。
部署Headscale:
# 下载Headscale
wget https://github.com/juanfont/headscale/releases/latest/download/headscale_linux_amd64
chmod +x headscale_linux_amd64
sudo mv headscale_linux_amd64 /usr/local/bin/headscale
# 创建配置文件
sudo mkdir -p /etc/headscale
sudo cat > /etc/headscale/config.yaml << EOF
server_url: https://headscale.example.com
listen_addr: 0.0.0.0:8080
metrics_listen_addr: 127.0.0.1:9090
grpc_listen_addr: 0.0.0.0:50443
grpc_allow_insecure: false
private_key_path: /etc/headscale/private.key
ip_prefixes:
- fd7a:115c:a1e0::/48
- 100.64.0.0/10
derp:
server:
enabled: false
urls:
- https://controlplane.tailscale.com/derpmap/default
auto_update_enabled: true
update_frequency: 24h
disable_check_updates: false
ephemeral_node_inactivity_timeout: 30m
db_type: sqlite3
db_path: /etc/headscale/db.sqlite
acme_url: https://acme-v02.api.letsencrypt.org/directory
acme_email: your-email@example.com
tls_letsencrypt_hostname: headscale.example.com
tls_letsencrypt_cache_dir: /etc/headscale/cache
tls_letsencrypt_challenge_type: HTTP-01
log_level: info
EOF
# 生成私钥
sudo headscale generate private-key > /etc/headscale/private.key
# 创建systemd服务
sudo cat > /etc/systemd/system/headscale.service << EOF
[Unit]
Description=headscale controller
After=syslog.target
After=network.target
[Service]
Type=simple
User=headscale
Group=headscale
ExecStart=/usr/local/bin/headscale serve
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl enable headscale
sudo systemctl start headscale
客户端连接:
# 创建用户
sudo headscale users create myuser
# 生成认证密钥
sudo headscale --user myuser preauthkeys create --reusable --expiration 24h
# 客户端连接
sudo tailscale up --login-server https://headscale.example.com --authkey your-auth-key
Headscale的功能还在快速发展中,虽然不如Tailscale官方服务完善,但基本功能都有了。
|
|
|
|
---|---|---|---|
个人开发者 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
小团队 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
企业用户 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---|---|---|
只需HTTP/HTTPS |
|
|
|
|
|
|
|
|
需要TCP/UDP |
|
|
|
|
|
|
|
|
需要高性能 |
|
|
|
|
|
|
|
|
需要移动端支持 |
|
|
|
|
|
|
|
还在为找免费音乐发愁?
今天给大家介绍一款开源神器——Nuclear,它能帮你从全网免费音乐源头轻松抓取音乐,简直是穷人的 Spotify!不仅如此,它小巧无广告,还支持歌词显示和播放列表管理。还需要再花钱买会员吗?快来看看吧,这工具绝了!
Nuclear 是一个开源的免费音乐流媒体播放器,专注于从各种免费音乐平台抓取资源,为你打造没有广告、没有付费门槛的纯净听歌体验。它的设计宗旨可以概括为一句话:“坐拥全网音乐,一个播放器就全搞定!” 有点像免费的 Spotify,但库更大,还能下载音乐保存。
核心基于TypeScript开发,前端使用了Electron框架,支持多平台(Windows、MacOS 和 Linux),并且对性能密集型部分用了Rust来提升效率。
想体验这个开源音乐神器?安装非常简单!
choco install nuclear
brew install --cask nuclear
yay -S nuclear-player-bin
sudo snap install nuclear
flatpak install flathub org.js.nuclear.Nuclear
安装完成后,打开 Nuclear,搜索你喜欢的音乐,畅听即可!
Nuclear 的出现可以说是一场“音乐自由运动”。无论是热爱听歌的普通用户,还是喜欢探索新音乐的小众爱好者,它都能满足需求。完全开源、无广告、高自由度,这款小众但极其实用的播放器,将让你的音乐聆听方式变得更加简单和个性化。
很多新手朋友在研究抓包 IPTV 数据的时候,会遇到各种奇怪的播放地址:
👉 igmp://239.xx.xx.xx:1234
👉 rtp://
239.xx.xx.xx:9000
👉 rtsp://xxx.xxx.xxx/PLTV/88888888/224/322122xxxx/10000100000000060000000000xxxxxx_0.smil
看起来只是前缀不同,其实背后就是 IPTV 的不同协议。今天就带大家轻松了解一下 IGMP、RTSP 以及常见地址格式。
IGMP,全称 Internet Group Management Protocol,中文叫 互联网组管理协议。它就是 IPTV 里最常见的 组播直播 协议。
原理上组播和广播(给网络里的所有人都发送一个消息)有点相似,但是组播会划分一个更小的范围,并且这个范围里面设备的名单会同时由客户端和主机端进行维护,路由器会根据不同的组别来转发不同的数据。
特点:
✅ 只能看直播
✅ 地址稳定,很少变化
✅ 需要IPTV内网 IP
✅ 强制鉴权(更安全)
在 IPTV 播放地址里,如果你看到:
igmp://239.x.x.x:端口
那就是组播地址。它的工作方式是 一对多:路由器维护一个“组”,谁请求加入,就能收到相应的直播流。
RTSP,全称 Real Time Streaming Protocol,中文叫 实时流传输协议,常用于 IPTV 的 回放和点播。
该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流,有时候也会将其称为时移。
原理上 RTSP 和常见的 HTTP 协议比较相似,也就是 一对一,下面这个图可以帮助你理解。
你在观看节目的时候,可以随意的后退暂停,也可以自己想看什么就看什么,不用加入别人的组,整个资源都被你一个人享用。
特点:
✅ 支持直播 / 回放 / 点播
✅ 地址常是公网 IP
✅ 可暂停、快进、拖动进度条
✅ 鉴权因地区不同(有的地方要内网 IP,有些地方带动态参数容易失效)
常见格式是:
rtsp://xxx.xxx.xxx/PLTV/88888888/224/3221225890/10000100000000060000000000725782_0.smil
💡 适合:爱折腾、需要时移功能的用户。
有时候你会看到 IPTV 源是:
rtp://239.x.x.x:端口
RTP,全称 Real-time Transport Protocol,通常和 IGMP 配合使用,属于 点对点单播。
特点:
✅ 有些盒子/应用使用 rtp://
播放组播流
✅ 和 igmp://
本质上都在跑组播,但写法不同
✅ 兼容性差异:有的播放器只认 rtp://
,有的必须用 igmp://
所以:
👉 igmp:// 和 rtp:// 都可能代表组播,只是不同厂商/机顶盒的写法差异。
igmp:// 和 rtp:// → 都是 组播源,直播专用,稳定但受限于运营商IPTV专网。如需公网观看,需转为单播并将IPTV专网与公网融合。
rtsp:// → 常见于 点播/回放源,部分地方可直接在公网使用。
网络测速太慢?家里的网速常常卡到爆?
今天给大家安利一款真实解决网络状况排查难题的开源神器 NetQuality!它能帮你快速检测网络质量、彻底分析网络延迟,甚至还能一键生成高颜值测试报告。这么贴心的工具,难道不值得一试吗?绝了!
NetQuality 是一款强大而方便的开源网络质量检测工具。它能够直观地展示网络延迟、路由信息、网速等多重要数据,非常适合网络运维人员、开发者,甚至日常用户用来排查网络问题。支持 Windows(通过 Docker)、macOS、多种 Linux 发行版等热门平台安装,灵活可靠,堪称手握“网络显微镜”!
便捷模式(推荐): 执行以下命令,一键完成网络测试,默认开启交互界面模式:
bash <(curl -Ls https://Check.Place) -N
高级模式: 可根据需求选择特定的测试类型,如仅检测 IPv4 或 IPv6。
# 检测 IPv4
bash <(curl -Ls https://Net.Check.Place) -4
# 延迟模式
bash <(curl -Ls https://Net.Check.Place) -P
# 针对某省份回程路由检测(如广西)
bash <(curl -Ls https://Net.Check.Place) -R 广西
Docker 模式(跨平台支持): Linux 用户:
docker run --rm --net=host -it xykt/netquality -N && docker rmi xykt/netquality > /dev/null 2>&1
Windows 用户:
docker run --rm --net=host -it xykt/netquality -N
NetQuality 是网络技术人不得不尝试的一款工具。无论你是 IT 工程师调试网络,还是普通用户排查家庭网速问题,它都能准确、详细地呈现网络质量,帮你快速锁定问题根源。
开源地址https://github.com/xykt/NetQuality
智能配置面板,支持多市场股票分析,5级研究深度选择
实时进度跟踪,可视化分析过程,智能时间预估
专业投资报告,多维度分析结果,一键导出功能
python start_web.py
或 docker-compose up -d
http://localhost:8501
AAPL
, TSLA
, MSFT
, NVDA
, GOOGL
000001
, 600519
, 300750
, 002415
0700.HK
, 9988.HK
, 3690.HK
, 1810.HK
📖 详细指南: 完整的Web界面使用说明请参考 🖥️ Web界面详细使用指南
功能特性 | 状态 | 详细说明 |
---|---|---|
🧠 智能新闻分析 | 🆕 v0.1.12 | AI新闻过滤,质量评估,相关性分析 |
🔧 新闻过滤器 | 🆕 v0.1.12 | 多层次过滤,基础/增强/集成三级处理 |
📰 统一新闻工具 | 🆕 v0.1.12 | 整合多源新闻,统一接口,智能检索 |
🤖 多LLM提供商 | 🆕 v0.1.11 | 4大提供商,60+模型,智能分类管理 |
💾 模型选择持久化 | 🆕 v0.1.11 | URL参数存储,刷新保持,配置分享 |
🎯 快速选择按钮 | 🆕 v0.1.11 | 一键切换热门模型,提升操作效率 |
📊 实时进度显示 | ✅ v0.1.10 | 异步进度跟踪,智能步骤识别,准确时间计算 |
💾 智能会话管理 | ✅ v0.1.10 | 状态持久化,自动降级,跨页面恢复 |
🎯 一键查看报告 | ✅ v0.1.10 | 分析完成后一键查看,智能结果恢复 |
🖥️ Streamlit界面 | ✅ 完整支持 | 现代化响应式界面,实时交互和数据可视化 |
⚙️ 配置管理 | ✅ 完整支持 | Web端API密钥管理,模型选择,参数配置 |
功能特性 | 状态 | 详细说明 |
---|---|---|
🖥️ 界面与日志分离 | ✅ 完整支持 | 用户界面清爽美观,技术日志独立管理 |
🔄 智能进度显示 | ✅ 完整支持 | 多阶段进度跟踪,防止重复提示 |
⏱️ 时间预估功能 | ✅ 完整支持 | 智能分析阶段显示预计耗时 |
🌈 Rich彩色输出 | ✅ 完整支持 | 彩色进度指示,状态图标,视觉效果提升 |
模型提供商 | 支持模型 | 特色功能 | 新增功能 |
---|---|---|---|
🇨🇳 阿里百炼 | qwen-turbo/plus/max | 中文优化,成本效益高 | ✅ 集成 |
🇨🇳 DeepSeek | deepseek-chat | 工具调用,性价比极高 | ✅ 集成 |
🌍 Google AI | 9个验证模型 | 最新Gemini 2.5系列 | 🆕 升级 |
├─最新旗舰 | gemini-2.5-pro/flash | 最新旗舰,超快响应 | 🆕 新增 |
├─稳定推荐 | gemini-2.0-flash | 推荐使用,平衡性能 | 🆕 新增 |
├─经典强大 | gemini-1.5-pro/flash | 经典稳定,高质量分析 | ✅ 集成 |
└─轻量快速 | gemini-2.5-flash-lite | 轻量级任务,快速响应 | 🆕 新增 |
🌐 原生OpenAI | 自定义端点支持 | 任意OpenAI兼容端点 | 🆕 新增 |
🌐 OpenRouter | 60+模型聚合平台 | 一个API访问所有主流模型 | ✅ 集成 |
├─OpenAI | o4-mini-high, o3-pro, GPT-4o | 最新o系列,推理专业版 | ✅ 集成 |
├─Anthropic | Claude 4 Opus/Sonnet/Haiku | 顶级性能,平衡版本 | ✅ 集成 |
├─Meta | Llama 4 Maverick/Scout | 最新Llama 4系列 | ✅ 集成 |
└─自定义 | 任意OpenRouter模型ID | 无限扩展,个性化选择 | ✅ 集成 |
🎯 快速选择: 5个热门模型快速按钮 | 💾 持久化: URL参数存储,刷新保持 | 🔄 智能切换: 一键切换不同提供商
市场类型 | 数据源 | 覆盖范围 |
---|---|---|
🇨🇳 A股 | Tushare, AkShare, 通达信 | 沪深两市,实时行情,财报数据 |
🇭🇰 港股 | AkShare, Yahoo Finance | 港交所,实时行情,基本面 |
🇺🇸 美股 | FinnHub, Yahoo Finance | NYSE, NASDAQ,实时数据 |
📰 新闻 | Google News | 实时新闻,多语言支持 |
分析师团队: 📈市场分析 | 💰基本面分析 | 📰新闻分析 | 💬情绪分析 研究团队: 🐂看涨研究员 | 🐻看跌研究员 | 🎯交易决策员 管理层: 🛡️风险管理员 | 👔研究主管
# 1. 克隆项目 git clone https://github.com/hsliuping/TradingAgents-CN.git cd TradingAgents-CN # 2. 配置环境变量 cp .env.example .env # 编辑 .env 文件,填入API密钥 # 3. 启动服务 # 首次启动或代码变更时(需要构建镜像) docker-compose up -d --build # 日常启动(镜像已存在,无代码变更) docker-compose up -d # 智能启动(自动判断是否需要构建) # Windows环境 powershell -ExecutionPolicy Bypass -File scripts\smart_start.ps1 # Linux/Mac环境 chmod +x scripts/smart_start.sh && ./scripts/smart_start.sh # 4. 访问应用 # Web界面: http://localhost:8501
# 1. 升级pip (重要!避免安装错误) python -m pip install --upgrade pip # 2. 安装依赖 pip install -e . # 3. 启动应用 python start_web.py # 4. 访问 http://localhost:8501
000001
(A股) / AAPL
(美股) / 0700.HK
(港股)系统提供以下默认账号,首次启动时自动创建:
用户名 | 密码 | 角色 | 权限说明 |
---|---|---|---|
admin | admin123 | 管理员 | 完整系统权限,用户管理,系统配置 |
user | user123 | 普通用户 | 股票分析,报告查看,基础功能 |
⚠️ 安全提醒: 首次登录后请立即修改默认密码!
系统提供完整的命令行用户管理工具:
# 使用 PowerShell 脚本 .\scripts\user_manager.ps1 list # 列出所有用户 .\scripts\user_manager.ps1 change-password admin # 修改密码 .\scripts\user_manager.ps1 create newuser trader # 创建新用户 .\scripts\user_manager.ps1 delete olduser # 删除用户 # 或使用批处理文件 .\scripts\user_manager.bat list
# 直接使用 Python 脚本 python scripts/user_password_manager.py list python scripts/user_password_manager.py change-password admin python scripts/user_password_manager.py create newuser --role trader python scripts/user_password_manager.py delete olduser python scripts/user_password_manager.py reset # 重置为默认配置
用户配置存储在:web/config/users.json
📚 详细文档: 完整的用户管理指南请参考 scripts/USER_MANAGEMENT.md
核心技术: Python 3.10+ | LangChain | Streamlit | MongoDB | Redis AI模型: DeepSeek V3 | 阿里百炼 | Google AI | OpenRouter(60+模型) | OpenAI 数据源: Tushare | AkShare | FinnHub | Yahoo Finance 部署: Docker | Docker Compose | 本地部署
相比原版新增: 智能新闻分析 | 多层次新闻过滤 | 新闻质量评估 | 统一新闻工具 | 多LLM提供商集成 | 模型选择持久化 | 快速切换按钮 | | 实时进度显示 | 智能会话管理 | 中文界面 | A股数据 | 国产LLM | Docker部署 | 专业报告导出 | 统一日志管理 | Web配置界面 | 成本优化
Docker部署包含的服务:
适用场景: 开发环境、自定义配置、离线使用
# 1. 克隆项目 git clone https://github.com/hsliuping/TradingAgents-CN.git cd TradingAgents-CN # 2. 创建虚拟环境 python -m venv env # Windows env\Scripts\activate # Linux/macOS source env/bin/activate # 3. 升级pip python -m pip install --upgrade pip # 4. 安装所有依赖 pip install -r requirements.txt #或者使用pip install -e . pip install -e . # 注意:requirements.txt已包含所有必需依赖: # - 数据库支持 (MongoDB + Redis) # - 多市场数据源 (Tushare, AKShare, FinnHub等) # - Web界面和报告导出功能
# 复制配置模板 cp .env.example .env # 编辑 .env 文件,配置以下必需的API密钥: DASHSCOPE_API_KEY=your_dashscope_api_key_here FINNHUB_API_KEY=your_finnhub_api_key_here # 推荐:Tushare API(专业A股数据) TUSHARE_TOKEN=your_tushare_token_here TUSHARE_ENABLED=true # 可选:其他AI模型API GOOGLE_API_KEY=your_google_api_key_here DEEPSEEK_API_KEY=your_deepseek_api_key_here # 数据库配置(可选,提升性能) # 本地部署使用标准端口 MONGODB_ENABLED=false # 设为true启用MongoDB REDIS_ENABLED=false # 设为true启用Redis MONGODB_HOST=localhost MONGODB_PORT=27017 # 标准MongoDB端口 REDIS_HOST=localhost REDIS_PORT=6379 # 标准Redis端口 # Docker部署时需要修改主机名 # MONGODB_HOST=mongodb # REDIS_HOST=redis
本地部署模式:
# 数据库配置(本地部署) MONGODB_ENABLED=true REDIS_ENABLED=true MONGODB_HOST=localhost # 本地主机 MONGODB_PORT=27017 # 标准端口 REDIS_HOST=localhost # 本地主机 REDIS_PORT=6379 # 标准端口
Docker部署模式:
# 数据库配置(Docker部署) MONGODB_ENABLED=true REDIS_ENABLED=true MONGODB_HOST=mongodb # Docker容器服务名 MONGODB_PORT=27017 # 标准端口 REDIS_HOST=redis # Docker容器服务名 REDIS_PORT=6379 # 标准端口
💡 配置提示:
- 本地部署:需要手动启动MongoDB和Redis服务
- Docker部署:数据库服务通过docker-compose自动启动
- 端口冲突:如果本地已有数据库服务,可修改docker-compose.yml中的端口映射
# OpenAI (需要科学上网) OPENAI_API_KEY=your_openai_api_key # Anthropic (需要科学上网) ANTHROPIC_API_KEY=your_anthropic_api_key
本项目支持 MongoDB 和 Redis 数据库,提供:
🐳 Docker部署(推荐)
如果您使用Docker部署,数据库已自动包含在内:
# Docker部署会自动启动所有服务,包括: docker-compose up -d --build # - Web应用 (端口8501) # - MongoDB (端口27017) # - Redis (端口6379) # - 数据库管理界面 (端口8081, 8082)
💻 本地部署 - 数据库配置
如果您使用本地部署,可以选择以下方式:
方式一:仅启动数据库服务
# 仅启动 MongoDB + Redis 服务(不启动Web应用) docker-compose up -d mongodb redis mongo-express redis-commander # 查看服务状态 docker-compose ps # 停止服务 docker-compose down
方式二:完全本地安装
# 数据库依赖已包含在requirements.txt中,无需额外安装 # 启动 MongoDB (默认端口 27017) mongod --dbpath ./data/mongodb # 启动 Redis (默认端口 6379) redis-server
⚠️ 重要说明:
- 🐳 Docker部署: 数据库自动包含,无需额外配置
- 💻 本地部署: 可选择仅启动数据库服务或完全本地安装
- 📋 推荐: 使用Docker部署以获得最佳体验和一致性
环境变量配置(推荐):
# MongoDB 配置 MONGODB_HOST=localhost MONGODB_PORT=27017 MONGODB_DATABASE=trading_agents MONGODB_USERNAME=admin MONGODB_PASSWORD=your_password # Redis 配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=your_redis_password REDIS_DB=0
配置文件方式:
# config/database_config.py DATABASE_CONFIG = { 'mongodb': { 'host': 'localhost', 'port': 27017, 'database': 'trading_agents', 'username': 'admin', 'password': 'your_password' }, 'redis': { 'host': 'localhost', 'port': 6379, 'password': 'your_redis_password', 'db': 0 } }
MongoDB 功能:
Redis 功能:
系统采用多层数据源降级策略,确保高可用性:
📊 数据获取流程:
1. 🔍 检查 Redis 缓存 (毫秒级)
2. 📚 查询 MongoDB 存储 (秒级)
3. 🌐 调用通达信API (秒级)
4. 💾 本地文件缓存 (备用)
5. ❌ 返回错误信息
配置降级策略:
# 在 .env 文件中配置 ENABLE_MONGODB=true ENABLE_REDIS=true ENABLE_FALLBACK=true # 缓存过期时间(秒) REDIS_CACHE_TTL=300 MONGODB_CACHE_TTL=3600
生产环境配置:
# MongoDB 优化 MONGODB_MAX_POOL_SIZE=50 MONGODB_MIN_POOL_SIZE=5 MONGODB_MAX_IDLE_TIME=30000 # Redis 优化 REDIS_MAX_CONNECTIONS=20 REDIS_CONNECTION_POOL_SIZE=10 REDIS_SOCKET_TIMEOUT=5
# 初始化数据库 python scripts/setup/init_database.py # 系统状态检查 python scripts/validation/check_system_status.py # 清理缓存工具 python scripts/maintenance/cleanup_cache.py --days 7
常见问题解决:
Configuration error: An instance of Chroma already exists for ephemeral with different settings
错误,而Windows 11正常。快速解决方案:# 方案1:禁用内存功能(推荐) # 在 .env 文件中添加: MEMORY_ENABLED=false # 方案2:使用专用修复脚本 powershell -ExecutionPolicy Bypass -File scripts\fix_chromadb_win10.ps1 # 方案3:管理员权限运行 # 右键PowerShell -> "以管理员身份运行"详细解决方案:参考 Windows 10兼容性指南💡 提示: 即使不配置数据库,系统仍可正常运行,会自动降级到API直接调用模式。数据库配置是可选的性能优化功能。
📚 详细文档: 更多数据库配置信息请参考 数据库架构文档
本项目现已支持将股票分析结果导出为多种专业格式:
支持的导出格式:
报告内容结构:
使用方法:
安装导出依赖:
# 安装Python依赖 pip install markdown pypandoc # 安装系统工具(用于PDF导出) # Windows: choco install pandoc wkhtmltopdf # macOS: brew install pandoc wkhtmltopdf # Linux: sudo apt-get install pandoc wkhtmltopdf
📚 详细文档: 完整的导出功能使用指南请参考 导出功能指南
如果您使用Docker部署,应用已经自动启动:
# 应用已在Docker中运行,直接访问: # Web界面: http://localhost:8501 # 数据库管理: http://localhost:8081 # 缓存管理: http://localhost:8082 # 查看运行状态 docker-compose ps # 查看日志 docker-compose logs -f web
如果您使用本地部署:
# 1. 激活虚拟环境 # Windows .\env\Scripts\activate # Linux/macOS source env/bin/activate # 2. 安装项目到虚拟环境(重要!) pip install -e . # 3. 启动Web管理界面 # 方法1:使用项目启动脚本(推荐) python start_web.py # 方法2:使用原始启动脚本 python web/run_web.py # 方法3:直接使用streamlit(需要先安装项目) streamlit run web/app.py
然后在浏览器中访问 http://localhost:8501
Web界面特色功能:
研究深度级别说明:
from tradingagents.graph.trading_graph import TradingAgentsGraph from tradingagents.default_config import DEFAULT_CONFIG # 配置阿里百炼 config = DEFAULT_CONFIG.copy() config["llm_provider"] = "dashscope" config["deep_think_llm"] = "qwen-plus" # 深度分析 config["quick_think_llm"] = "qwen-turbo" # 快速任务 # 创建交易智能体 ta = TradingAgentsGraph(debug=True, config=config) # 分析股票 (以苹果公司为例) state, decision = ta.propagate("AAPL", "2024-01-15") # 输出分析结果 print(f"推荐动作: {decision['action']}") print(f"置信度: {decision['confidence']:.1%}") print(f"风险评分: {decision['risk_score']:.1%}") print(f"推理过程: {decision['reasoning']}")
# 阿里百炼演示(推荐中文用户) python examples/dashscope/demo_dashscope_chinese.py # 阿里百炼完整演示 python examples/dashscope/demo_dashscope.py # 阿里百炼简化测试 python examples/dashscope/demo_dashscope_simple.py # OpenAI演示(需要国外API) python examples/openai/demo_openai.py # 集成测试 python tests/integration/test_dashscope_integration.py
新功能: 灵活配置数据存储路径,支持多种配置方式:
# 查看当前数据目录配置 python -m cli.main data-config --show # 设置自定义数据目录 python -m cli.main data-config --set /path/to/your/data # 重置为默认配置 python -m cli.main data-config --reset
环境变量配置:
# Windows set TRADING_AGENTS_DATA_DIR=C:\MyTradingData # Linux/macOS export TRADING_AGENTS_DATA_DIR=/home/user/trading_data
程序化配置:
from tradingagents.config_manager import ConfigManager # 设置数据目录 config_manager = ConfigManager() config_manager.set_data_directory("/path/to/data") # 获取配置 data_dir = config_manager.get_data_directory() print(f"数据目录: {data_dir}")
配置优先级: 程序设置 > 环境变量 > 配置文件 > 默认值
详细说明请参考: 📁 数据目录配置指南
# 启动交互式命令行界面 python -m cli.main
💡 提示: 我们的
docs/
目录包含了 50,000+字 的详细中文文档,这是与原版最大的区别!
🌟 这是本项目与原版最大的区别! 我们构建了业界最完整的中文金融AI框架文档体系,包含超过 50,000字 的详细技术文档,20+ 个专业文档文件,100+ 个代码示例。
对比维度 | 原版 TradingAgents | 🚀中文增强版 |
---|---|---|
文档语言 | 英文基础说明 | 完整中文体系 |
文档深度 | 简单介绍 | 深度技术剖析 |
架构说明 | 概念性描述 | 详细设计文档 + 架构图 |
使用指南 | 基础示例 | 从入门到专家的完整路径 |
故障排除 | 无 | 详细FAQ + 解决方案 |
代码示例 | 少量示例 | 100+ 实用示例 |
docs/
├── 📖 overview/ # 项目概览 - 新手必读
│ ├── project-overview.md # 📋 项目详细介绍
│ ├── quick-start.md # 🚀 10分钟快速上手
│ └── installation.md # ⚙️ 详细安装指南
│
├── 🏗️ architecture/ # 系统架构 - 深度理解
│ ├── system-architecture.md # 🏛️ 整体架构设计
│ ├── agent-architecture.md # 🤖 智能体协作机制
│ ├── data-flow-architecture.md # 📊 数据流处理架构
│ └── graph-structure.md # 🔄 LangGraph工作流
│
├── 🤖 agents/ # 智能体详解 - 核心组件
│ ├── analysts.md # 📈 四类专业分析师
│ ├── researchers.md # 🔬 看涨/看跌辩论机制
│ ├── trader.md # 💼 交易决策制定
│ ├── risk-management.md # 🛡️ 多层风险评估
│ └── managers.md # 👔 管理层协调
│
├── 📊 data/ # 数据处理 - 技术核心
│ ├── data-sources.md # 🔌 多数据源集成
│ ├── data-processing.md # ⚙️ 数据处理流程
│ └── caching.md # 💾 缓存优化策略
│
├── ⚙️ configuration/ # 配置优化 - 性能调优
│ ├── config-guide.md # 📝 详细配置说明
│ └── llm-config.md # 🧠 LLM模型优化
│
├── 💡 examples/ # 示例教程 - 实战应用
│ ├── basic-examples.md # 📚 8个基础示例
│ └── advanced-examples.md # 🚀 高级开发示例
│
└── ❓ faq/ # 问题解决 - 疑难解答
└── faq.md # 🆘 常见问题FAQ
🏗️ 架构文档 - 深度理解系统设计
🤖 智能体文档 - 核心组件详解
📊 数据处理 - 技术核心实现
⚙️ 配置与部署 - 性能调优指南
💡 示例和教程 - 实战应用指南
❓ 帮助文档 - 问题解决方案
# 低成本配置示例 cost_optimized_config = { "deep_think_llm": "gpt-4o-mini", "quick_think_llm": "gpt-4o-mini", "max_debate_rounds": 1, "online_tools": False # 使用缓存数据 }
开源地址:https://github.com/hsliuping/TradingAgents-CN
在当今数字化时代,稳定、高速的 VPS(虚拟专用服务器)对于个人开发者、企业搭建网站或开展线上业务至关重要。本次为大家整理了多款 CN2 GIA 高速优化线路 VPS 方案,涵盖不同配置、地区及价格,方便您根据自身需求挑选,同时附上购买相关实用信息,助力您高效完成选购。
以下是各款 VPS 方案的具体配置、可选地区(机房)、价格及购买链接,您可根据业务需求(如流量需求、访问速度要求、预算等)进行选择。
方案
|
CPU
|
内存
|
硬盘
|
月流量
|
带宽
|
可选地区(机房)
|
价格
|
购买链接
|
---|---|---|---|---|---|---|---|---|
CN2 GIA-E | 2核 | 1GB | 20GB | 1000GB | 2.5Gbps | 13 个机房可选 | $169.99/年 | 购买 |
CN2 GIA-E | 3核 | 2GB | 40GB | 2000GB | 2.5Gbps | 13 个机房可选 | $299.99/年 | 购买 |
CN2 GIA-E | 4核 | 4GB | 80GB | 3000GB | 2.5Gbps | 13 个机房可选 | $549.99/年 | 购买 |
CN2 GIA-E | 6核 | 8GB | 160GB | 5000GB | 5Gbps | 13 个机房可选 | $879.99/年 | 购买 |
CN2 GIA-E | 8核 | 16GB | 320GB | 8000GB | 5Gbps | 13 个机房可选 | $1599.99/年 | 购买 |
CN2 GIA-E | 10核 | 32GB | 640GB | 10000GB | 10Gbps | 13 个机房可选 | $2759.99/年 | 购买 |
CN2 GIA-E | 12核 | 64GB | 1280GB | 12000GB | 10Gbps | 13 个机房可选 | $5399.99/年 | 购买 |
DUBAI | 2核 | 1GB | 20GB | 500GB | 1Gbps | 14 个机房可选 | $169.99/年 | 购买 |
DUBAI | 3核 | 2GB | 40GB | 1000GB | 1Gbps | 14 个机房可选 | $299.99/年 | 购买 |
DUBAI | 4核 | 4GB | 80GB | 2000GB | 1Gbps | 14 个机房可选 | $549.99/年 | 购买 |
DUBAI | 6核 | 8GB | 160GB | 3000GB | 1Gbps | 14 个机房可选 | $879.99/年 | 购买 |
DUBAI | 8核 | 16GB | 320GB | 4000GB | 1Gbps | 14 个机房可选 | $1599.99/年 | 购买 |
DUBAI | 10核 | 32GB | 640GB | 5000GB | 1Gbps | 14 个机房可选 | $2759.99/年 | 购买 |
DUBAI | 12核 | 64GB | 1280GB | 6000GB | 1Gbps | 14 个机房可选 | $5399.99/年 | 购买 |
OSAKA CN2 GIA | 2核 | 2GB | 40GB | 500GB | 1.5Gbps | 大阪 CN2 GIA | $499.99/年 | 购买 |
OSAKA CN2 GIA | 4核 | 4GB | 80GB | 1000GB | 1.5Gbps | 大阪 CN2 GIA | $869.99/年 | 购买 |
OSAKA CN2 GIA | 6核 | 8GB | 160GB | 2000GB | 1.5Gbps | 大阪 CN2 GIA | $1665.99/年 | 购买 |
OSAKA CN2 GIA | 8核 | 16GB | 320GB | 4000GB | 1.5Gbps | 大阪 CN2 GIA | $3279.99/年 | 购买 |
OSAKA CN2 GIA | 10核 | 32GB | 640GB | 6000GB | 1.5Gbps | 大阪 CN2 GIA | $5549.99/年 | 购买 |
OSAKA CN2 GIA | 12核 | 64GB | 1280GB | 8000GB | 1.5Gbps | 大阪 CN2 GIA | $10559.99/年 | 购买 |
TOKYO CN2 GIA | 2核 | 2GB | 40GB | 500GB | 1.2Gbps | 东京 CN2 GIA | $899.99/年 | 购买 |
TOKYO CN2 GIA | 4核 | 4GB | 80GB | 1000GB | 1.2Gbps | 东京 CN2 GIA | $1559.99/年 | 购买 |
TOKYO CN2 GIA | 6核 | 8GB | 160GB | 2000GB | 1.2Gbps | 东京 CN2 GIA | $2999.99/年 | 购买 |
TOKYO CN2 GIA | 8核 | 16GB | 320GB | 4000GB | 1.2Gbps | 东京 CN2 GIA | $5899.99/年 | 购买 |
TOKYO CN2 GIA | 10核 | 32GB | 640GB | 6000GB | 1.2Gbps | 东京 CN2 GIA | $9989.99/年 | 购买 |
TOKYO CN2 GIA | 12核 | 64GB | 1280GB | 8000GB | 1.2Gbps | 东京 CN2 GIA | $18989.99/年 | 购买 |
HK CN2 GIA(延迟最低) | 2核 | 2GB | 40GB | 500GB | 1Gbps | 香港、东京 CN2 GIA | $899.99/年 | 购买 |
HK CN2 GIA | 4核 | 4GB | 80GB | 1000GB | 1Gbps | 香港、东京 CN2 GIA | $1559.99/年 | 购买 |
HK CN2 GIA | 6核 | 8GB | 160GB | 2000GB | 1Gbps | 香港、东京 CN2 GIA | $2999.99/年 | 购买 |
HK CN2 GIA | 8核 | 16GB | 320GB | 4000GB | 1Gbps | 香港、东京 CN2 GIA | $5899.99/年 | 购买 |
HK CN2 GIA | 10核 | 32GB | 640GB | 6000GB | 1Gbps | 香港、东京 CN2 GIA | $9989.99/年 | 购买 |
HK CN2 GIA | 12核 | 64GB | 1280GB | 8000GB | 1Gbps | 香港、东京 CN2 GIA | $18989.99/年 | 购买 |
KVM(最便宜) | 2核 | 1GB | 20GB | 1000GB | 1Gbps | 9 个机房可选 | $49.99/年 | 购买 |
KVM | 3核 | 2GB | 40GB | 2000GB | 1Gbps | 9 个机房可选 | $99.99/年 | 购买 |
KVM | 4核 | 4GB | 80GB | 3000GB | 1Gbps | 9 个机房可选 | $199.99/年 | 购买 |
KVM | 5核 | 8GB | 160GB | 4000GB | 1Gbps | 9 个机房可选 | $399.99/年 | 购买 |
KVM | 6核 | 16GB | 320GB | 5000GB | 1Gbps | 9 个机房可选 | $799.99/年 | 购买 |
KVM | 7核 | 24GB | 480GB | 6000GB | 1Gbps | 9 个机房可选 | $1199.99/年 | 购买 |