Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SmartDNS UI界面体验 #1917

Open
pymumu opened this issue Feb 22, 2025 · 31 comments
Open

SmartDNS UI界面体验 #1917

pymumu opened this issue Feb 22, 2025 · 31 comments

Comments

@pymumu
Copy link
Owner

pymumu commented Feb 22, 2025

增加了一个SmartDNS UI,有兴趣的朋友可以下载体验。
UI目前尚处于起步阶段,只有查看类的基本功能,后续会有空再补充其他功能。

重要:因是体验版本,不保证数据的可靠性,以及后续的兼容性,请勿日常使用。

Image

smartdns-with-webui-x86_64.tar.gz
smartdns-with-webui-aarch64.tar.gz

因采用整体打包的方式,通过执行run-smartdns运行,参数不变。
启动服务后,端口为6080

@pymumu pymumu pinned this issue Feb 22, 2025
@rapdodge
Copy link

Will testing it! Looks very nice!

@rapdodge
Copy link

Already using it for 1 days on my secondary dns at my home.

Image

I have no complaints. The main widget works as expected, the query logs are working as expected too.

I love the "upstream servers" page, since the data is very insightful, so I could check the working dns, and not.

Image

And I was not expecting terminal inside the dashboard!

Themes are working as expected. Again, I have no complaints.

Wish to see the implementation of dashboard to be merged into master.

Maybe my suggestions it's gonna are just make the dashboard files are inside 1 separate folder from the main config

So, the directory list would be like this:

/etc/smartdns/
|-- dashboard
|   `-- (all files that related to SmartDNS Dashboard)
|-- dashboard.conf
|-- smartdns.conf

That directory list like that would make the files more organised.

Much thanks,

@openips
Copy link

openips commented Feb 25, 2025

尽快合并到master tree

@lalasou
Copy link

lalasou commented Feb 27, 2025

赞 大佬 终于憋出了个大招

@lalasou
Copy link

lalasou commented Feb 28, 2025

希望快速更新
终于可以不用套adg了

@cutbuzz
Copy link

cutbuzz commented Mar 6, 2025

luci可以用么~

@dtapps
Copy link

dtapps commented Mar 13, 2025

Debian12通过服务运行后,没发现 6080 端口

[Unit]
Description=SmartDNS UI Server
After=network.target
StartLimitBurst=0
StartLimitIntervalSec=60

[Service]
Type=forking
PIDFile=/var/run/smartdns.pid
ExecStart=/root/smartdns/run-smartdns -p /var/run/smartdns.pid $SMART_DNS_OPTS
Restart=always
RestartSec=2
TimeoutStopSec=15
WorkingDirectory=/root/smartdns

[Install]
WantedBy=multi-user.target
Alias=smartdns-ui.service
root@SmartDNS:~# ss -tuln
Netid           State            Recv-Q           Send-Q                     Local Address:Port                      Peer Address:Port          Process           
udp             UNCONN           0                0                                0.0.0.0:5353                           0.0.0.0:*                               
udp             UNCONN           0                0                                0.0.0.0:47136                          0.0.0.0:*                               
udp             UNCONN           0                0                                      *:53                                   *:*                               
udp             UNCONN           0                0                                   [::]:42538                             [::]:*                               
udp             UNCONN           0                0                                   [::]:5353                              [::]:*                               
tcp             LISTEN           0                100                            127.0.0.1:25                             0.0.0.0:*                               
tcp             LISTEN           0                100                                [::1]:25                                [::]:*                               
tcp             LISTEN           0                4096                                   *:22                                   *:*                               
root@SmartDNS:~# 

@pymumu
Copy link
Owner Author

pymumu commented Mar 14, 2025

配置plugin加载ui插件

@xiandu999-yu
Copy link

xiandu999-yu commented Mar 19, 2025

配置plugin加载ui插件

Image

Image
openwrt报错,系统日志说要动态版本???

@pymumu
Copy link
Owner Author

pymumu commented Mar 19, 2025

插件功能只有动态编译链接c库的才能支持

@xiandu999-yu
Copy link

xiandu999-yu commented Mar 19, 2025

插件功能只有动态编译链接c库的才能支持

[2025-03-19 20:35:24,713][ERROR][ dns_plugin.c:181 ] load plugin /etc/smartdns/plugin/libsmartdns_ui.so failed: Error relocating /etc/smartdns/plugin/libsmartdns_ui.so: __res_init: symbol not found

@PikuZheng
Copy link
Contributor

也很奇怪啊 动态编译提示 Unable to find libclang: "the libclang shared library at /usr/lib/llvm18/lib/libclang.so.18.1.8 could not be opened: Dynamic loading not supported"

@pymumu
Copy link
Owner Author

pymumu commented Mar 19, 2025

插件功能只有动态编译链接c库的才能支持

[2025-03-19 20:35:24,713][ERROR][ dns_plugin.c:181 ] load plugin /etc/smartdns/plugin/libsmartdns_ui.so failed: Error relocating /etc/smartdns/plugin/libsmartdns_ui.so: __res_init: symbol not found

有可能你编译c部分和编译rust部分用的编译器不同

@pymumu
Copy link
Owner Author

pymumu commented Mar 19, 2025

也很奇怪啊 动态编译提示 Unable to find libclang: "the libclang shared library at /usr/lib/llvm18/lib/libclang.so.18.1.8 could not be opened: Dynamic loading not supported"

c库部分是不能静态编译的

@xiandu999-yu
Copy link

也很奇怪啊 动态编译提示 Unable to find libclang: "the libclang shared library at /usr/lib/llvm18/lib/libclang.so.18.1.8 could not be opened: Dynamic loading not supported"

c库部分是不能静态编译的

算了,不执着这个了...

@pymumu
Copy link
Owner Author

pymumu commented Mar 19, 2025

@PikuZheng
Copy link
Contributor

PikuZheng commented Mar 20, 2025

姑且把容器跑起来了。tag 是 pikuzheng/smartdns:ui 或 pikuzheng/smartdns:ui-版本号。基于alpine,提供armv6/armv7/arm64/x64。已经更新openssl3.4.1,支持quic上游(DOQ)
启用插件的话,修改配置文件增加以下几行

plugin /usr/lib/libsmartdns_ui.so
smartdns-ui.www-root /wwwroot
smartdns-ui.ip http://0.0.0.0:6080
data-dir /etc/smartdns

解压本issue 1楼的tar.gz文件(任选一个)中的www文件夹保存到smartdns-ui.www-root的值对应的路径。
其中前两行已经在容器内置,不需要修改。
data-dir的值改为你自己保存数据库的路径(sqlite3数据库)。
ip建议不要改。端口可以改(注意在创建容器时增加对应端口映射)。

面板登陆用户名和密码为admin password,默认已经填写好。

Image

理论上编译出来的smartdns和libsmartdns_ui.so可以直接拿到openwrt用。未测试。
拿到openwrt用需要容器内的 /usr/sbin/smartdns /usr/lib/libcrypto.so /usr/lib/libssl.so /usr/lib/libsmartdns_ui.so 四个文件以及 /wwwroot 文件夹。上次借了个红米ax86s(arm64)试了能运行。反正放进去覆盖原版就行了,你们应该不需要ipk吧 :)

@openips
Copy link

openips commented Mar 20, 2025

libsmartdns_ui.so编译不出来 openwrt下没办法用

@dtapps
Copy link

dtapps commented Mar 20, 2025

Debian系统可以使用服务方式启动

[Unit]
Description=SmartDNS Server
After=network.target
StartLimitBurst=0
StartLimitIntervalSec=60

[Service]
Type=forking
PIDFile=/root/smartdns/smartdns.pid
ExecStart=/root/smartdns/ld-linux.so --library-path /root/smartdns /root/smartdns/smartdns -c /root/smartdns/smartdns.conf -p /root/smartdns/smartdns.pid
Restart=always
RestartSec=2
TimeoutStopSec=15

[Install]
WantedBy=multi-user.target
Alias=smartdns.service

smartdns.conf

# 数据目录
data-dir /root/smartdns/db

# 启用 UI 插件
plugin /root/smartdns/libsmartdns_ui.so

# 设置 SmartDNS UI 的根目录
smartdns-ui.www-root /root/smartdns/www

详细教程可以参考 Debian安装SmartDNS带UI界面版本

@rapdodge
Copy link

https://github.com/user-attachments/files/19333093/smartdns-with-webui.tar.gz

Compile with this script

Could you please help me, I encounter error

cp: cannot stat '/root/smartdns-with-webui/smartdns-webui/out': No such file or directory

https://pastebin.com/raw/JHtbqvQP

And the root directory "there's build.sh and run-smartdns doesn't have anything except files that extracted

@pymumu
Copy link
Owner Author

pymumu commented Mar 20, 2025

for debian,ubuntu,just run

make WITH_UI=1 install -j

that build script is for cross-compile

@rapdodge
Copy link

for debian,ubuntu,just run

make WITH_UI=1 install -j

that build script is for cross-compile

Ok, it's successfully compiled

https://pastebin.com/raw/gHsADGvC

But I don't know why the wwwroot isn't there

root@debian-dns:~# ls /usr/lib/smartdns/
libsmartdns_ui.so
root@debian-dns:~# ls /usr/share/smartdns/wwwroot
ls: cannot access '/usr/share/smartdns/wwwroot': No such file or directory
root@debian-dns:~#

Is there any additional command to compile the wwwroot too?

@pymumu
Copy link
Owner Author

pymumu commented Mar 21, 2025

clone smartdns-webui repo, run

npm run build

copy out to /usr/share/smartdns/wwwroot

@rapdodge
Copy link

rapdodge commented Mar 21, 2025

clone smartdns-webui repo, run

npm run build

copy out to /usr/share/smartdns/wwwroot

Ok. I got it. And is that possible to compiling with ui, but pre-packaged .deb ?

I mean the lib.so, not the html

@yanhao98
Copy link

yanhao98 commented Mar 21, 2025

Image

这个是自用的,我自己只是为了构建出来能使用就可以了。提供一些信息给在折腾的伙伴。


  • aarch64-linux

    # docker run --quiet -it --pull always --rm ghcr.io/yanhao98/smartdns:master ldd /usr/sbin/smartdns
    	linux-vdso.so.1 (0x0000ffffb20c8000)
    	libssl.so.3 => /lib/aarch64-linux-gnu/libssl.so.3 (0x0000ffffb1d70000)
    	libcrypto.so.3 => /lib/aarch64-linux-gnu/libcrypto.so.3 (0x0000ffffb1820000)
    	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffb1770000)
    	libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffb1730000)
    	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffb1570000)
    	/lib/ld-linux-aarch64.so.1 (0x0000ffffb2080000)
    	libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffffb1530000)
    	libzstd.so.1 => /lib/aarch64-linux-gnu/libzstd.so.1 (0x0000ffffb1470000)
    
    # docker run --quiet -it --pull always --rm ghcr.io/yanhao98/smartdns:master /usr/sbin/smartdns -v
    smartdns 1.20250321-0703 (ea3400f-dirty)
  • x86_64-linux

    # docker run --quiet -it --pull always --rm ghcr.io/yanhao98/smartdns:master ldd /usr/sbin/smartdns
            linux-vdso.so.1 (0x00007fff103bb000)
            libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007fcaa7e57000)
            libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007fcaa78fb000)
            libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcaa780e000)
            libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fcaa77e0000)
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcaa75c0000)
            libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fcaa75a0000)
            libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fcaa74e2000)
            /lib64/ld-linux-x86-64.so.2 (0x00007fcaa8125000)
    
    # docker run --quiet -it --pull always --rm ghcr.io/yanhao98/smartdns:master /usr/sbin/smartdns -v
    smartdns 1.20250321-0703 (ea3400f-dirty)

问题2: 不能在 Debian 容器运行

因为镜像默认的 GLIBC版本 比构建(GitHub Actions的runner)的机器低。

smartdns: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by smartdns)
  • Debian 镜像的 GLIBC版本
# docker run --rm -it debian ldd --version
ldd (Debian GLIBC 2.36-9+deb12u10) 2.36
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
  • Ubuntu 镜像的 GLIBC版本
# docker run --rm -it ubuntu ldd --version
ldd (Ubuntu GLIBC 2.39-0ubuntu8.3) 2.39
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

@Cason-z
Copy link

Cason-z commented Mar 28, 2025

hi I installed smartdns on centos 7.0 and I want to configure webui but I didn't find any documentation for it. I did the following according to the comments above, what else do I need to do to use ui?

Image

Image

Image

@PikuZheng
Copy link
Contributor

hi I installed smartdns on centos 7.0 and I want to configure webui but I didn't find any documentation for it. I did the following according to the comments above, what else do I need to do to use ui?

Since it is highly dependent on the operating environment, it is a little complicated. If there are no issues with the environment and binary files, you need to add the following codes to the configuration file:

plugin /usr/lib/libsmartdns_ui.so
smartdns-ui.www-root /wwwroot
smartdns-ui.ip http://0.0.0.0:6080
data-dir /etc/smartdns

obviously, plugin is the location of file libsmartdns_ui.so. smartdns-ui.www-root is the location of web files (compile from project smartdns-webui).
port and data-dir are up to you. hope everything goes well for you

@oneisall8955
Copy link

oneisall8955 commented Mar 31, 2025

强烈支持!!!

  • 建议前后端分离
  • 配置支持是否开启开启dashboard的api及secret简单鉴权(请求头X-SMARTDNS-SECRET=${secret})
  • 前端环境变量指定api地址及secret

@maojianyou
Copy link

增加了一个SmartDNS UI,有兴趣的朋友可以下载体验。 UI目前尚处于起步阶段,只有查看类的基本功能,后续会有空再补充其他功能。

重要:因是体验版本,不保证数据的可靠性,以及后续的兼容性,请勿日常使用。

Image [smartdns-with-webui-x86_64.tar.gz](https://github.com/user-attachments/files/18922855/smartdns-with-webui-x86_64.tar.gz) [smartdns-with-webui-aarch64.tar.gz](https://github.com/user-attachments/files/18922865/smartdns-with-webui-aarch64.tar.gz)

因采用整体打包的方式,通过执行run-smartdns运行,参数不变。 启动服务后,端口为6080

这个2台smartdns分别在2台服务器上,支持ui独立部署采集这2台的smartdns的信息的,相当于汇总后端2台的DNS日志信息不?

@javycoder
Copy link

功能还是太少了

@universonic
Copy link

希望能够内置prometheus的metrics接口

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests