很早之前就关注过国内做的一个很特殊的操作系统, 叫FydeOS, 他是基于ChromiumOS构建的中国版的ChromeOS, 这种操作系统主打的理念是, 很多人在工作中其实并不需要性能多好的终端计算机设备, 而是需要一个能访问工作必备的服务的入口型设备就好, 具体到目前的情况, 就是终端设备只要能鱼形浏览器, 然后通过浏览器来访问云端的服务完成操作就好.
这个概念确实非常有意思, 让我想到了git和svn这两种版本管理软件的不同理念, git的理念是分布式, 每个开发者都会保留一份完整的项目代码, 并且保有不同人对这份代码做的不同分支的修改. 而svn则是集中式, 用户只需要通过服务访问他需要访问的那一部分即可.
我个人觉得分布式和集中式并无优劣之分, 而是有各自事宜的应用场景. 而具体到我的工作上, 目前的工作方式应该属于是没有任何备份的分布式, 工作环境和工作内容都位于我自己的或者公司里的个人电脑上, 如果哪天不好彩我的设备报废了…那…要恢复工作估计会相当花时间, 同时如果有一天我要紧急处理东西但是这台设备并不在身边或者并没有电…除了干着急也没什么辄
所以我也很像试试, 我现在的工作, 有没有可能完全云端化呢? 即部署一系列的自部署服务, 然后完全通过浏览器或其他支持连接远程项目的开发工具来完成工作, 编写调试都在服务端进行实际执行.
我的工作需要用到的所有软件
生信的工作, 简练一些, 那就是: 写脚本, 画统计图, 图形精修, 撰写各种乱七八糟的文档, 实际会用到的软件包括:
- 代码编写/测试: VScode, Jupyter
- 环境部署: conda, docker
- 文件整理: 系统自带的文件管理器
- 文档处理: WPS系列
- 文献查阅: Zotero
- 图片处理: GIMP
搭建一个云端开发环境所需要的
为了实现一个完全云端的工作环境, 最理想的情况下上述所有软件都得找到可自部署的云端软件项目, 能解决的包括:
- 代码编写/测试: code-server, Jupyter本来就是服务, 可以远程访问
- 环境部署: 远程SSH登陆再操作就是, 或者找一个web的终端模拟器
- 文件整理: Nextcloud, firerun
- 文档处理: only office server
- 文献查阅: paperpile(要钱)
那么数下来, 其实也就是修图这个…还真没找到能自部署的东西, 后续可以再持续关注
进行尝试
ML-Hub / ML-Workspace配置
ML-Hub / ML-Workspace是基于容器的多重网络服务集成项目, 其中包含了装好一大堆插件的JupyterHub, code-server和一个简单的文件管理器, 如果不是Docker运行有用户权限的问题需要处理, 瞬间就能完美解决六七成的问题了…
两者的使用都比较简单, 装了Docker或者Podman之后直接启动赴服务就好
内网穿透(nps)
nps是一个用go语言实现的…复合网络工具? 其中一项就是实现内网穿透, nps包括服务端和客户端. 需要注意的是nps的服务端是作为中转站来使用的, 其作用是作为皮条客(不是)将各个客户端互联互通起来, 因此实际设置的时候, 先要找一个有公网ip的主机, 上面部署上nps, 然后被访问的机器需要通过客户端npc连接到nps服务端, 然后其他的客户端再公国nps这个中转站连接到要被访问的客户端.
总之…跟vnc, rdp以及SSH这种, 开服务的机器就是被访问的机器方式是挺不一样的.
https代理设置
如果想把搭建的服务挂在某个域名下, 通过域名直接访问, 那处于安全考虑, https总还是要用的. 域名申请自然是找个最便宜的先买者, 然后就是使用Caddy进行反代理了, 在折腾了许久后, 我最后用的配置写法是这样的.
1 | { |
防火墙设置(iptables)
同前…为了其安全…防火墙还是应该开起来意思一下…所以我也找了点教程来学怎么用iptables(CENTOS 8开启iptables), 不过这玩意也是老古董了… 好些新系统直接用别的防火墙管理程序了都…
1 | iptables -I INPUT -p tcp --dport 80 -j ACCEPT |