懒猫微服开发篇(零):上架应用需要哪些知识

懒猫微服的可玩性在于可以让开发人员放开手脚来做一些事情,等于是提供了一个可靠的基础设施。那么理所当然我们可以把开源的知识应用到上面,比如开发或者移植应用,或者干脆部署一些好玩的东西。这在传统 NAS 上实现起来很困难,甚至都没有包管理工具。

我们看一看开发懒猫应用,需要什么样的知识?

那么,开发懒猫微服的应用需要掌握哪些技能呢?

NPM

懒猫微服的 CLI 本质上是一个通过 NPM 全局安装的工具包,因此掌握一些基本的 NPM 使用方法是必要的。

1
npm install -g @lazycatcloud/lzc-cli

这个工具是用 JavaScript 编写的,但如果你只是为了使用而非开发,那么并不需要掌握这门语言。当然,你也可以选择使用 pnpm 或 yarn 作为包管理工具,或者通过 NVM 来创建 Node.js 虚拟环境。

如果在 macOS/Linux 上遇到了权限不足的问题,其实不一定要使用 sudo。默认情况下,npm 的全局目录是 /usr/local,普通用户对其没有写权限。比如我们可以看到:

1
2
3
4
5
6
7
8
9
10
11
 ll /usr/
total 0
drwxr-xr-x 918 root wheel 29K 6 5 14:05 bin/
drwxr-xr-x 32 root wheel 1.0K 6 5 14:05 lib/
drwxr-xr-x 417 root wheel 13K 6 5 14:05 libexec/
drwxr-xr-x 8 root wheel 256B 6 10 09:31 local/
drwxr-xr-x 230 root wheel 7.2K 6 5 14:05 sbin/
drwxr-xr-x 43 root wheel 1.3K 6 5 14:05 share/
drwxr-xr-x 5 root wheel 160B 6 5 14:05 standalone/
lrwxr-xr-x 1 root wheel 25B 6 5 14:05 X11@ -> ../private/var/select/X11
lrwxr-xr-x 1 root wheel 25B 6 5 14:05 X11R6@ -> ../private/var/select/X11

因此我们可以通过设置 npm 的全局安装目录,规避权限问题。在当前用户目录中创建一个文件夹并添加到环境变量中即可:

1
2
3
4
5
6
7
8
 npm config get prefix
/usr/local
mkdir ~/.npm_packages
npm config set prefix ~/.npm_packages/
npm config get prefix
/Users/home/.npm_packages

export PATH=~/.npm-global/bin:$PATH

开发的技能是可选的,如果你只是移植现有的应用的话,那么具备一些 Docker Compose 的知识就足够了,这个我们后面再说。

如果是开发原创 APP 的话,那么无论是 Vue,React,Go,Python 都有用武之地,只要是 Web 的应用能够本地运行或者打包成 Docker 就能上架商店。相信很多开发的小伙伴也会做一些 Devops 的事情,这部分的技能是可以完全迁移过来的。

Linux

很多 NAS 是基于 FreeBSD 或者 Linux 改的,懒猫微服是基于 debian12, 虽然在设计之初是针对非专业玩家。但是后来也开放了 SSH,可以做和其他 Linux 一样的事情,给了 root 用户,所以可以底层操作文件,网络,查看分区,监控,以及系统负载。

所以不是只有树莓派或者自己笔电装机才能学 Linux,懒猫微服的系统重启之后会复原(除了 root 目录和网络设置),所以请随便折腾。

虽然有了一套很完善的图形客户端,但是相信很多专业的玩家还是更加喜欢用传统 Linux 的方式来看待这个微服,我管他叫做拆解系统设计。

举个例子:用 htop 查看负载、用 nmtui 配置网络、用 lsblk 查看磁盘分区、用 systemctl 设置服务自启。深度定制的系统,让我们可以完全无视内核,以及 grub 的这些东西。甚至连 sambda,webdav 这些 server 都不用自己安装。

Docker

Docker 好像对 NAS 玩家是必须的,无论是群晖,威联通。与传统 NAS 不一样的是,懒猫微服集成了三套 docker,分别是系统组件,playground 和应用商店。

playground 就是我们刻板印象的 Docker, 这里叫做pg-docker,所以需要懂一些 Docker 的知识,比如下载,打包,上传,还有数据卷的贡献。甚至包括 Docker- compose 的使用。

应用商店也是基于 Docker 运行的,

上架软件时有两种方式:

  1. 直接打包:这个一般用于原创应用或者移植开源无 docker 版本的应用。调试的时候可以使用懒猫内置的 Docker Registry 的 image 进行测试,颇有 VS code remote 的风格。这个调试模式叫做 devshell。

  2. Docker 镜像迁移:一般用于已有的 docker image 的迁移,由于国内出海宽带不足,访问 Docker 经常失败。所以需要使用懒猫提供的 Docker Registry 来做一个国内版本的镜像。然后再做目录的映射。

OIDC

这个稍稍有点跑题,前面的都是传统 Devops 需要的东西。这里的 OIDC 叫做 OpenID Connect,是单点登录实现的一种。传统的认证有基于 cookie 的,或者基于 JWT 的。OIDC 是后者,也是单点登录中最优雅的实现。除了 OIDC 之外,你可能听说过 SAML,Oauth,其实也都是 Single Sign-On 的不同实现,而 Oauth 是和 OpenID Connect 源同一脉,Oauth 的各家实现千差万别,而 OpenID Connect 既统一了规范,解决用户态的问题。换句话说 OAuth 2.0 只是用来授权,颁发的是Access Token,而对于访问者是谁还需要开发人员自己存数据库。OIDC 则是引入了ID Token,这通常是通常是 JWT,所以认证直接请求 IDP 解码就好了。大致是这个流程:

下图是 OIDC 的基本流程:

image-20250623222439761

能够学到哪些知识:

  1. 微服内部的官网看起来是根据 OpenResty 改的(个人推断),所以可以来复习一下 nginx 或者 OpenResty 相关的知识
  2. Docker 的使用,容器这几年还是挺火的,移植应用必备,甚至还支持 web VNC。
  3. HTTP 知识:有些情况需要对 http 的请求做特殊的处理,比如加一些自定义 header 或者 cookies
  4. 单点登录:微服内置了 OIDC 的认证,应用能够自动帮助我们申请 CLIENT_ID 和 CLIENT_SECRET,简化了和 IDP 打交道的环节。

总结

如果你熟悉 Web 开发、Docker 和基本的 Linux 操作,那么你已经可以快速上手懒猫微服的应用开发。无论是移植开源项目,还是开发原创 App,只要能够在本地运行或打包为 Docker 镜像,就可以顺利上架到应用商店。

懒猫微服不仅仅是一个面向普通用户的 NAS 系统,更是一块为开发者打造的自由试验田 —— 它就是一台稳定可靠的 Debian 云主机,你可以在上面尽情发挥创意与技术。

懒猫微服开发篇(零):上架应用需要哪些知识

https://xu-hardy.github.io/懒猫微服开发篇(零):上架应用需要哪些知识/

作者

Xu

发布于

2025-07-02

更新于

2025-07-01

许可协议

评论