OliveTin - Self Hosted Predefined Shell Commands
OliveTin gives safe and simple access to predefined shell commands from a web interface.
Have you ever been in a situation where you wanted to safely give access to server commands to less technical people such as friends or family members? Or simplify complex commands to make them accessible and repeatable? OliveTin is the gateway to your needs.
OliveTin gives safe and simple access to predefined shell commands from a web interface. Responsive to tablets and touch screens, OliveTin makes it simple to tap a button on the screen for anyone with access to run complex commands.
Features
- Responsive, touch-friendly UI - great for tablets and mobile
- Super simple config in YAML - because if it's not YAML now-a-days, it's not "cloud native" :-)
- Dark mode - for those of you that roll that way.
- Accessible - passes all the accessibility checks in Firefox, and issues with accessibility are taken seriously.
- Docker image - available for quickly testing and getting it up and running, great for the selfhosted community.
- Integrate with anything - OliveTin just runs Linux shell commands, so theoretically you could integrate with a bunch of stuff just by using curl, ping, etc. However, writing your own shell scripts is a great way to extend OliveTin.
- Lightweight on resources - uses only a few MB of RAM and barely any CPU. Written in Go, with a web interface written as a modern, responsive, Single Page App that uses the REST/gRPC API.
- Good amount of unit tests and style checks - helps potential contributors be consistent, and helps with maintainability.
Install OliveTin With Docker Compose
You will need a host machine with Docker and Docker Compose installed. If you need assistance, see our guide on how to Install Docker and Portainer on Debian for Self-Hosting.
There are multiple ways to install OliveTin but our preferred method is usually Docker Compose.
version: "3.8"
services:
olivetin:
container_name: olivetin
image: jamesread/olivetin
volumes:
- /docker/OliveTin:/config # replace host path or volume as needed
ports:
- "1337:1337"
restart: unless-stopped
networks:
web: # should match the network defined under the container's networks section
external: true
Before launching OliveTin, you must first craft a basic configuration file. Here's how you can do it:
Create a rudimentary configuration file at a location such as /docker/OliveTin/config.yaml
. The precise path will depend on the directory you indicated when creating the bind mount container. It's important to note that OliveTin containers anticipate the configuration file to be within the /config
directory inside the container. The contents of the file should resemble the following:
# A simple config.yaml file
actions:
- title: "Hello world!"
shell: echo 'Hello World!'
With your configuration file in place and the OliveTin container set up, you can now start the container just as you typically would.
Final Notes and Thoughts
OliveTin has made it easy for me to setup scripts for my kids to restart the Emby server if needed. I also have one setup for my wife to backup her important documents for work which she can trigger on demand as she requested.
If you find OliveTin useful, be sure to give it a star on the OliveTin Github repo. Also, leave your comments below and share your thoughts!