构建自己的pubnix服务
Table of Contents
pubnix是什么
pubnix 全称叫Public Access Unix Systems (公共访问unix系统),顾名思义就是开放给公共大众使用的unix服务器。最开始unix受限于当时的硬件条件,算力资源通常在一台机器上,普通用户只能通过终端这种IO设备用调制解调器方式连接到一台物理Unix服务器来共享使用。
从某种程度上来讲,这种多用户在一台机器上的场景,是社交网络的雏形。就好像我们在一个网络论坛里,从服务器的角度看,我们都是其中账号,只不过这些账号受到非常大的限制,只能发帖回帖之类的操作。
而多用户unix服务器则不同,用户在上面的账号提供的是shell, 就和真正给你一台服务器类似,你可以拥有一部分服务器网络计算存储资源,相比较于社交网络应用的账号可以更加自由的使用服务器的资源。
当然随着硬件性能的发展,现在的用户们也不需要挤在一台服务器上。网络和web技术的发展,也让普通用户也在各种商业server上组成了各式各样的的社交群体,虽然普通用户在这些server只能使用非常有限的功能和资源,但是对于普通大众来说也足够了。
pubnix也逐渐变成了极少部分技术极客会去使用的东西,下面就是两个目前比较知名的pubnix社区。
搭建自己的pubnix
构建这类pubnix的流程其实也非常简单,我自己也在vps上构建了一个非常基本的server叫sanboxflow.club
我把构建的流程命令写成了script,项目放在github上 https://github.com/GZJ/sandflow.club ,方便我在转移server的时候可以方便重建。
设置网关
文件: script/cron_certbot.sh
这里选择nginx作为网关,先安装好nginx和certbot
sudo apt install nginx sudo snap install --classic certbot
然后调用script/gateway_setup_cert.sh ,这个脚本会通过certbot获取到let's encrypt的证书给自己的域名加上https支持
再用script/cron_certbot.sh设置证书的定时更新。
最后用script/gateway_setup_user_homepage_location.sh配置pubnix用户的homepage路径,这个路径就是每个pubnix用户的个人网页路径。
构建index.html
文件: script/index_generate.sh、 script/index_deploy.sh、 script/index.html.tmpl 。
index_generate.sh通过index.html.tmpl作为模板生成index.html,然后用index_deopy.sh部署到nginx中去。
设置motd
文件:script/motd.sh、script/motd
motd可以给每个账号不同的登录欢迎提示,修改项目文件motd内容后,用motd.sh设置到系统里去。
public_html结构
文件: script/user_setup_skel.sh
user_setup_skel.sh设置/etc/skel给每个账户创建public_html的模板 默认是用了项目里的index.html
设置邮箱系统
文件: script/postfix.sh
postfix.sh脚本里有简易的设置,让postfix给每个用户创建maildir的目录,这个目录就是存储邮件数据的地址
用户申请
我提供两种方式申请用户账号
一种是在sandflow.club 的user目录下创建自己要申请的用户名作为目录名,然后ssh-keygen创建密钥对,将公钥放到用户名目录下再push提交一个pr就好了。作为管理员我会merger你的pr,然后在服务器上通过script/user_add.sh这个脚本将用户添加pubnix中。
还有一种通过email将要申请的用户名和公钥发送给管理员,管理员自己操作上面这个流程创建用户账号。
以上就是一个基础的pubnix组成了,后续具体怎么玩就看每个人对系统的喜好了。