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.