尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

OliveTin 快速上手:5 分钟把 Shell 命令变成 Web 按钮

OliveTin 快速上手:5 分钟把 Shell 命令变成 Web 按钮 OliveTin 快速上手5 分钟把 Shell 命令变成 Web 按钮【免费下载链接】OliveTinOliveTin gives safe and simple access to predefined shell commands from a web interface.项目地址: https://gitcode.com/gh_mirrors/ol/OliveTinOliveTin 是一个开源的 Web 操作面板工具把预定义的 Shell 命令变成浏览器里安全可点的按钮一份 YAML 就能配好。它替你挡掉 SSH 直连、复杂命令和权限混乱这些麻烦适合给家人或初级管理员开一个只能做这几件事的服务器入口。读完这篇你会把容器跑起来、读懂最小配置并拿到参数化、权限和仪表板三件进阶工具。定位与适用人群OliveTin 的本质是一个命令白名单代理Go 写的后端只执行你配置里写明的 shell 命令前端是响应式按钮面板外加一个 REST API。没有遥测、没有强制账号体系、不依赖外网几 MB 内存就能跑。场景没有 OliveTin有了 OliveTin重启家里的 Plex记住命令、登录终端手敲浏览器里点一下按钮给同事开权限发 SSH 账号管不住边界ACL 限制到只能执行这几个 action手机上查服务器装终端 App、配 SSH手机浏览器打开即用自动适配适合家里有一台 NAS 想管起来的自托管用户需要给非技术同事开受控权限的运维想把 GPIO、传感器操作暴露到网页的硬件玩家。 最短路径跑起来最省事的方式是直接拉现成容器镜像只转发 1337 一个端口mkdir -p /etc/OliveTin # 宿主机上的配置目录 cp config.yaml /etc/OliveTin/ # 用仓库默认配置先跑起来 docker pull jamesread/olivetin # 官方容器镜像 docker run -d --name olivetin -p 1337:1337 \ -v /etc/OliveTin/:/config:ro jamesread/olivetin浏览器打开 http://localhost:1337 就能看到按钮面板。想从源码跑git clone https://gitcode.com/gh_mirrors/ol/OliveTin然后make devcontainer容器或依次make service、make webui-dist、make devrun本地进程。核心配置走读仓库根目录的 config.yaml 就是全部配置。先看这份能直接跑的 14 行最小版本listenAddressSingleHTTPFrontend: 0.0.0.0:1337 # WebUI 和 REST API 共用一个端口 logLevel: INFO # INFO / WARN / DEBUG authRequireGuestsToLogin: false # false 时访客无需登录 actions: - title: 检查磁盘空间 icon: disk shell: df -h / onclick: execution-dialog # 点击后弹窗展示命令输出 - title: Ping 互联网 icon: ping shell: ping -c 3 1.1.1.1 onclick: execution-dialog execOnStartup: true # 服务启动时自动执行一次字段作用示例值listenAddressSingleHTTPFrontend单端口监听前端与 API 同口0.0.0.0:1337actions[].title按钮文案也是仪表板引用 action 的唯一键检查磁盘空间actions[].shell真正执行的 shell 命令df -h /onclick点击后的表现弹窗输出、历史页或仅闪烁execution-dialogtimeout超时秒数到点强杀命令30maxRate限流窗口防止按钮被狂点limit: 3duration: 1m命令里出现{{ 变量名 }}就会弹出参数输入框这是把固定命令变成小工具的关键actions: - title: Ping 指定主机 shell: ping {{ host }} -c {{ count }} timeout: 100 onclick: history arguments: - name: host title: 主机地址 type: ascii_identifier default: example.com - name: count title: Ping 次数 type: int default: 3参数还支持checklist多选、confirmation危险操作二次确认等类型逐项写法在 docs/modules/ROOT/pages/args/ 里都有。界面与功能一览桌面端浅色主题按钮按 action 平铺点一下即执行并弹窗显示输出OliveTin Web 操作面板桌面端每个 action 一个按钮支持浅色/深色主题切换手机端是响应式布局按钮纵向排列在平板、手机上点按没有压力OliveTin Web 操作面板移动端视图响应式适配手机屏幕动作多了之后用仪表板dashboard把 action 按 fieldset 或文件夹组织起来OliveTin 仪表板把 action 分组展示支持实体动态生成按钮进阶能力速览动态实体entities——容器、服务器列表变了按钮自动跟着变不用改配置。entities: - file: entities/containers.json name: container # action 中加 entity: container # 即按容器逐个生成 docker restart {{ container.name }} 按钮仪表板dashboards——把 action 拉进分组视图还能内嵌实时状态展示。dashboards: - title: 我的容器 contents: - type: fieldset entity: container权限控制auth ACL——本地用户登录再按用户组控制能看什么、能点什么。authRequireGuestsToLogin: true authLocalUsers: { enabled: true } accessControlLists: - name: admin_acl matchUsergroups: [admins]⚠️ 踩坑与排错容器里的命令报 exit 127127 是command not found。官方镜像基于 fedora-minimalping、curl可能没装。进容器docker exec olivetin dnf install -y iputils装上或把 shell 改成执行挂载进来的宿主机脚本。改了 config.yaml 但页面没变化容器内配置挂载在/config/且只读你要改的是宿主机/etc/OliveTin/config.yaml那份。改对文件后跑docker logs -f olivetin配置语法不对时日志会直接报出行号。忘了 authLocalUsers 的密码在仓库里跑make config-tool它会把原配置备份为config.original.yaml并把所有本地用户密码重置为password登录后在界面里改回来。1337 端口被占用了把-p 1337:1337改成-p 18080:1337浏览器地址换成 http://localhost:18080容器内部端口不用动。想让访客先登录再点按钮把authRequireGuestsToLogin改成true然后在authLocalUsers.users下用 argon2id 哈希定义用户写法照 config.yaml 里被注释的示例取消注释即可。 落地场景家庭媒体服务器给全家一个网页不碰 SSH重启 Plex 容器docker restart plex查看磁盘余量df -h /唤醒 NASwakeonlan aa:bb:cc:11:22:33开发环境面板一键重启容器组并弹窗看输出docker compose restart跑备份脚本shellAfterCompleted里接 apprise 发完成通知用execOnCron定时执行docker ps --format json刷新实体文件IoT / 硬件控制台点按钮切换 GPIO 灯gpioset gpiochip1 91用type: display组件把传感器读数直接展示在按钮旁一个 YAML 文件、一个端口就是你团队的受控服务器入口。现在打开仓库根目录的 config.yaml把第一个 action 改成你明天真的会用到的那条命令然后点一下试试。【免费下载链接】OliveTinOliveTin gives safe and simple access to predefined shell commands from a web interface.项目地址: https://gitcode.com/gh_mirrors/ol/OliveTin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表