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

忘机山人

发布于344天前
博客图片修整中,看不了可以先搜索公众号“忘机山人”看。
懒猫微服的可玩性在于可以让开发人员放开手脚来做一些事情,等于是提供了一个可靠的基础设施。那么理所当然我们可以把开源的知识应用到上面,比如开发或者移植应用,或者干脆部署一些好玩的东西。这在传统NAS上实现起来很困难,甚至都没有包管理工具。

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

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

### NPM

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

```bash
npm install -g @lazycatcloud/lzc-cli
```

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

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

```
 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 的全局安装目录,规避权限问题。在当前用户目录中创建一个文件夹并添加到环境变量中即可:

```bash
 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](https://raw.githubusercontent.com/cloudsmithy/picgo-imh/master/image-20250623222439761.png)

#### 能够学到哪些知识:

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 云主机,你可以在上面尽情发挥创意与技术。
![c65b5d34d8a94561d23a8c6ddf79dfcc.jpg](https://dl.playground.lazycat.cloud/guidelines/459/2b3771e9-4e2d-412b-8ca9-176a3e8e7164.jpg "c65b5d34d8a94561d23a8c6ddf79dfcc.jpg")

评论

0

暂无评论

说点什么呢~
收藏
1
0
0