绿联云NAS一些探索(1):SSH、包管理器探测、安装docker-compose等

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 绿联云NAS一些探索(1):SSH、包管理器探测、安装docker-compose等

1. 关于:为什么

很久前买了一个绿联云NAS,其功能实在有限,不仅有各种漏洞,很多问题在绿联社区提出也得不到解决。很多功能,虽然在UI上看起来有,但是又不完整。比如安装了Docker却不能手动执行相关命令,也没有Docker Compose,更不要说绿联云的Docker没有做NAT,离开了绿联NAS所在的网络就无法访问——简直是,罄竹难书。


于是产生了SSH到NAS进行研究的想法,这篇文章便是初探。

2. 远程调试功能

远程调试功能是一个绿联云提供的

开启远程调试功能只能在管理员用户上运行,且需要获得手机验证码,一旦验证成功,就可以获取一个

3. SSH到绿联云NAS

3.1 端口

绿联云使用的是922端口,而不是22端口,这一点需要注意。如果你在

3.2 密码

密码是一个3天有效的临时密码,也就是“开启远程调试”时的验证码。

3.3 SSH命令

在了解账户和密码后,你可以使用下面的命令登陆:

ssh root@192.168.31.12 -p 922

4. 探测包管理器

处于猜测,最常见的就是apt-getyum这两种包管理器,不过很快你就会发现,绿联云NAS上,根本就没有这两个包管理器,为了不再继续手动尝试浪费时间,可以实现一个脚本,将常用的包管理器罗列进去。

这里我贡献一个包管理器探测脚本,我常使用它来测试不同linux发行版本上所使用的包管理器是什么。

#!/bin/bash

# 检查命令是否存在并打印软件包管理器名称
check_command() {
    if command -v $1 &> /dev/null; then
        echo "$2 is available"
        exit 0
    fi
}

# Check for common package managers
check_command apt "APT (Debian, Ubuntu)"
check_command apt-get "APT (Debian, Ubuntu)"
check_command yum "YUM (CentOS, RHEL)"
check_command dnf "DNF (Fedora, RHEL 8+)"
check_command rpm "RPM (CentOS, RHEL, Fedora, SUSE)"
check_command pacman "Pacman (Arch Linux)"
check_command zypper "Zypper (openSUSE, SLES)"
check_command eopkg "EOPKG (Solus)"
check_command snap "Snap (Cross-distribution)"
check_command flatpak "Flatpak (Cross-distribution)"
check_command opkg "OPKG (OpenWrt, embedded systems)"
check_command pkg "PKG (FreeBSD)"
check_command apk "APK (Alpine Linux)"
check_command xbps-install "XBPS (Void Linux)"
check_command swupd "swupd (Clear Linux)"
check_command pkgutil "pkgutil (Solaris, Illumos)"
check_command pkg_add "pkg_add (OpenBSD)"
check_command yast "YaST (SUSE Linux Enterprise)"
check_command equo "Equo (Sabayon Linux)"
check_command emerge "Portage (Gentoo)"
check_command nix-env "Nix (NixOS)"
check_command guix "Guix (GuixSD)"
check_command ups "UPS (Unified Package System, Oracle Solaris)"

# 如果没有找到公共包管理器
echo "No common package manager found"
exit 1

一般来说,系统上有精简版编辑器vi,可以使用它编辑上面的脚本到文件:

vi detect_pkg_manager.sh

复制粘贴脚本后,编辑保存退出。接下来,赋予脚本执行权限:

chmod +x detect_pkg_manager.sh

现在,运行脚本:

./detect_pkg_manager.sh

运行后可见输出为:

OPKG (OpenWrt, embedded systems) is available

因此,此系统上所使用的包管理器为:OPKG

5. OPKG包管理器

5.1 OPKG是什么

OPKG包管理器是一个相对少用的包管理器。这里我已经查阅和准备好了它的资料。

OPKG是一个轻量级的包管理系统,因为它主要用于嵌入式Linux系统,如OpenWrt、LEDE等。它的设计目标是提供一个简单、快速、可靠的包管理工具,适用于存储空间和系统资源有限的设备。OPKG的主要特点包括:

  1. 轻量级:OPKG的二进制文件和数据库占用空间小,适合嵌入式设备。
  2. 依赖管理:OPKG可以自动处理软件包之间的依赖关系,确保安装和升级的顺利进行。
  3. 多架构支持:OPKG支持多种CPU架构,如ARM、MIPS、x86等。
  4. 远程仓库:OPKG可以从远程仓库下载和安装软件包,方便系统的更新和维护。
  5. 包签名:OPKG支持包签名验证,提高系统安全性。

5.2 OPKG的特点

优点

  • 轻量级,适合嵌入式设备。
  • 自动处理依赖关系,简化软件包管理。
  • 支持多种CPU架构。
  • 可以从远程仓库获取软件包。

缺点

  • 功能相对简单,不如APT、YUM等包管理器强大。
  • 软件包的可用性和更新频率取决于源的维护者。

5.3 OPKG的配置文件

OPKG的主要配置文件是/etc/opkg.conf,其中包含了以下配置项:

src/gz :定义软件包源,是源的名称,是源的URL。

dest :定义软件包的安装目录,是目标的名称, 是目标的路径。

option :设置OPKG的选项,如option verbose-wget启用详细的wget输出。

5.4 OPKG的常用命令

更新本地的软件包列表

opkg update

升级已安装的软件包

opkg upgrade <pkgs>

安装指定的软件包

opkg install <package>

卸载指定的软件包

opkg remove <package>

列出可用的软件包

opkg list

列出已安装的软件包

opkg list-installed

列出软件包中包含的文件

opkg files <package>

搜索软件包

opkg search <keyword>

显示软件包的详细信息

opkg info <package>

6. 部署Docker Compose

我们希望能够提取版本号然后安装compose,不过在这个阉割系统里面还有一些麻烦。系统的已经安装的grep命令是 BusyBox 版本的 grep,它不支持 -P 选项。另外/usr/local/bin 目录也不存在。你可以参考我下面的方法来安装:

首先,确保 /usr/local/bin 目录存在:

mkdir -p /usr/local/bin

使用 sed 来提取最新的 Docker Compose 版本号:

LATEST_VERSION=$(wget -qO- https://api.github.com/repos/docker/compose/releases/latest | sed -n 's/.*"tag_name": "\(.*\)",/\1/p')

然后从github下载对应的版本来安装:

wget "https://github.com/docker/compose/releases/download/${LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose

下载完成后,赋予 Docker Compose 二进制文件执行权限:

chmod +x /usr/local/bin/docker-compose

验证 Docker Compose 是否安装成功:

/usr/local/bin/docker-compose --version

如果你看到显示版本号,说明安装成功:

至此,Docker Compose安装完成,你可以开始搞事情了。

另外,上面的步骤也可以合并为一个完整的脚本:

#!/bin/bash

# 更新软件包列表
opkg update

# 安装 Docker
opkg install docker

# 创建必要的目录
mkdir -p /usr/local/bin

# 下载 Docker Compose
LATEST_VERSION=$(wget -qO- https://api.github.com/repos/docker/compose/releases/latest | sed -n 's/.*"tag_name": "\(.*\)",/\1/p')
wget "https://github.com/docker/compose/releases/download/${LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose

# 赋予执行权限
chmod +x /usr/local/bin/docker-compose

# 验证安装
/usr/local/bin/docker-compose --version

将上述脚本保存为 install_docker_compose.sh,然后运行:

chmod +x install_docker_compose.sh
./install_docker_compose.sh

通过这些步骤,你应该能够在使用 opkg 包管理器的系统上成功安装 Docker Compose。

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
目录
相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
kde
|
4月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
kde
1658 1
|
2月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
358 3
docker 安装 Postgres 17.6
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
347 5
|
1月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
339 2
kde
|
4月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
kde
3083 59
|
7月前
|
存储 安全 C++
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
|
5月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
654 4
|
4月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
1712 0