OliveTin

Give safe and simple access to predefined shell commands from a web interface.

See it in action more with some OliveTin demo videos on YouTube.

Use case: Safely give access to commands, for less technical people;

Use case: Simplify complex commands, make them accessible and repeatable;

  • eg: Expose complex commands on touchscreen tablets stuck on walls around your house. wake-on-lan aa:bb:cc:11:22:33
  • eg: Run long-lived commands on your servers from your cell phone. dnf update -y
  • eg: Define complex commands with lots of preset arguments, and turn a few arguments into dropdown select boxes. docker rm {{ container }} && docker create {{ container }} && docker start {{ container }}

Features

  • Responsive Great for tablets and mobile, with a touch-friendly UI.
  • Auto Light/Dark mode For those of you that don't like bright screens.
  • Accessible Passes all the accessibility checks in Firefox, and issues with accessibility are taken seriously.
  • Linux Container For quickly testing and getting it up and running, great for the selfhosted community.
  • Integrate with anything It just runs shell commands - you could integrate with a bunch of stuff just by using curl, ping, etc.
  • Lightweight on resources Uses only a few MB of RAM and barely any CPU, written in Go + JS with relatively few dependencies.
  • Well tested Well, nobody like bugs, after all.

Configuration Example

YAML - Configuration as code, rather than configuration via a million little options in an admin panel :-)

# Listen on all addresses available, port 1337
	listenAddressSingleHTTPFrontend: 0.0.0.0:1337

	# Choose from INFO (default), WARN and DEBUG
	logLevel: "INFO"

	# Actions (buttons) to show up on the WebUI:
	actions:
	  # Docs: https://docs.olivetin.app/action-container-control.html
	- title: Restart Plex
	  icon: restart
	  shell: docker restart plex

	  # This will send 1 ping
	  # Docs: https://docs.olivetin.app/action-ping.html
	- title: Ping host
	  shell: ping {{ host }} -c {{ count }}
	  icon: ping
	  arguments:
		- name: host
		  title: host
		  type: ascii_identifier
		  default: example.com

		- name: count
		  title: Count
		  type: int
		  default: 1

	  # Restart http on host "webserver1"
	  # Docs: https://docs.olivetin.app/action-ssh.html
	- title: restart httpd
	  icon: restart
	  shell: ssh root@webserver1 'service httpd restart'

Installation

Installation instructions can be found on the OliveTin installation documentation page.

Download

Downloads can be found on the Which download do I need? documentation page.

Open Source

This project is open source, and feature requests, bugs, security issues and similar can all be raised via the OliveTin new issue page in the OliveTin GitHub repository.

Contributions to documentation, code, and other parts of the project are most welcome. You can find the contribution guidelines in the repository.