2025-12-04 20:34:50
最近在这个叫 KASM 的玩意,这个很久之前就见过,感觉很复杂就没弄,最近短暂的有空,搭建了一个玩玩。
KASM 和核心功能来自一个叫 KasmVNC 的产品,这个是开源的,虽然名字里有 VNC 这两个字,但是他并不是传统的 VNC ,它比VNC有着更好的性能,支持GPU加速,直接剪贴板,文件上传下载等。
接触这个是因为之前了解的另一个项目,docker-baseimage-gui,一个预装了虚拟屏幕和 noVNC 的 docker 镜像,有一个应用是 stardew-multiplayer-docker,在docker上运行的星露谷物语,可以在浏览器上通过 VNC 控制。
想想还挺有意思,如果把程序都隔离到 docker 里面,通过浏览器来访问,这样既不用限定设备,局域网随意访问,内网穿透之后远程也可以访问了,岂不挺好,github 上也有了一些例如 docker-wechat 的项目,就是通过 docker 运行微信 linux 版,然后用 noVNC 在网页上显示,也可以实现微信多开了。
KASM 就是这样一个项目,他打包了很多常用的镜像(可惜并不是国内常用),然后有个管理平台,可以在用户需要的时候创建对应的 docker 容器,通过 web 界面访问;我想要折腾这种东西的一个出发点,就是有时候手上做到一半的东西,可以直接放在那,后面我换个电脑,可以接着继续开始,不用各种同步。


配合 PWA 还挺有模有样的。

还有支持游戏手柄,打印机,摄像头等穿透,就可以看出来和传统VNC的不同之处了。

后台就是基本的那一套功能了,添加自定义镜像源,管理用户可以访问的镜像,限制资源,让 docker 扩容等。不过要说的是,他这个后台并不是开源的,只是镜像本省是开源的,不过功能也是免费的就是了。
感觉也可以搞个云游戏之类的东西,把自己的电脑分享给朋友一起玩,之前b站上有过类似的视频,叫什么多人一机之类。
这些功能都是基于 web 的,其实不需要安装 kasm 这个后台也可以单独用docker 运行的,例如 https://hub.docker.com/u/kasmweb 仓库下,有很多 kasm 使用的镜像,里面有运行说明,也可以基于这些镜像定制,比如安装自己的软件之类的。
安装的话直接官网的教程就好了
https://docs.kasm.com/docs/install/single_server_install
不过要说的几点:
最后折腾这个的一个感想,就是 nvidia 的 gpu 真的是麻烦,想搞 linux 玩,还是乖乖用 amd 或者 intel 的显卡吧,用 nvidia 就是浪费生命。windows 也真是牛逼,搞了个 GPU-PV 的东西,可以不需要 GPU 虚拟化就把显卡给 WSL 用,不过也是扣扣搜搜,东西只给你一半,折腾起来也是费事,看到github 上有过一个项目 Linux-GPU-V-Scripts-for-Hyper-V,把 WSL 内的驱动复制到 Hyper-v 中,实现虚拟机内使用显卡,其实 WSL 也是一个特殊的虚拟机罢了。
最近有看了 intel 最近新出的显卡,intel b50,虽然性能不是很强,但是它的定位是专业卡,所有显卡特性基本上全支持了,而且支持虚拟化,不需要折腾任何东西,较新的 linux 内核直接内置驱动了,后面想搞一个玩玩,不过京东这 3k 块钱的售价,还是等什么时候便宜一下吧。
最后一直在折腾这种乱七八糟的小玩意,后面很长一段时间应该不会去折腾了,这是最近最后一个折腾分享了吧,希望是,还是得专注于有价值的事情上面(专心搞钱)。
其他:摄影项目因为服务器过期不打算续了,只是当初不知道它跑在那个服务器上,数据我都是定时备份的,后面找个时间迁移一下。
2025-11-26 15:20:30
默认docker存储都是放在 /var/lib/docker 这个目录下面,随着使用时间越来越大。你可以使用 docker image prune 来清理不用的镜像。
做为一个 NAS 玩家,我打算直接把docker文件夹存到 NAS 的存储上。
使用 SMB 挂载目录的话可能会遇到一些问题,因为 SMB 不支持所有的 POSIX 标准,所以我是直接挂载了一个远程硬盘到虚拟机中。系统盘保持足够的小,方便后面备份和快照,而这个数据盘就不需要快照和备份了。
更改 docker 存储目录也是很简单。
首先关闭docker
service docker stop
更改docker配置
nano /etc/docker/daemon.json
添加data-root配置,类似下面这样,我是放到 /mnt/docker_data 目录
{ "data-root": "/mnt/docker_data"}
移动原来的docker数据
rsync -aHAX /var/lib/docker/ /mnt/docker_data/docker/# 或使用下面的直接移动:# mv /var/lib/docker /mnt/docker_data/
然后重启docker
service docker start
然后这样基本上就完了
如果只是这样也没什么好写的了,说下我遇到的其他问题。
之前我是一直用上面的方法,最近用这个方法的时候,用 KASM 拉取镜像的时候,还是提示空间不足,而且df -h显示的空间也不对,类似下面这样
KASM 感觉还蛮有意思的,有兴趣的可以去搜搜,是一个云桌面平台,后面我摸熟了可能会写个文章介绍一下。
| Filesystem | Size | Used | Avail | Use% | Mounted on |
|---|---|---|---|---|---|
| udev | 3.9G | 0 | 3.9G | 0% | /dev |
| tmpfs | 795M | 2.2M | 792M | 1% | /run |
| /dev/sda1 | 18G | 13G | 4.1G | 76% | / |
| tmpfs | 3.9G | 0 | 3.9G | 0% | /dev/shm |
| tmpfs | 5.0M | 0 | 5.0M | 0% | /run/lock |
| /dev/sda15 | 124M | 12M | 113M | 10% | /boot/efi |
| /dev/sdb1 | 492G | 3.3G | 463G | 1% | /mnt/docker_data |
| overlay | 18G | 13G | 4.1G | 76% | /mnt/docker_data/rootfs/overlayfs/xxx |
| tmpfs | 88M | 0 | 88M | 0% | /run/user/0 |
明明 /mnt/docker_data 显示有 492G 空间,为什么 docker 的 overlayfs 显示和系统根分区一样是 18G 呢。
后面也是问了 AI 才知道,原来 docker 自身的存储和依赖的 containerd 可能是分开的。我看了下,的确系统有个 containerd 服务。
按照docker的指引,修改 containerd 存储路径。
nano /etc/containerd/config.toml
root = "/mnt/docker_data/containerd"state = "/run/containerd"
systemctl restart docker
结尾,如果有遇到相同问题的,恰好搜到我这个文章,可以作为一个思路。如果从零开始,刚好看到我这个文章,不建议照抄命令,还是说只能作为思路的参考。
另外上面的大多数命令,例如 rsync -aHAX ,发送给 AI ,他都可以给你解释每一个参数的用处,建议在网上看到的教程,都了解每个参数的含义了,再进行操作。
docker的不同版本,每个发行版,都是不一样的,例如 docker compose,有些发行版上是用 docker compose 命令,有些是 docker-compose,另外发行版自身的包管理器和官方的源,都是有不一样的,建议判断下具体的环境,还有时间,综合做出决定。
2025-11-25 14:38:38
某人死后,灵魂来到一个地方,当他进门的时候,守门人对他说:“你不是贪吃吗?这里有的是东西随你吃。你不是贪睡吗?这里睡多久也没人打扰。你不是爱玩吗?这里有各种娱乐由你选择。你不是讨厌工作,不喜欢受拘束吗?这里保证没有事做,更没人管你。”
于是此人高高兴兴留了下来。吃完就睡,睡够就玩,边吃边玩。但是三个月下来,他渐渐觉得有点不是滋味,于是跑去见守门人:“这种日子过几天倒还不错,但是时间长了,不见得好。因为玩的太多,我对娱乐已经提不起什么兴趣;吃得太饱,是我身体不断发胖;睡得太久,头脑又变得迟钝,您能不能给我一点儿工作,早晨催我起床啊!” 守门人摇摇头说:“对不起!这里没有工作,跟没人催你早起。”
又过了三个月,这人实在太难受了,于是他又跑到守门人面前哭诉:“这种日子我实在是受不了了,如果你再不给我工作,我宁愿下地狱。”
“你以为这是天堂吗?这里本来就是地狱啊!” 守门人大笑道,“他使你没有理想,没有创造,没有前途,逐渐腐化。这种心灵得煎熬,要比上刀山下油锅的皮肉之苦,更令人无法忍受啊!”
来自 刘墉 《人生海海,自在独行》
2025-11-15 22:19:36
traefik.me 是一种通配符域名,可以把类似 xxx.traefik.me 这种域名解析到 xxx 这个 ip 上面。
例如可以使用 192-168-1-1.traefik.me 访问你局域网的 192.168.31.1 这个 ip 地址,为什么要这么脱裤子放屁呢,主要因为直接使用 ip 地址对于浏览器有一系列限制,而且通常你还要加上端口。
对于 traefik.me ,你还可以在前面加上一定区分 ,例如 app1-192-168-1-1.traefik.me,还是解析到 192.168.31.1 这个机器,但是你可以在nginx中对 app1 app2 来反向代理到不同的服务,由于是域名,你还可以使用 acme 实现自动 SSL。
如果你使用 tailscale 就更方便了,本身 tailscale 可以组网,直接用组网的ip,这样你的内网服务就可以在内部各处访问了,不需要折腾太多公网的东西。
例如我的,使用dokploy这个自动部署工具

service-nekotemplatespringadmindev-cnjau7-cb6638-100-118-61-63.traefik.me 是我写的一个测试服务的地址,这个是 dokploy 随机生成的,前面的一堆都可以不用看,我部署了很多程序,前面的是用来区分是哪个程序的,100-118-61-63 这个是我机器的内网地址,当访问上面的网址时候,dokploy会使用 treafik 路由,反向代理到我部署的 docker 程序,就像下面这样。
http: routers: service-nekotemplatespringadmindev-cnjau7-router-26: rule: Host(`service-nekotemplatespringadmindev-cnjau7-cb6638-100-118-61-63.traefik.me`) service: service-nekotemplatespringadmindev-cnjau7-service-26 middlewares: [] entryPoints: - web services: service-nekotemplatespringadmindev-cnjau7-service-26: loadBalancer: servers: - url: http://service-nekotemplatespringadmindev-cnjau7:8080 passHostHeader: true
这个使用 nginx 也可以可以实现的。
这样我就可以在任意位置,只要加入了 tailscale 组网,就可以使用上面域名访问我的服务,也不用输入端口,也可以使用 https,因为现在浏览器很多新增功能,为了安全也是要 https 才能支持。
通常支持这个功能的还有 nip.io 和 xip.io 这种。
2025-11-10 11:46:02
之前就发现自己门牙上旁边有个黑窟窿,可能是蛀牙什么的,上周有时间,就去最近的一个医院看了一下。看了之后发现蛀牙还真不少,总共6个小的,3个大的,反倒是门牙那个很显眼的,医生说不是蛀牙,是什么牙结石之类,后面做了牙周处理。
几个小的蛀牙用树脂填的,大的医生说最好用嵌体,总共花费了7-8千块钱,医保瞬间给我清空了属于是,自己还自费了6千。本来还觉得我的决定还是挺冲动的,没有货比三家去别的医院也看看,或许医生坑我呢,也许有更好的方案,现在觉得也没必要怀疑医生吧。
也是切身体会了电影《Eden》里的那个男主,为什么决定离开城市时候把自己牙全拔光了,牙医真的是现代社会不可或缺的职业呀。
补牙之前需要把蛀牙用那个类似小电钻的东西打磨掉,照片就不放了,看的吓人呢,几个小的牙齿没什么感觉,就是能闻到烧糊的味道,3个严重点的就感觉到一整酸痛的感觉,后面的医生拍的照片可以看出来,牙齿中间被打磨出了一个很深的十字形的坑,全程也是张了很久的嘴,感觉都快脱臼了。医生用3d扫描的设备,给牙齿做了个建模,这3个要做嵌体的,还要等厂家根据3D扫描生产出来才能做,医生说要等下周了,现在先临时用一个绿色的啥玩意填充了一下。
不过说到这个临时填充的,今天早上刷牙我尽然给它刷出来了,不知道吃饭东西会不会卡进这个牙坑里面,后来又用手塞了进去,感觉最近不能吃太刺激的了,毕竟那个坑也是离神经不远了。
补完牙之后又是做的牙周,医生给打了一点镇静计,我也是全程没怎么看,只是感觉医生那什么塞进我的一个个牙缝,还有偶尔的酸痛,还有一阵阵烧糊的味道。结束之后看到我嘴里都是血,漱了漱口口后医生给上了个药,拿了漱口水,也是结束了。
还是没想到自己蛀牙这么多,以为自己还是很年轻之类的,就一堆问题,可能是之前快乐水喝多了,医院也能听到一些10来岁的小孩,在那哭的特别大声,看来这玩意跟年纪也没什么关系,之后人生又要少了一个乐趣了。
之前也是刷到过一些做根管的视频,看着就很吓人,推荐各位没看过的去搜下看下,健全的还是要注意防护呀,看完就会瞬间有了敬畏之心了。医生也是一直有推荐用什么牙线清理,这玩意我到现在还是一次没用过,之前倒是有尝试,总感觉塞不到牙齿里面,后面还是要尝试一下。
本来想着每周写一点什么的,这个打算是昨天写的,然后还约了个模特练习下拍照,也是因为是下雨,然后就是昨天早上睡了很久,大概是前天22:30就睡了,到第二天8:30,还是没睡醒,下午头昏脑涨,有点发烧的样子,中午的饭吃了两口也是吃不下了,有点想吐的。
没办法也是没出门,在家看了KT:T1的比赛,恭喜Faker的六冠王,这次比赛虽然国内没什么热度,赛事结束也是有点敷衍,但是我觉得5把都打满,也是蛮精彩的,尤其是第一把,不过后面KT感觉就一直不在状态,不知是不是因为英雄池太浅,反倒是T1越战越勇。