以极空间 Z4Pro+ 性能版为例,其 CPU 为 N355,配备 16GB DDR5 内存。若仅作为 NAS 存储使用,性能略显冗余,因此是时候尝试开启 SSH,以探索更多玩法。
一、服务器面板
面板选取
极空间的 ZOS 系统是基于 Linux 深度定制的操作系统,本质上可以视作一台服务器。为了更高效地管理该系统,使用服务器面板无疑是最佳选择——毕竟在具备 GUI 条件的情况下仍坚持命令行操作的行过于愚蠢。
至于为何选择 1Panel 而非宝塔,主要基于以下两点考虑:
隐私安全:宝塔面板使用时强制要求注册宝塔账户并上传服务器配置信息,此举存在潜在的隐私风险。
系统侵入性:宝塔面板采用原生方式安装,对系统结构改动较大。而极空间作为一款 NAS 设备,稳定性应为首要考量。相比之下,1Panel 基于 Docker 部署,对底层系统影响更小,更符合轻量化与可控性的需求。
安装 1Panel
参考飞致云文档,安装脚本如下:
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)" |
██╗ ██████╗ █████╗ ███╗ ██╗███████╗██╗ |
闪存容量
极空间设备的闪存容量相对有限。以 Z4S 为例,其总闪存空间为 14.6GB,其中仅有 6.5GB 分配给根目录;而在 Z4Pro+ 上,总闪存空间为 29.1GB,分配给根目录的仅有 7GB。由此可见,在安装 1Panel 面板时,务必修改默认安装位置,以避免根目录空间耗尽。
➜ lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep mmcblk |
➜ lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep mmcblk |
安装位置首选 NVMe 硬盘。在极空间设备中,这类硬盘通常以 /data_n001、/data_n002 等路径挂载到根目录下。参考默认的硬盘路径划分,建议将安装目录设定为:
/data_n001/data/udata/real/szyink |
由于目录层级较深,为了兼顾使用习惯,可以软链接该目录到 /opt:
➜ mv /opt /opt_back |
容器配置
在安装 1Panel 的过程中,其安装脚本提示覆盖 Docker 的 daemon.json 文件,并自动将原始内容备份到同目录下的 daemon.json.1panel_bak 文件。此操作导致极空间中原先已安装的容器丢失。为解决该问题,可以将备份文件恢复并重启 Docker 引擎:
➜ cp /etc/docker/daemon.json.1panel_bak /etc/docker/daemon.json |
二、桌面端样式修改
极空间桌面端目录位于:
/zspace/applications/services/pcweb/home/ |
极空间样式修饰
手动插入 CSS 链接,注入个性化样式修订。
修改列表:登录页样式跳转、全部应用页样式调整、最大化窗口时覆盖 Dock 和导航栏等。将样式代码写入进 custom.min.css 并保存到 index.html 同目录中,并添加引用:
<link href='/home/custom.min.css?v=1' rel='stylesheet'> |
@charset "UTF-8";.copyright, .extend_fun.tc, .login > .titleText div:not(:first-child) {display: none;}body.normal #app .contain:has(.login) {background-image: url("https://static.szyink.com/storage/wallhaven/wallhaven-3qw16y.jpg") ;position: relative;display: flex;justify-content: center;align-items: center;}body.normal #app .contain:has(.login) .login {background: unset ;-webkit-backdrop-filter: blur(2px);backdrop-filter: blur(2px);border: 1px solid rgba(255, 255, 255, 0.1);box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);transition: all 0.3s;border-radius: 16px;}body.normal #app .contain:has(.login) .login:hover, body.normal #app .contain:has(.login) .login:has(input:focus) {-webkit-backdrop-filter: blur(12px);backdrop-filter: blur(12px);border-color: rgba(100, 149, 237, 0.3);}body.normal #app .contain:has(.login) .login .titleText {font-weight: 600;background: linear-gradient(to bottom, transparent 60%, #f3e2e4 0) no-repeat;padding: 0px 4px 8px 6px;display: flex;width: max-content;align-items: flex-end;}body.normal #app .contain:has(.login) .login .titleText::after {content: '柚子屋';margin-left: 6px;font-weight: normal;}body.normal #app .contain:has(.login) .login .el-button {width: 100%;background: rgba(0, 149, 237, 0.35) ;border: none ;border-radius: 10px;color: rgba(255, 255, 255, 0.95);font-weight: 500;font-size: 16px;letter-spacing: 6px;transition: all 0.3s;transition: all 0.3s;}body.normal #app .contain:has(.login) .login .el-button:hover {background: rgba(100, 149, 237, 0.9) ;transform: translateY(-1px);box-shadow: 0 4px 15px rgba(100, 149, 237, 0.4);}body.normal #app .contain:has(.login) .login .el-button:active {transform: translateY(0);}body.normal #app .contain:has(.login) .login .loginFooter .el-checkbox {transition: all 0.3s;}body.normal #app .contain:has(.login) .login .loginFooter .el-checkbox:hover .el-checkbox__label {color: rgba(255, 255, 255, 0.95);}body.normal #app .contain:has(.login) .login .loginFooter .el-checkbox .el-checkbox__label {color: rgba(255, 255, 255, 0.7);transition: all 0.3s;}body.normal #app .contain:has(.login) .login .loginFooter .el-checkbox.is-checked .el-checkbox__inner {border-color: rgba(70, 130, 180, 0.9);}body.normal #app .contain:has(.login) .login .qrcode-desc {display: none;}body.normal #app .contain:has(.login) .login .qrcode-code::after {color: var(--login-text-color);text-align: center;margin: 32px auto 0;font-size: 14px;line-height: 20px;display: block;content: 'Please sit back and relax\A请坐和放宽';white-space: pre-wrap;}body.normal #app .home .windows .devName.bold {width: 40px;overflow: hidden;}body.normal #app .home .windows .devName.bold img {display: none;}body.normal #app .home .desktop .widget .actIcon {opacity: 0;transition: all 0.3s;}body.normal #app .home .desktop .widget:hover .actIcon {opacity: 1;}body.normal #app:has(.maximum.active):not(:has(.noframeViewerTheme.active)) .winOperateArea, body.normal #app:has(.maximum.active):not(:has(.noframeViewerTheme.active)) .rightArea > *:not(.insteadOfWinOperateIcon) {display: none;}body.normal #app:has(.maximum.active):not(:has(.noframeViewerTheme.active)) .main {top: 0;z-index: 10;}body.normal #app:has(.maximum.active):not(:has(.noframeViewerTheme.active)) .main .siderBar {display: none;}body.normal .setup-popper .userInfo {border-radius: 12px;padding: 20px;}body.normal .setup-popper .userInfo .nickname {display: flex;flex-direction: column;}body.normal .setup-popper .userInfo .nickname::after {content: '言语道断,非物所拘。';font-weight: 400;font-size: 13px;line-height: 15px;white-space: nowrap;margin-top: 8px;}body.normal .setup-popper .userInfo .username, body.normal .setup-popper .userInfo .userInfoBottomItem:has(.nasName) {display: none;} |
原始未压缩版本
// SCSS TO CSS: https://www.dute.org/sass-to-css |




自动化部署脚本
极空间在每次系统更新时会重置该文件,可通过编写脚本并配置至 1Panel 的定时任务中自动恢复修改。
脚本实现功能如下:
替换标题并引用 CSS:检测 index.html 原标题,替换为新标题且添加自定义 CSS 引用;
复制覆盖资源:将指定的自定义 CSS 和网站图标,强制复制到目标目录覆盖旧文件;
前置环境检查:验证目标文件 / 目录可写性、依赖工具是否存在等。
/zspace/applications/services/pcweb/ |
check_index.sh
|

三、存储池之间镜像同步
极空间备份中心虽然支持不同存储池之间的镜像备份,但即使是管理员用户也无法为其他用户设置备份,除非登录对方账户手动配置。然而,由于这些备份项目并不在自身账户下,即使备份失败也无法获知。为解决这一问题,可以手动编写一个 Rsync 脚本,直接对存储目录进行备份,并通过 1Panel 的定时任务功能定期执行。
➜ apt install rsync |
极空间用户数据存储布局示意:
/tmp/zfsv3/存储硬盘类型/用户手机号/data/ |
rsync 脚本
|

四、OneDrive 云端备份
极空间备份中心虽支持云端备份,但不知从何时起,OneDrive 备份功能在上传文件过程中会修改文件时间属性,导致图片类文件丢失原始元数据而无法正常使用。

为规避该问题,可使用 rclone 工具自行实现 OneDrive 备份。
- 参考官方教程进行 rclone 的安装:
sudo -v ; curl https://rclone.org/install.sh | sudo bash |
参考该教程进行 Onedrive 的连接配置:Microsoft OneDrive
也可参考此篇文章进行 Rclone 配置:使用 Rclone 挂载 OneDrive 自动备份
client_id 和 client_secret 的获取参考这篇文章:vps使用rclone挂载OneDrive详细记录
- 自建应用可以避免:触发限流、稳定性差等稳定。
- client_secret 的最大有效期为两年,两年后需重新申请。
config_token 的获取需要浏览器参与,所以需要 Windows 本地安装 rclone。
rclone 命令参考:
同步文件 rclone sync /local/file <远端名称>:/remote/file
配置密码 rclone config password
最后我们编写个脚本,方便在计划任务中调用:
rclone 脚本
|

五、极影视合集时间
在极影视中按时间排序时,合集会被排到最后,因为数据库中的 release_year 和 release_date 为空。要避免这种情况,可以在数据库中填补这两个字段的值。

极影视的数据库文件位于 /zspace/zsrp/sqlite/zvideo/zvideo.db,修改前请记得备份该文件。
update_zvideo.sql
-- 开始事务以确保数据更新的原子性 |
update_zvideo.sh
|

六、SSH 配置文件自动恢复
check_sshdconfig.sh
|
七、IPV6 地址老化监听
ipv6_check.sh
|

