构建自己的pubnix服务

Table of Contents

pubnix是什么

公共访问 Unix 系统的历史和未来

pubnix 全称叫Public Access Unix Systems (公共访问unix系统),顾名思义就是开放给公共大众使用的unix服务器。最开始unix受限于当时的硬件条件,算力资源通常在一台机器上,普通用户只能通过终端这种IO设备用调制解调器方式连接到一台物理Unix服务器来共享使用。

从某种程度上来讲,这种多用户在一台机器上的场景,是社交网络的雏形。就好像我们在一个网络论坛里,从服务器的角度看,我们都是其中账号,只不过这些账号受到非常大的限制,只能发帖回帖之类的操作。

而多用户unix服务器则不同,用户在上面的账号提供的是shell, 就和真正给你一台服务器类似,你可以拥有一部分服务器网络计算存储资源,相比较于社交网络应用的账号可以更加自由的使用服务器的资源。

当然随着硬件性能的发展,现在的用户们也不需要挤在一台服务器上。网络和web技术的发展,也让普通用户也在各种商业server上组成了各式各样的的社交群体,虽然普通用户在这些server只能使用非常有限的功能和资源,但是对于普通大众来说也足够了。

pubnix也逐渐变成了极少部分技术极客会去使用的东西,下面就是两个目前比较知名的pubnix社区。

搭建自己的pubnix

构建这类pubnix的流程其实也非常简单,我自己也在vps上构建了一个非常基本的server叫sanboxflow.club

构建自己的pubnix服务.org_20240305_211929_1Xoqm0.png

我把构建的流程命令写成了script,项目放在github上 https://github.com/GZJ/sandflow.club ,方便我在转移server的时候可以方便重建。

  1. 设置网关
    文件: 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用户的个人网页路径。

  2. 构建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中去。

  3. 设置motd
    文件:script/motd.sh、script/motd

    motd可以给每个账号不同的登录欢迎提示,修改项目文件motd内容后,用motd.sh设置到系统里去。

  4. public_html结构
    文件: script/user_setup_skel.sh

    user_setup_skel.sh设置/etc/skel给每个账户创建public_html的模板 默认是用了项目里的index.html

  5. 设置邮箱系统
    文件: script/postfix.sh

    postfix.sh脚本里有简易的设置,让postfix给每个用户创建maildir的目录,这个目录就是存储邮件数据的地址

  6. 用户申请
    我提供两种方式申请用户账号

    一种是在sandflow.club 的user目录下创建自己要申请的用户名作为目录名,然后ssh-keygen创建密钥对,将公钥放到用户名目录下再push提交一个pr就好了。作为管理员我会merger你的pr,然后在服务器上通过script/user_add.sh这个脚本将用户添加pubnix中。

    还有一种通过email将要申请的用户名和公钥发送给管理员,管理员自己操作上面这个流程创建用户账号。

以上就是一个基础的pubnix组成了,后续具体怎么玩就看每个人对系统的喜好了。

参考