You must setup Lighttpd and Cloudflared first.
Steps
- create olivetin directory in $HOME
mkdir -p ~/olivetin && cd ~/olivetin - download latest version
latest=$(basename $(curl -fs -o/dev/null -w %{redirect_url} https://github.com/OliveTin/OliveTin/releases/latest)) curl -LO https://github.com/OliveTin/OliveTin/releases/download/${latest}/OliveTin-linux-amd64.tar.gz tar -xzf OliveTin-linux-amd64.tar.gz mv OliveTin-linux-amd64/OliveTin ./olivetin - move webui directory to /var/www/olivetin
sudo mkdir -p /var/www sudo chown $(id -nu):$(id -ng) /var/www mv OliveTin-linux-amd64/webui /var/www/olivetin - copy from config.yaml
nano config.yaml - copy from olivetin.service
nano olivetin.service - start olivetin service
cp ~/olivetin/olivetin.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now olivetin - copy from olivetin.conf
nano ~/lighttpd/conf.d/olivetin.conf - create auth for olivetin
printf "<username>:$(openssl passwd -6 <password>)" > ~/lighttpd/passwd/.olivetin - restart lighttpd
systemctl --user restart lighttpd
config.yaml
listenAddressSingleHTTPFrontend: localhost:1337
logLevel: "ERROR"
showFooter: false
showNewVersions: false
checkForUpdates: false
actions:
- title: coturn
shell: systemctl --user "{{ action }}" podman-compose@coturn
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: dozzle
shell: systemctl --user "{{ action }}" podman-compose@dozzle
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: filebrowser
shell: systemctl --user "{{ action }}" podman-compose@filebrowser
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: gitea
shell: systemctl --user "{{ action }}" podman-compose@gitea
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: glider
shell: systemctl --user "{{ action }}" podman-compose@glider
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: kms
shell: systemctl --user "{{ action }}" podman-compose@kms
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: lighttpd
shell: systemctl --user "{{ action }}" podman-compose@lighttpd
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: mirotalk
shell: systemctl --user "{{ action }}" podman-compose@mirotalk
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: nvim
shell: systemctl --user "{{ action }}" podman-compose@nvim
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: qbittorrent
shell: systemctl --user "{{ action }}" podman-compose@qbittorrent
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: rustdesk
shell: systemctl --user "{{ action }}" podman-compose@rustdesk
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: rustpad
shell: systemctl --user "{{ action }}" podman-compose@rustpad
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: rustypaste
shell: systemctl --user "{{ action }}" podman-compose@rustypaste
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: screego
shell: systemctl --user "{{ action }}" podman-compose@screego
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: shadowbox
shell: systemctl --user "{{ action }}" podman-compose@shadowbox
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: traefik
shell: systemctl --user "{{ action }}" podman-compose@traefik
arguments:
- name: action
choices:
- title: Status
value: status
- title: Start
value: start
- title: Stop
value: stop
- title: Restart
value: restart
- title: server
shell: sudo "{{ action }}" now
arguments:
- name: action
choices:
- title: Reboot
value: reboot
- title: Poweroff
value: poweroff
olivetin.service
[Unit]
Description=olivetin
Wants=network-online.target
After=network-online.target
[Service]
Restart=always
ExecStart=%h/olivetin/olivetin -configdir %h/olivetin
[Install]
WantedBy=default.target
olivetin.conf
$HTTP["host"] == "olivetin.example.com" {
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile= env.HOME + "/lighttpd/passwd/.olivetin"
auth.require = ( "" =>
(
"method" => "basic",
"realm" => "Restricted!",
"require" => "valid-user"
),
)
server.document-root = "/var/www/olivetin"
index-file.names = ( "index.html" )
proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "1337" ) ) )
proxy.header = ( "upgrade" => "enable" )
}