我喜欢SSH,但真受不了每次都得打开它、记用户名和密码,就为了反复敲那些无聊的命令。当初搞这个项目,就是被这点小麻烦给逼的。
我家里实验室有几台服务器,但有一台特别费心,得天天盯着——查磁盘空间、做备份、打补丁,因为它管着家里的自动化系统。这些活儿不难,有些也自动化了。可那些零碎又烦人的手动操作,小到让人懒得专门开个SSH去弄。
OliveTin解决这个问题的方式特别简单。它让我把自己写的Bash脚本变成浏览器里的按钮,在家里的网络上随时点开就能用。在Debian家庭运维服务器上装好OliveTin后,我就不用再为开个SSH会话折腾了,直接把它变成了趁手的工具。
我真正需要的其实是一个按钮面板,而不是另一个管理命令中心
OliveTin足够简单,不会碍事
我可不想让家里的运维服务器再变成一个仪表盘。毕竟我搞的是家庭实验室,又不是休斯顿的航天指挥中心,而且我生活里没用的仪表盘已经够多了。我需要的是更简单的东西——就一个私人页面,上面放几个按钮,点一下就能跑我信得过的脚本。图表、小插件、扩展这些,我统统不需要,更别提什么完整的服务器管理控制台了。
OliveTin在这儿特别合适,它说白了就是个网页启动器,专门跑预设好的命令,用来搞智能家居升级、自动化、个人服务器管理,再合适不过了。我需要按钮来干这些事:看服务器健康报告、查存储情况、开关SSH和防火墙、还有关机。OliveTin这名字起得真没错,它干的就是它说的那点事,名副其实。
用OliveTin,我写好脚本、定好操作,它就在Web服务器上跑起来,把这些变成好用的浏览器应用。OliveTin装起来特别简单。我直接装在家庭运维的Debian服务器上,改了改配置文件,然后启动服务:
sudo apt install ./OliveTin_linux_amd64.debsudo systemctl enable --now OliveTin
OliveTin跑在1337端口上,所以我在Debian的UFW防火墙里放行了这个端口,然后给OliveTin配了个简单的测试配置——就一个按钮,点一下能返回点基本系统信息,看看能不能跑通:
actions: - title: "home-ops 向你问好" icon: "" popupOnStart: execution-dialog-stdout-only shell: echo "OliveTin 正在 $(hostname) 上原生运行,当前时间为 $(date)"
重启服务:
sudo systemctl restart OliveTin
这个按钮本身并没有做什么有用的事情,但这正是目的所在。我只需要证明服务正在运行、页面能够加载,以及 OliveTin 能够在浏览器中显示命令输出。
OliveTin 按钮可以使用 HTML 实体代码 作为图标,因此你可以在 YAML 中添加小表情标签,让仪表板更美观。
我最初创建的几个 OliveTin 按钮取代了所有枯燥的服务器脚本
健康检查、存储报告、服务状态——我为它们写过脚本,但后来一直没管,直到出了问题才想起来
测试按钮正常工作后,是时候用 OliveTin 上那些好用的按钮来取代我本应更频繁检查的事情了。说实话,这挺尴尬的——我一半的家庭服务器维护工作都是这样。我已经知道需要哪些命令,甚至为其中大部分编写了脚本,只是懒得 SSH 进去运行它们。
因此,我在 OliveTin 中创建的第一批按钮是用于运行基本服务器管理任务的脚本:
- 服务器健康
- 存储报告
- 服务状态
- 包更新和升级
- 系统配置备份
- 防火墙状态
服务器健康按钮把我平时手动敲的那些 Linux 监控命令 全整合到一起,一次跑完。该按钮关联的脚本只运行基本检查,然后以清晰易懂的格式返回结果:
uptime(查看运行时间)free -h(查看内存)df -h /(查看根目录磁盘空间)
其他脚本显示了系统负载和CPU占用最高的进程,让我不用打开终端就能清楚掌握服务器状况。存储按钮会生成一份报告,列出可用磁盘空间、文件系统使用情况,以及 /var 目录下占用空间最大的几个子目录。服务状态按钮会检查 SSH、OliveTin 本身以及 Docker 的运行情况。
加了个备份按钮后,OliveTin 才真正像个趁手的工具
把所有零散的脚本都归拢成按钮后,我就有了一件强大的内部工具
当监控工具按钮全部正常工作后,我创建了一个新脚本和按钮,用来备份那些万一我鼓捣的时候把系统搞崩了、最想找回来的配置文件。它会打包主机名、hosts 文件、SSH 配置、防火墙设置以及 OliveTin 的配置文件等内容。
tar -czf "$BACKUP_FILE" /etc/hostname /etc/hosts /etc/ssh /etc/ufw /etc/OliveTin
这没啥技术含量,说白了就是用 Bash 脚本把 tar 命令包了一层。但给它单独设了个按钮,而不是丢给 cron 任务然后祈祷它别出问题,这感觉就完全不一样了。是的,底层仍然是 Bash,但 OliveTin 让零散的脚本不再像是一件苦差事,到头来,我算是正儿八经地把家庭运维服务器给搭起来了。
然后我添加了一些更强大的按钮
在浏览器里重启 SSH、改防火墙规则确实方便,但得悠着点
那些不伤筋动骨的检查和备份按钮都跑通之后,我添加了一些需要更加谨慎的按钮,因为这些操作搞不好会把 OliveTin 和我自己都关在服务器门外:
- 启用防火墙
- 禁用防火墙
- 检查防火墙规则
- 启用SSH
- 禁用SSH
这些按钮依然很简单,背后就是一段 Bash 脚本:
systemctl start sshsystemctl stop sshsystemctl is-active ssh
这种简洁性正是 OliveTin 强大之处。如果 SSH 会话变得无响应,或者我需要快速关闭防火墙进行故障排查,开关选项就摆在那儿,随手就能操作。不过,如果我在无头服务器上点错了按钮,最好手边备着控制台访问权限,或者留个其他后门进去。
在我的家庭运维服务器上,这运行良好,因为我掌控环境,确切知道每个按钮的作用。而且,就算我的猫不小心通过 OliveTin 把我锁在服务器外,我也有备用进入方法。但在公共 VPS 或任何面向公众的服务上,显然不建议在没有某种身份验证的情况下运行 OliveTin。
我给自己添加了重启和关机按钮
然后我立刻添加了一个取消按钮
在 OliveTin 上添加重启和关机按钮非常合理,我回头也会在其他服务器上加上同样的功能,以便在突然断电等情况下快速关机。加了关机按钮后,我不小心点了一下,于是决定还需要一个定时器和取消按钮。
我改了之前写的关机 Bash 脚本,加入了一分钟定时器:
shutdown -r +1 "Restart requested from OliveTin"
然后我在旁边添加了一个取消电源操作按钮:
shutdown -c
这点小延迟让我有足够时间把操作整个取消掉,在我的家庭运维服务器宕机之前,把家里那套自动化智能照明控制也一块儿带崩了。这倒是提醒了我,功能这么强大,真得系好安全带。
我不会将其直接暴露到互联网上
OliveTin 之所以有用,是因为它能运行命令,这也正是它不适合放在你的 VPS 上的原因
OliveTin 支持完善的安全功能,如身份验证、用户、用户组和访问控制,但这并不意味着你就该把一整页服务器按钮挂到公网上。
对于我家的运维服务器,我更倾向于只允许受信任的设备访问。把 1337 端口锁死、只允许本地访问,这点特别重要。如果我确实需要从外部网络访问,那就用 Tailscale 这类工具来访问,而不是去搞端口转发。
你可能会问,为啥不用 OliveTin 自带的登录功能来保护它?这问题问得没毛病。我的回答是,它不是一个普通的 Web 应用,因为它的全部工作就是运行命令,这改变了安全风险的性质,所以必须把它放在防火墙后面才放心。
我会保留它,但只用于我已经信任的脚本
OliveTin 并没有取代 SSH,但它消除了许多无意义的 SSH 会话
OliveTin 从来就不是一个完整的服务器管理面板,而这正是我看上它的原因。它更好,因为它只显示那些我早就写好脚本的操作。如果没有按钮或脚本,它也没法自己造一个出来跑。
对于真正的 Linux 服务器工作,如配置编辑和日志处理,我仍然需要 SSH,任何浏览器按钮都无法取代它。但对于那些我自己写的脚本、所以信得过的小任务,OliveTin 是完美的。因为每次都得 SSH 登录才能跑,我懒得弄,结果这些任务就不跑了,服务器性能也跟着变差。
所以,我会在我家的运维服务器上保留 OliveTin,接下来还打算装到其他一直没管的服务器上。对于真正的工作,我仍然需要 SSH,只是不想每次跑个无聊脚本都得开 SSH。这种时候,点个按钮就省事多了。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.