Go to file
jamesread 7e4aa9ebbe doc: Updated demo video 2024-03-06 08:27:54 +00:00
.githooks doc: Allow "test" for unittests, integration tests, etc 2022-10-19 10:02:41 +01:00
.github cicd: make grpc is not working 2024-02-23 16:27:31 +00:00
cmd/OliveTin feature: The mega dashboards & entities commit. 2024-02-22 23:16:43 +00:00
integration-tests cicd: Flakey test on dropdowns (#241) 2024-03-05 17:23:17 +00:00
internal Msot recent execution output on the dashboard. (#238) 2024-03-04 23:33:50 +00:00
media Updated screenshots in README 2021-10-28 17:21:24 +01:00
var doc: Add rounded screenshot 2024-03-05 16:10:43 +00:00
webui.dev feature: erm, added support 200,000 icons via iconify (#240) 2024-03-05 16:59:46 +00:00
.air.toml cicd: Useful for development settings 2023-08-25 15:09:24 +01:00
.dockerignore Less junk in the docker image 2021-05-25 15:10:21 +01:00
.gitignore feature: HTML/JS/CSS minifiction and cache busting 2024-02-09 17:01:39 +00:00
.goreleaser.yml cicd: I am tired and cannot type it seems 2024-02-27 01:18:28 +00:00
.pre-commit-config.yaml fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-05-29 09:10:32 +01:00
CONTRIBUTING.adoc fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
Dockerfile feature: comfig file provided with docker volume, upgrade to f38 2024-02-24 07:27:54 +00:00
Dockerfile.arm64 feature: comfig file provided with docker volume, upgrade to f38 2024-02-24 07:27:54 +00:00
Dockerfile.armv7 feature: comfig file provided with docker volume, upgrade to f38 2024-02-24 07:27:54 +00:00
Jenkinsfile fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
LICENSE Create LICENSE 2021-05-18 23:52:58 +01:00
Makefile bugfix: #230 Set public-url in parcel to . (#231) 2024-02-28 17:40:43 +00:00
OliveTin.proto Msot recent execution output on the dashboard. (#238) 2024-03-04 23:33:50 +00:00
OliveTin.service /usr/local/bin as we are not building distro packages 2021-05-25 13:08:38 +01:00
README.md doc: Updated demo video 2024-03-06 08:27:54 +00:00
SECURITY.md fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
buf.gen.yaml fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
buf.lock cicd: buf mod update seemed to be needed 2022-09-29 01:21:12 +02:00
buf.yaml fmt: Added pre-commit, fixed a few lint errors, npn updated webui 2023-08-24 12:17:55 +01:00
config.yaml Merge branch 'main' of ssh://github.com/OliveTin/OliveTin 2024-02-29 23:21:16 +00:00
go.mod depbump: everything 2024-02-23 00:33:02 +00:00
go.sum depbump: everything 2024-02-23 00:33:02 +00:00
tools.go fmt: gofmt 2022-11-12 12:20:17 +04:00

README.md

OliveTin

project logo

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

Discord Awesome CII Best Practices

Go Report Card Build Snapshot

screenshot

Use cases

Safely give access to commands, for less technical people;

  • eg: Give your family a button to podman restart plex
  • eg: Give junior admins a simple web form with dropdowns, to start your custom script. backupScript.sh --folder {{ customerName }}
  • eg: Enable SSH access to the server for the next 20 mins firewall-cmd --add-service ssh --timeout 20m

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 running 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 }}

Join the community on Discord to talk with other users about use cases, or to ask for support in getting started.

YouTube demo video (6 mins)

10 minute demo video

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.
  • Container - 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 theoretially 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.

Screenshots

Desktop web browser;

Desktop screenshot

Desktop web browser (dark mode);

Desktop screenshot

Mobile screen size (responsive layout);

Mobile screenshot

Documentation

All documentation can be found at http://docs.olivetin.app . This includes installation and usage guide, etc.

Quickstart reference for config.yaml

This is a quick example of config.yaml - but again, lots of documentation for how to write your config.yaml can be found at the documentation site.

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

# 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'

A full example config can be found at in this repository - config.yaml.