暫無描述

James Read ae6fb59f69 Update README.md 5 年之前
cmd 846311b46d More tests, pass config to executor 5 年之前
internal 8cc405eb8a Merge branch 'main' of github.com:jamesread/OliveTin 5 年之前
media 8802daafdf retook desktop screenshot, added dark 5 年之前
webui 8584ea5a08 Accessibility improvements 5 年之前
.gitignore 8584ea5a08 Accessibility improvements 5 年之前
Dockerfile 1bd874e0f1 added ping to the container - useful tool 5 年之前
Makefile 66c7bddb2e Golang unit tests. 5 年之前
OliveTin.proto 37b10902cb Introduced a bug, as protojson marshals int64 to string for json - and we dont want to deal with strings. Instead used int32. 5 年之前
OliveTin.service 5f4b6e74c0 systemd service 5 年之前
README.md ae6fb59f69 Update README.md 5 年之前
go.mod 66c7bddb2e Golang unit tests. 5 年之前

README.md

OliveTin

OliveTin is a web interface for running Linux shell commands.

For example, it can be used to turn home automation lights on or off, or start workflows in n8n.

Video demo

TODO

Screenshots

Desktop web browser;

Desktop screenshot

Desktop web browser (dark mode);

Desktop screenshot

Mobile screen size (responsive layout);

Mobile screenshot

config.yaml example

Put this config.yaml in /etc/OliveTin/ if you're running a standard service, or mount it at /config if running in a container.

listenAddressWebUI: 0.0.0.0:1337 # Listen on all addresses available, port 1337
logLevel: "INFO"
actions: 
- title: Restart Plex
  icon: smile
  shell: docker restart plex
  
  # This will send 1 ping 
- title: Ping Google.com
  shell: ping google.com -c 1
  
  # Restart lightdm on host "overseer"
- title: restart lightdm
  icon: poop
  shell: ssh root@overseer 'service lightdm restart'

Ports

By default OliveTin will use the following ports;

  • 1337 - for hosting the web interface
  • 1338 - for the REST API (the api the web interface uses to do stuff)
  • 1339 - a modern gRPC API (OliveTin uses protobuf under the hood)

Some people might not want the gRPC API public - simply set listenAddressGrpcActions: 127.0.0.1:1339 in your config so it doesn't listen publicly. It cannot be disabled completely - it's required for the REST API to work though.

Installation - systemd service (recommended)

Running OliveTin as a systemd service on a Linux machine is a bit more effort than running as a container - but it means it can use any program installed on your machine (you don't have to add programs to a container).

  1. Copy the OliveTin binary to /usr/sbin/OliveTin
  2. Copy the webui directory contents to /var/www/olivetin/ (eg, /var/www/olivetin/index.html)
  3. Copy the OliveTin.service file to /etc/systemd/system/
  4. Create a config.yaml using the example provided above to get you started.

Run systemctl restart OliveTin and check systemctl status OliveTin.

Installation - as a container

Of course, running a container image is very straightforward - but you might need to add files and programs to the OliveTin container to make it useful for your use case. Generally running a systemd service is better for OliveTin.

Running - podman (or docker)

root@host: podman create --name olivetin -p 1337 -p 1338 -p 1339 -v /etc/olivetin/:/config:ro olivetin

Building - buildah (or docker build)

root@host: buildah bud -t olivetin