wikihost-opensource / als Goto Github PK
View Code? Open in Web Editor NEWAnother Looking-glass Server
License: MIT License
Another Looking-glass Server
License: MIT License
能否再增加跟之前一样的暗黑界面,还是那个看着舒服
换了几个系统为何无法调用iperf3?
感谢作者的回复,我也在TG频道做了推广 https://t.me/mffjc/1035
群友希望能有一些自主修改的地方
例如
服务器提供商
谁资助的测试节点
同时,希望有个交流的地方例如, tg组啥的
How to add domain?
同样使用nginx反代到https协议下面,指定location /looking_glass
貌似页面显示也不正常了,相关的js/css都是直接相对根目录的/assets
Originally posted by @wuwentao in #32 (comment)
Change static file download path to relative path, for reverse-proxy usage
目前手中的德国,英国,荷兰,卢森堡地区的服务器均无法使用speedtest.net这个功能,其他地区正常使用
看说明是HTTP_PORT,那应该怎么用呢?
比如,我想用8777端口,我之前docker换端口是用的 -p 8777:80
小白问题,请指教
看了下项目的实现过程,基本上是靠 Nginx 配置文件中的
proxy_set_header X-Real-IP $remote_addr;
来获取 IP 地址,这样做的弊端是,ALS 服务处于多级反向代理时,拿到的 IP 地址并不是客户真实的 IP 地址,而是上游服务的 IP 地址
项目中的 Nginx 配置文件也包含有这样的语句:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在多级代理中,使用X-Forwarded-For
来获取客户真实的 IP 地址是很方便的事情
X-Forwarded-For
的值应该和X-Real-IP
的值相同,为客户真实的 IP 地址X-Forwarded-For
的应该是类似的字符串7.8.9.10, 172.17.0.1
,而X-Real-IP
的值是172.17.0.1
,7.8.9.10
为客户真实的 IP 地址简而言之,X-Real-IP
仅仅是上游服务的地址,而X-Forwarded-For
中的第一个 IP 地址,才应该是客户请求时真实的 IP 地址。建议可以采用通过处理X-Forwarded-For
的值来获取客户真实的 IP 地址
这样,启动 ALS 服务的方式也没改变:
docker run -d --name looking-glass --restart always --network host wikihostinc/looking-glass-server
sudo docker run -d -p 20000:80 --name looking-glass --restart always wikihostinc/looking-glass-server
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name speedtest.com;
return 301 https://speedtest.com:443$request_uri;
}
server {
listen 443 ssl http2;
server_name speedtest.com;
access_log /var/log/nginx/speedtest.com.access.log;
error_log /var/log/nginx/speedtest.com.error.log;
client_max_body_size 20m;
ssl_certificate /etc/letsencrypt/live/speedtest.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/speedtest.com/privkey.pem;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:20000;
}
}
我自身也是学识有限,一知半解,希望能有抛砖引玉之效,谢谢
BUG 简短描述
在fakeshell中允许floodping,这是极其危险的事情,应该让fakeshell处于non-root环境下运行
内网环境未能获取外网ip时,iPerf3不能显示端口
操作系统 & Docker 版本 (lsb_release -a
&& docker version
):
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
# docker version
Client: Docker Engine - Community
Version: 23.0.3
API version: 1.42
Go version: go1.19.7
Git commit: 3e7cbfd
Built: Tue Apr 4 22:03:23 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.3
API version: 1.42 (minimum version 1.12)
Go version: go1.19.7
Git commit: 59118bf
Built: Tue Apr 4 22:03:23 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc:
Version: 1.1.5
GitCommit: v1.1.5-0-gf19387a
docker-init:
Version: 0.19.0
GitCommit: de40ad0
使用的镜像版本 (docker ps | grep als
):
# docker ps | grep looking-glass
360d868fe3ec wikihostinc/looking-glass-server:latest "/bin/sh -c 'php81 /…" 27 minutes ago Up 27 minutes looking-glass
Image details
ID | sha256:b92a7d3e41a9ba41b74d1dca7595d9304365494b5517a05f2a5f818d67b44421
Size | 81.4 MB
Created | 2023-03-30 16:42:17
Build | Docker on linux, amd64
预期返回:
打开 iPerf3 页面,点击启动服务,显示随机端口
实际返回:
实际只输出一句 iPerf3 command:
未能显示打开的端口
使用Docker安装的 并且将端口改为8800,具体部署命令如下:
docker run -d --restart always
--name lookingglass
-e HTTP_PORT=8800
-p 8800:8800
wikihostinc/looking-glass-server
在使用Nginx将端口反代到域名时发现反代后无法正确识别IP地址,IP地址显示为172.17.0.1,
Nginx配置如下:
#PROXY-START/
location /
{
proxy_pass http://127.0.0.1:8800;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
}
#PROXY-END/
想请教下如何配置能获取到访问的真实IP呢?
BUG 简短描述
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
使用二进制文件版本v2.0-fix1
预期返回:
Speedtest by Ookla
Server: STC - Hong Kong (id: 1536)
ISP: Netvigator
Idle Latency: 2.02 ms (jitter: 0.04ms, low: 1.98ms, high: 2.04ms)
Download: 849.48 Mbps (data used: 899.1 MB)
9.42 ms (jitter: 4.61ms, low: 1.87ms, high: 244.72ms)
Upload: 914.14 Mbps (data used: 412.0 MB)
8.20 ms (jitter: 8.25ms, low: 2.01ms, high: 232.58ms)
Packet Loss: Not available.
实际返回:
主页的speedtest.net功能停留在“测试很快开始”,通过shell执行speedtest返回如下:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
今天看到大佬更新了,如果只写一句话,我明白是用SPONSOR_MESSAGE=xxx
我也看见可以用"/tmp/als_readme.md"来进行更多内容的补充,
我的理解是我在服务器上传"/tmp/als_readme.md"文件
但docker容器目录映射不是太会,希望有个说明
BUG 简短描述
Ubuntu
使用的镜像版本 (docker ps | grep als
):
最新
获取不到服务器的IP地址,获取不到位置,下载文件的列表不显示,iperf3启动不了。
亚马逊的AWS是有两个IP的,一个内网ip,一个外网ip。后面的问题不知道是否和这个有关,我手工去vps上运行了:curl ifconfig.co/
结果不能返回ip地址,返回的一大段HTML代码。
烦请调查。
即使用ssh连接服务器执行fakeshell敲一个字母都有明显延迟感知,而其他部分都没问题
! 基于流的负载均衡已发现
更新到最新版的 docker image 以后,web shell 不再能输入指令。测试环境 http://hk-bgp.hkg.lg.kuaichedao.xyz/
操作系统 & Docker 版本 (lsb_release -a
&& docker version
):
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:03:17 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:23 2022
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
使用的镜像版本 (docker ps | grep als
):
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d865009577b0 wikihostinc/looking-glass-server "/bin/sh -c 'php81 /…" About an hour ago Up About an hour looking-glass
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wikihostinc/looking-glass-server latest 3a494ee0c0db 4 hours ago 80.6MB
预期返回:
能够通过浏览器的 Web Shell 输入测试指令。
实际返回:
光标闪烁,但是无法输入测试指令。
小白提问,容器创建测速文件1G文件放在了哪里呢? 我stop之后还在么?我rm掉容器后 这些测速我呢见还在么?
请指教
页面中 IPv4 下载测试
IPv6 下载测试
实际都为访问的地址(域名),并没有分离 IPv4 和 IPv6。
这个问题应该是解决 Issues #33 的时候改的()
lsb_release -a
&& docker version
):Ubuntu 22.04.3 LTS, Docker CE 24.0.6
docker ps | grep als
):latest
预期返回:
ipv4按钮 "IPV4_ADDR_OR_DOMAIN/speedtest-static/1MB.test"
ipv6按钮 "IPV6_ADDR_OR_DOMAIN/speedtest-static/1MB.test"
实际返回:
ipv4按钮 href="./speedtest-static/1MB.test"
ipv6按钮 href="./speedtest-static/1MB.test"
ui/src/components/Speedtest.vue
中,使用componentConfig.public_ipv4
/ componentConfig.public_ipv6
构造按钮,但是可能涉及使用域名的问题,如果可以,追加 IPV4_DOMAIN
, IPV6_DOMAIN
相关可选配置最好。
现在搭建好测速网站后,所有人都可以打开如果服务器流量不多几下子就跑完了,希望可以添加密码验证功能
容器采用bridge网络,把80端口映影到宿主机的81端口
nginx配置如下:
location /lg/ {
proxy_pass http://127.0.0.1:81;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_http_version 1.1;
}
在浏览器访问https://domain.com/lg/,页面为空白;如把location /lg/改为location /则正常显示。
操作系统 & Docker 版本 (lsb_release -a
&& docker version
):
Ubuntu 22.04.2 LTS ARM
Client: Docker Engine - Community
Version: 24.0.2
API version: 1.43
Go version: go1.20.4
Git commit: cb74dfc
Built: Thu May 25 21:52:53 2023
OS/Arch: linux/arm64
Context: default
使用的镜像版本 (docker ps | grep als
):
9934e0c29cd0 wikihostinc/looking-glass-server:latest "/bin/sh -c 'php81 /…" 22 minutes ago Up 22 minutes 127.0.0.1:81->80/tcp
预期返回: 正常访问looking glass页面
实际返回: 空白页
如果直接用你提供的docker启动命令正常,通过VPSip+80端口可以访问
docker run -d --name looking-glass --restart always --network host wikihostinc/looking-glass-server
但我这里是通过反代进行的,就打不开,页面是白的
docker compose里是这样
als:
image: wikihostinc/looking-glass-server
networks:
- my_network
container_name: als
restart: always
caddy:
image: caddy:latest
networks:
my_network:
ipv4_address: 172.19.0.5
container_name: caddy
hostname: caddy
restart: unless-stopped
logging:
options:
max-size: 10m
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
#- ./site:/srv
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
networks:
my_network:
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
caddy也是docker compose部署,和als在同一个network下面
Caddyfile如下
mydomian.com {
handle {
reverse_proxy contain1:80
}
handle_path /contain2/* {
reverse_proxy contain2:xxxx
}
handle_path /contain2/* {
reverse_proxy contain3:xxx
}
handle_path /als/* {
reverse_proxy als:80
}
encode gzip
log {
format console
}
}
When a child process quit, swoole need listen process signal for recycle these process pid.
Upcome pull request will fix this issue
BUG
上传编辑好的als_readme.md到机器的tpm目录下。
然后执行docker启动docker run -dit -e SPONSOR_MESSAGE=/tmp/als_readme.md -v /tmp:/tmp -w /tmp --name looking-glass --restart always --network host wikihostinc/looking-glass-server
docker日志报错
PHP Warning: rename(/GeoLite2-City.mmdb,/app/ip.mmdb): No such file or directory in /app/components/98-uncompress-ipdb.php on line 22
PHP Fatal error: Uncaught InvalidArgumentException: The file "/app/ip.mmdb" does not exist or is not readable. in /app/components/98-uncompress-ipdb.php:23
操作系统 & Docker 版本 (lsb_release -a
&& docker version
):
使用的镜像版本 (docker ps | grep als
):
预期返回:
这样这样这样
实际返回:
那样那样那样
测速建议两种模式,单线程和多线程,这样大家就能更真实的了解网络水平
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.