上一集 深入解析绿联云 DX4600 Pro UGOS 系统(1)
OK ,讲了那么多系统底层的东西,接下来让我们看看与用户打交道最直接的,软件层级的用户交互体验。
真正上手体验过,你才会明白大伙之前对张小龙的态度有点过于严格了,他可能真的算是相对比较好的产品经理。
2023 年很少能够找到一个连 Explorer 都做得有点问题的软件开发商了。我们都知道绿联的这套东西是基于 Electron 的前端项目,所以里面有相当一部分交互被受限于纯前端的逻辑。
首先是这个前进后退键。说起来你可能不信,在 Explorer 中浏览文件,你不能够跳跃式地浏览目录,因为顶上的地址栏,是一个装饰品,你不能在上面键入任何的路径或者快速跳转。想要进入到某个目录,你只能从根目录一路递归到你想到达的地方,然后用多了几次你会发现,这两个箭头的逻辑是反 PC 的:
「后退」键实际上是../
,就是 Windows Explorer 里面的上移,后退到父目录
「前进」在浏览绝大多数目录的时候它都是灰色的,只有你选中了一个文件夹,或者当前路径下只有一个文件夹时它才会亮起——就是说,它的作用是代替双击😅
这两个键不绑定监听鼠标侧键,鼠标侧键在这个软件里没有任何用处
也就是说文件管理不记录你任何的访问历史路径,你只能递归查找(除非“添加到快捷入口”或“桌面快捷方式”)
后退/前进键的功能对于左侧侧边栏来说是独立的,左侧侧边栏跳转的每一条导航视作一个 Page 的话,这两个键只对 Page 内部有效
(纯粹的前端逻辑,Navigation 页面路由、组件隔离)
来看看你微软爹是怎么做 Explorer 的……
其次就是当我上传文件的时候,它总是会先问我,究竟是选择跳过、替换还是保留两者,而无论你要导入的文件是否存在重复。就好像是我高考先把志愿报了再进考场考试一样。那我肯定是希望当拷贝的时候把所有的冲突项记录下来,最后列表让我决定怎么做( Windows 逻辑),而它只有闭着眼睛闷头干,或者每次都询问我,不允许对每个文件进行单独的决策。
我的父亲是一位很热爱生活的人,很多年前他买了一台相机,游山玩水的时候会记录很多照片,回到家分门别类整理好放在每一个文件夹里,从 2010 年一直带到现在,光看目录就知道当时去了哪,在干什么。
那么,把整理得这么细致的照片放到绿联相册里会是什么样的呢?😅……
是的,绿联云在设计这个东西的时候一定是参考手机 OS 的 Gallery ,就是往一个叫做 DCIM 的文件夹里猛塞图片就好了。我从来没见过相册归纳软件竟然能完全抛弃子目录信息。我当然可以辛苦自己每个 subfolder 单独创建一个相册,但是人生的时间不是这么浪费的:
我发现一件事情,上面的第 2 点和“参考手机 OS 的 Gallery”交互理念是冲突的,手机 OS 的 Gallery 意图是让用户把图片全部丢进去就好,它去自动 AI 分析,省心,但是 UGOS 只省了一半,我还是得自己管理贴张图,是这个意思吗?
很难理解负责相册和 Explorer 的 UX (如有)在想什么,把图像和文件之间的管理搞得乱七八糟,而最关键所需的功能却见不到:
实际上我自己长期以来在用的媒体库是 Jellyfin ,已经在 Jellyfin 搭建好了成型的接近 3TB 的庞大影视资源库。但问题在于,让完全不懂操作的家里人去弄端口登录,还额外下个 APP 也不现实,那就试试云影院好了。
(另外一个原因是,我的 Jellyfin 还提供一些同龄人看的东西,跟我的兄弟也好教、会折腾)
云影院更是一个重量级选手。它提供两种刮削源,一个内置的“智能识别”,以及 TMDB ( TheMovieDB ),让我们先来欣赏一下智能识别的准确率:
于此相比,同样的资源在 Jellyfin:
官方的智能识别源可谓是一塌糊涂。他犯下了一个质量差的刮削器能犯下的所有错误,比如说,把 Fate/Stay Night UBW 识别成了 Fate/Stay Night (近似错误)、把花絮和 Special 识别成了毫不相干的其它影视资源(随机错误)、把 Tenet.2020 识别成了册那 2020 (匹配错误)等。
而且在 PC 端,这个播放窗口竟然不能调整大小……只有 540P 小屏和全屏,并在在我的机器上( 5900X+3090 )部分视频源无论放什么视频都会在播放大概 2-3 秒之后停住不动,而拖动进度条却能继续播放,怀疑是播放器写得有问题,卡在了关键帧解码。至于字幕渲染质量什么的我也不好意思继续提,因为即使是与视频文件同名的字幕它都匹配不到,让我在文件夹里手动选……还是先把匹配做明白再去苛求质量吧。
然后你猜怎么着,这个云影院是有适配鼠标侧键前进后退的,然而文件管理却没有。
那我们把官方的“智能匹配”取消掉,使用 TheMovieDB 呢?当然没有问题,因为 Jellyfin 也将 TheMovieDB 作为数据源之一,能在 Jellyfin 正确识别的片源 90%以上都能单纯依靠 TheMovieDB 源识别成功。所以我建议原来在 Plex/Emby/Jellyfin 库迁移过来的朋友,使用纯 TheMovieDB 源。但我需要跟随官方一篇教程去花十来分钟注册 TheMovieDB 、申请 APIKEY 、测试解析配置 Hosts ,有一种传统互联网的美。
那如果我的老豆老母老姐老哥恰巧喜欢看外国电影、看美剧,而我自己不看怎么办?我还要一个个去教他们怎么去一个全英文的网站申请 API key 、测延迟选 Hosts 吗?
我想了想,也许这是我的问题。遵守国际源刮削规范的影片很明显在“智能匹配”识别率并不高,我在怀疑相比这样的名字:
Fast.and.Furious.F9.The.Fast.Saga.2021.DC.1080p.BluRay.x265-RARBG
是不是这种识别率更高呢?
速 d 与 j 情 9[1080P 蓝光超清][高清电影网]
既然云影院能够添加公共空间的视频,那么从这个云影院是公共的这件事也就合乎常理了。但是阿绿再一次选择了打破常规:我教我老姐如何使用 APP 的时候,惊奇地发现她的云影院是空的。我找了半天去哪里将片库设为公用,发现满屏幕只有“个人影院”,把个人影院四个字点烂了也只是一个筛选器在疯狂地伸缩,最后发现所谓的公共影院的功能叫做“一起看”,还是邀请制的,你分享一个片库需要被分享人同意……
就好像在一个悠闲的周末晚上我邀请大伙一起看电影,然后把片库分别发送到大家的手机上,电视放在那不开,大家点击自己的手机各看各的。并且经过实测,这个叫做“一起看”的功能完全没有类似异地放映室播放进度同步的机制,它只是单纯地把片源共享,有一些名不副实。产品经理知道什么叫做“一起”吗?
云影院的用户隔离机制无关技术问题,单纯是产品经理脑子出了问题,产品定义到这突然就混乱了,放着好好的公共/私人域不做,突然异想天开搞邀请分享制。
我相信这个东西应当不会有人用。不支持选择输出设备、不支持读取 FLAC 内置的 TAG(导致所有在 Foobar2000 分类整理好的歌单导进来全部变成文件名)、不支持导入公共空间资源、不支持 AIFF 、不支持 CUE ,道阻且长,绿联加油吧。
晚 22:00 更新:
它不是不支持读取 tag ,而是读得非常慢,晚上回来一看歌曲元数据慢慢都蹦出来了,怀疑在后台建库建索引,那么慢一定用的是 MySQL 。
我对 NAS 的另一个重要需求就是文件自动备份(和微信备份,但是这台 NAS 不支持),而且只要求备份不要求同步,因为我的主力机已经有 2TB+8TB 的空间。
我一般习惯把工作目录放在桌面,代码项目放在~/*Projects ,过一段时间后归档到硬盘中,现在有了绿联云 NAS 自动备份……
已经连续 4 天没有关机了。
PycharmProjects 文件夹总大小 101GB ,文件数量 536957 ,文件夹数量 66488 ,这套套件的 PC 端备份在遇到十万以上数量级时会出现严重的性能问题,以至于现在我 4 天没有关机,第一次全量备份的完成度还未达到一半。而且备份文件的速度会越来越慢,在连续运行十来个小时之后会停滞不前,“我的备份”窗口会直接无响应挂掉,必须退出绿联私有云客户端再重新启动,它才会以一个比较慢的速度继续运行备份。而且是每十几个小时需要重新启动一次,天知道我离第一次备份成功还有多远。
不过这种极限工况不是所有人都会遇到的,目前我的相册自动备份大概 3000 张,比较流畅,不会有什么问题。
我自己是向来不用百度云盘的,从拥有自己的电脑开始,数据一直牢牢掌握在本地硬盘里,需要的资源也总能从云盘以外的地方找到替代品。
但是家里其他的年轻人会用。我在邀请他们加入私有云后,我说我不用百度云盘的,但是你可以登陆试试,把云盘上的东西下载到家里,本地化。然后她在她的手机点了一下百度云盘插件。
提示“仅限管理员使用”,她让我给她开下权限,这个时候我人已经麻了,因为我已经意识到百度网盘估计只有管理员能用这一事实。
所以现在我的账户上很无奈地登录着别人的网盘,挂着别人的下载,等到下载完之后还要操作移到公共空间给其他人取用(没错,百度网盘的保存位置,又不支持公共空间了)
我尝试理解这件事情,虽然不懂技术的人根本不会管为什么不能用。我推测这类第三方工具本身限制在一个系统里面运行多个实例,出于之前分析的用户机制,实例只能交给管理员用户运行。
那这种情况在不考虑法律风险的时候怎么解决呢?虚拟机或者容器化方案。这就是新的问题了:
现阶段绿联根本没把虚拟机做出来,在当前用户机制的约束下做出来的难度比拿正经 Linux 重构还大
假设我们使用容器来承载多个实例,并且对用户隐藏,可以做到吗?
答案是不完全可以。docker 是不支持隐藏 container 的,但是 docker 支持每个用户运行不同的dockerd
,那系统镜像就交给 root 运行好了,其他用户以自己的身份管理自己的dockerd
,方案很不错。
但是非管理员的用户在 Linux 不真实存在,并且现在套件里的 dockerd 就是以 root 身份运行,如果要更新,那么怎么处理 root 容器降权迁移的问题?
另外,dockerd 多用户机制依赖systemd
,而 Openwrt 正是**不使用systemd
**的一个 Linux 发行版,意味着多用户容器方案在当前架构下不可能实现。
对这个奇葩系统的分析就此结束了。我们接下来将会基于这些分析的结论寻找解决方案,结合我踩坑的经验,告诉大家在这台机器上,想要部署一个普通的三方媒体库和下载插件需要经过哪些步骤,使用过程中又会遇到什么样的坑。
根据 Nginx Conf 生成的反代列表,传入数据不合规的时候会被 rewrite 跳转至 404“固件版本过低”页。
列表由 GPT 整理,因为上下文过长,GPT 遗忘机制导致可能会出现一定的错误,请自行前往/etc/nginx
比对甄别
# Generated by ChatGPT
LISTEN 9999 [::]:9999
# NAS server
/ -> :9996
# Ugreen launcher
/home -> /data/app/com.ugreen.ugos.launcher/www/index.html
# Docker Hub API
/docker/image/search -> https://hub.docker.com/api/content/v1/products/search/
# Core server
/v1/user/login -> :9994
# Album server
/v1/album_svr/ -> :9982
/v1/ai/album/ -> :9982
/v3/ai/album/ -> :9982
/v1/album/manage/ -> :9982
/v2/album/group/ -> :9982
/v3/cloud/album/ -> :9982
/v1/ai/task/ -> :9982
/v1/ai/scan/ -> :9982
/v1/ai/similar/ -> :9982
/v1/ai/blur/ -> :9982
/v1/ai/face/ -> :9982
/v1/ai/file/ -> :9982
/v1/album/people/ -> :9982
/v1/tidy/ -> :9982
/v1/myself/del_myself_folder -> :9982
# Baidu Pan server
/v1/baidu/rest/2.0/xpan/ -> https://pan.baidu.com/rest/2.0/xpan/
/v2/baidu/oauth/token -> https://pan.baidu.com/rest/2.0/xpan/
# MiniApp Yun server
/v3/cmcc/devapp/ -> https://miniapp.yun.139.com/richlifeApp/devapp/
/v3/cmcc/open-mpplatform/oauth2/ -> https://miniapp.yun.139.com/open-mpplatform/oauth2/
# Docker web
/docker/web -> /ugreen/docker/www
# TTYD server
/ttyd -> :DYNAMIC
# Docker images export
/docker/images/export/ -> :9375
# Docker image search
/docker/image/search -> https://hub.docker.com/api/content/v1/products/search/
# Docker image repositories
/docker/image/repositories/ -> https://registry.hub.docker.com/v2/repositories/
# External backup server
/v1/file/external_backup/ -> :9984
# Favorites server
/v1/favorites/set -> :11024
/v1/favorites/get -> :11024
/v1/favorites/cancel -> :11024
# File collect server
/ugos/v1/file_collect/ -> :12028
# File share server
/v1/share/get_shared_files_of_users -> :11025
/v1/share/get_users_of_share_file -> :11025
/v1/share/share_files -> :11025
/v1/share/cancel_shared_files -> :11025
/v1/share/get_all_users -> :11025
/ugos/fileshare/v1/shared_user/list -> :11025
# File search server
/ugos/globalsearch/v1/ -> :12029
# IPC server
/v1/task/ -> :9992
/v1/baidu/ -> :9992
/v1/transcode/ -> :1080
/v1/disk/ -> :9992
/v1/storage/ -> :9992
/v2/storage/ -> :9992
/v1/stormng/ -> :9992
/v1/dl/ -> :9992
/v1/cmcc/ -> :9992
/v3/cmcc/ -> :9992
/v1/file/storages -> :9992
/v1/file/disks -> :9992
/v1/category/ -> :9992
/v2/category/ -> :9992
/v3/category/ -> :9992
/v3/storage/ -> :9992
/v4/storage/ -> :9992
/v5/storage/ -> :9992
# LBook server
/ugos/lbook/v1/ -> :11029
# Log Center server
/ugos/log_center/v1/ -> :10002
# Media Player server
/v1/mediaplayer/ -> :1085
# Movies server
/v1/movies/ -> :9980
/v2/movies/ -> :9980
/v3/movies/ -> :9980
# Music server
/ugos/music/v1/ -> :11028
# Service Manager server
/ugos/service_mgr_svr/v1/ -> :19010
# Thunder server
/device/info/watch -> :5050
/device/now -> :5050
/device/authlogin -> :5050
/device/v1/ -> :5050
# Thunder web
/web/thunder/ -> :5050
# Transcode server
/v1/transcode/online/ -> :1080
/v1/transcode/online/info/ -> :1080
/v1/transcode/online/ -> :1080
/v1/transcode/online/status -> :1080
/v1/transcode/online/switch_resolution/ -> :1080
# Data app
/data/app/ -> /
# App
/app/ -> :9999
# User Management server
/v1/quota/project -> unix:/var/run/user_manage.sock
/v1/quota/user -> unix:/var/run/user_manage.sock
/v1/quota/volume -> unix:/var/run/user_manage.sock
/v1/timemachine/query -> unix:/var/run/user_manage.sock
/v1/timemachine/set -> unix:/var/run/user_manage.sock
/v1/cache/write -> unix:/var/run/user_manage.sock
/v1/cache/remove -> unix:/var/run/user_manage.sock
/v1/cache/clean -> unix:/var/run/user_manage.sock
/v1/cache/query -> unix:/var/run/user_manage.sock
/v1/localuser/list -> unix:/var/run/user_manage.sock
/v1/localuser/exists -> unix:/var/run/user_manage.sock
/v1/localuser/create -> unix:/var/run/user_manage.sock
/v1/localuser/modify -> unix:/var/run/user_manage.sock
/v1/localuser/delete -> unix:/var/run/user_manage.sock
# WPS server
/v1/wps_doc/ -> :11027
P2: 备份已经6天了,我今天出门上班之前看到进度已经到了35万多,在工位想着看下备份进度,要不要重启家里电脑的绿联云,然后发现在web端访问的时候备份套件直接被隐藏了,我看不到
本来想偷懒省事的,搞半天还是要远程连接回家里电脑。
截图的时候是2023-11-14 07:14,现在是2023-11-16 09:24,进度260235→358435,按照速度来算大概20号就能备份完536553个文件了😅
下半部分已发布,系列文章完结,点击跳转
1
someonedeng 359 天前 2
年度大型连续剧,快更快更
|
2
xshument 359 天前
分析的不错
|
3
lany 359 天前 via Android
催更
|
4
JensenQian 359 天前 via Android
nas 还是卖系统,不然真不如自己装
|
5
zqqian 359 天前
就是给的工资招不到高水平的产品经理和程序员罢了
互联网大厂的工资,哪个制造业企业能接得住? |
6
cqj0908 358 天前
期待下一集!
|
7
cp19890714 358 天前
nginx no-cache 的问题, 我用 docker 搭建了另一个 nginx, 作为外网访问入口, 其中把 no-cache 替换掉.
这系统还有个严重问题, 上传下载文件和看视频 , 数据有效率只有 30%, 也就是说下载 100MB 的文件,实际的数据传输大概是 300MB. |
8
modrich 358 天前
非常感谢 op 的深入分析,
绿联的系统太烂了,,实在是不喜欢 nas 还关联手机号码之类,我是到手就尝试刷黑威联通(没成功,退货了) |
9
ysnow888 358 天前
同款用户 催更~
|
10
smarthing 358 天前 via Android
咱能直接换 Debian 系统么?我因为垃圾 ugos 的原因,已经把 dx4600 赔钱 600 元出手了。
|
11
Greendays 358 天前
这样看来问题很多啊。也难怪群晖敢卖这么贵了。
|
12
ik 358 天前 via iPhone 1
还没看 1 ,
可能这是真自研,体验像极了我司的产品😅 |
13
TORYOI 358 天前
我想知道绿联云这个 docker 里面的镜像如何开机启动,是不是一开始创建镜像时就要选配置了,创建好镜像之后就不能修改
|
14
Ericality 358 天前
看得我都累了 要不咱还是换回群晖吧....
不过会不会从一个小白的视角来看这个东西会不会"比较好用"? |
15
HOMO114514 OP @TORYOI
docker update --restart=[policy] [container] policy: no on-failure[:max-retries] always unless-stopped 例如 docker update --restart=unless-stopped jellyfin |
16
HOMO114514 OP |
17
icefrogisgreat 358 天前
OP,我是 DX4600 我现在存了 5T 多的数据, 不想用这个系统了,我换了新系统的话, 硬盘是不是需要格式化啊?
|
18
HOMO114514 OP @icefrogisgreat 不太需要,你跳转到文章的第(1)部分的目录窥探,对着取数据就行。至于 raid 的话按常理在别的系统要手动挂载一下吧,也不排除够智能的系统会自动识别
|
19
yuanliuzhen88 358 天前
有没有用过极空间的来对比一下??
|
20
shakoon 358 天前
这个相册功能真是无力吐槽,感觉他们这个产品真的就是只设计给手机用户使用的,相机用户不如狗
|
21
icefrogisgreat 358 天前
@chowdpa02k413 好的 写写写 OP
|
22
znonymous 358 天前
OP 有点厉害的,原来看性价比是打算买绿联来着,后来犹豫再三还是入了威联通,虽说现在威联通还都主要用的 docker 部署的服务,但还是庆幸当时没入绿联
|
23
huangdanyu 358 天前
9 月份买的 期待下集
|
24
znonymous 358 天前
绿联硬件还行的,主要是自己系统做的不行,完全可以重新刷个 unraid 系统或者黑群晖
|
25
uCharles 358 天前
参考值得买刷成黑裙解决问题,啊哈哈
|
26
qjmiao 358 天前
直接 Debian ,自己配置各种服务,samba ,alist ,syncthing 等等
|
27
timeance 358 天前
插眼,期待更新
真的大开眼界 |
28
Inexzero 358 天前
虽然早就知道,但看了楼主的帖子还是震惊了🤣
(以前更垃圾) |
29
HongDoNi 358 天前
太细致了,等下一集
|
30
karmaisbitch 358 天前
有意思
|
31
HOMO114514 OP 要是管理员看到麻烦帮忙把这两篇都移到 NAS 区,多谢了
|
32
Hopeless 358 天前
马克一击,精彩~~
|
33
Lengxi 358 天前
楼主 极空间呢 什么时候出一个深入解析
|
34
HOMO114514 OP @Lengxi 没买,要不你给我寄一个来🥲
|
35
shawndev 357 天前
同款用户,催更
|
36
Suen 357 天前 via iPhone
深度好文,4600 用户看着很爽
|
37
zim298247 357 天前
|
38
roding 357 天前
2600 用户觉得很对,已经懒得理了。
|
39
arthurfyc97 356 天前
同款用户在线催更
|
40
PrinceofInj 354 天前
一路看下来真有意思。绿联这个样子还不如只卖裸机,系统引导开放,随用户自己安装系统,不提供任何软件方面的保证,只保证硬件质量就行。把现在的一帮做系统的统统开掉,说不定更省钱,口碑更好,能爆卖也是完全有可能的,想前几年的垃圾蜗牛都刷了多少单子出来。
|
41
MingleZhang 343 天前
nas 小白双十一买了一个,用完很想闲鱼出掉,看完更想了
|
42
tyrone2333 342 天前
@MingleZhang 便宜点让我接盘吧哈哈哈 我买了刷黑
|
43
yougotme 336 天前
同程序员,也用了半年以上的绿联 nas ,对于绿联 nas 团队的专业水平表示严重质疑。产品人员估计也是第一次做 nas 、第一次接触互联网软件,设计的很多交互、逻辑都是非常反人类。
我也是刚用没多久就觉得绿联是把子用户当作陌生室友来对待,各玩各互不干涉。比如影院一起看这个功能,第一版居然只能每次分享一部影片给子用户!这是严防死守子用户啊,什么脑回路奇葩蠢猪设计的出来这种操作? 只有一种解释绿联的产品人员都是孤儿、没有家人,甚至可能从来都不用自家的 nas 产品。比如大家持续吐槽的播放器字幕自动加载,至今没有实现,我相信就算垃圾程序员都可以做到至少文件同名的情况下自动挂载,但是绿联就是得让你手动选,而且还记不住! 只能怀疑是产品人员自我感觉这样才是最好的 nas ,所以程序员也不敢改或者懒得改。 结论是,绿联的 nas 团队是一群三流开发、九流产品的草台班子在做事。唯一值得庆幸的是 ssh 是开放的,对于动手能力强的程序员而言,就当是买了个做工还不错的玩具。 |
44
shineben 98 天前
大佬,怎么如何绿联里面放置一个开机自启动命令,我试了 1.改 rc.local 不行; 2.在 init.d 放入脚本但是无法执行 update-rc.d 命令,无法执行 /etc/init.d/my_custom_script enable 命令;怎么办呢,请指教这个绿联残缺的系统?先谢过!!
|
46
shineben 95 天前
@HOMO114514 多谢大佬
|