# OliveTin — Safe Web Interface for Predefined Shell Commands > OliveTin gives safe and simple access to predefined shell commands from a web interface. It lets sysadmins and homelab operators expose specific server actions as clickable buttons without granting full shell access. ## Install Save as a script file and run: # OliveTin — Safe Web Interface for Predefined Shell Commands ## Quick Use ```bash docker run -d -p 1337:1337 -v /path/to/config.yaml:/config/config.yaml jamesread/olivetin # Open http://localhost:1337 ``` ## Introduction OliveTin provides a web-based dashboard of clickable buttons, each mapped to a predefined shell command. It is designed for situations where you want to let users or team members trigger specific server actions without giving them SSH access or teaching them command-line syntax. ## What OliveTin Does - Exposes predefined shell commands as web buttons with a clean UI - Supports parameterized commands with input fields for arguments - Provides an API for triggering actions programmatically - Logs all command executions for auditing and troubleshooting - Runs as a single Go binary or Docker container ## Architecture Overview OliveTin is written in Go and serves a single-page web application. Configuration is defined in a YAML file that maps button labels to shell commands. When a button is clicked, the backend executes the corresponding command in a subprocess and streams output back to the browser. The YAML config supports arguments, dropdowns, and confirmation dialogs for safe execution. ## Self-Hosting & Configuration - Deploy via Docker with a mounted configuration file - Define actions in config.yaml with command, title, and optional arguments - Set up authentication using built-in basic auth or a reverse proxy - Configure execution timeouts and concurrent command limits - Install as a systemd service on bare-metal Linux systems ## Key Features - Single YAML file defines all available actions - Parameterized commands with dropdown menus and text inputs - Real-time command output streaming to the web interface - RESTful API for automation and integration with other tools - Lightweight single binary with no database dependency ## Comparison with Similar Tools - **Rundeck** — enterprise job scheduler with complex setup; OliveTin is a simple button dashboard with minimal configuration - **Semaphore** — Ansible/Terraform UI with project management; OliveTin focuses on ad-hoc shell command execution - **Webhook** — runs commands via HTTP endpoints but lacks a UI; OliveTin provides a visual button interface - **Portainer** — Docker management UI; OliveTin is container-agnostic and runs any shell command ## FAQ **Q: Is OliveTin secure enough for production use?** A: It executes only commands defined in the config file, so users cannot run arbitrary commands. Pair it with reverse proxy authentication for additional security. **Q: Can I use OliveTin to manage Docker containers?** A: Yes. Define docker start, stop, or restart commands as actions in the config file. **Q: Does it support multi-user access control?** A: Basic access control is available. For fine-grained permissions, use a reverse proxy with authentication. **Q: Can actions be triggered on a schedule?** A: OliveTin itself does not include a scheduler, but its API can be called from cron jobs or other scheduling tools. ## Sources - https://github.com/OliveTin/OliveTin - https://docs.olivetin.app --- Source: https://tokrepo.com/en/workflows/asset-593db9dc Author: Script Depot