aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile10
-rw-r--r--deployment/solo-tool.service12
-rw-r--r--deployment/start-solo-tool.sh16
-rw-r--r--web-project/src/solo_tool_web.py8
4 files changed, 41 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index d9ee657..c4fc7e7 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,12 @@ clean:
touch .venv/touchfile
gui: .venv/touchfile
- ./.venv/bin/python web-project/src/solo_tool_web.py
+ ./.venv/bin/python web-project/src/solo_tool_web.py 8080
-.PHONY: all test clean gui
+install: deployment/solo-tool.service deployment/start-solo-tool.sh
+ sudo install -o root -g root -m 644 deployment/solo-tool.service /etc/systemd/system
+ sudo install -o root -g root -m 700 deployment/start-solo-tool.sh /var/lib/solo-tool
+ sudo systemctl daemon-reload
+ sudo systemctl enable --now solo-tool.service
+
+.PHONY: all test clean gui install
diff --git a/deployment/solo-tool.service b/deployment/solo-tool.service
new file mode 100644
index 0000000..78b3bcb
--- /dev/null
+++ b/deployment/solo-tool.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Solo tool web frontend service
+After=network.target
+
+[Service]
+Environment="SERVICE_DIR=/var/lib/solo-tool"
+Environment="SESSION_DIR=${SERVICE_DIR}/sessions"
+Environment="SONG_POOL=${SERVICE_DIR}/songs"
+ExecStart=/var/lib/solo-tool/start-solo-tool.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/deployment/start-solo-tool.sh b/deployment/start-solo-tool.sh
new file mode 100644
index 0000000..7b96b22
--- /dev/null
+++ b/deployment/start-solo-tool.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/bash
+
+# Ensure that necessary directories exist
+mkdir -p "${SESSION_DIR}" "${SONG_POOL}"
+
+# Get latest revision
+cd "${SERVICE_DIR}"
+rm -rf repo
+git clone --depth 1 https://git.0xf7.com/solo-tool.git repo
+
+# Bootstrap venv
+cd repo
+make
+
+# Run web UI
+./.venv/bin/python web-project/src/solo_tool_web.py 80
diff --git a/web-project/src/solo_tool_web.py b/web-project/src/solo_tool_web.py
index 8ae36b5..6dfc787 100644
--- a/web-project/src/solo_tool_web.py
+++ b/web-project/src/solo_tool_web.py
@@ -1,4 +1,6 @@
from glob import glob
+import sys
+from os import getenv
from os.path import basename, splitext
from nicegui import ui
from starlette.formparsers import MultiPartParser
@@ -7,8 +9,8 @@ from solo_tool import SoloTool
from solo_tool.session_manager import loadSession, saveSession
from solo_tool import handlers
-SESSION_DIR = "/home/eddy/music/sessions"
-SONG_POOL = "/home/eddy/music"
+SESSION_DIR = getenv("SESSION_DIR", "/home/eddy/music/sessions")
+SONG_POOL = getenv("SONG_POOL", "/home/eddy/music")
def fileName(path: str) -> str:
return basename(splitext(path)[0])
@@ -124,4 +126,4 @@ def landingPage():
for name, soloTool in sessions.items():
ui.button(name, on_click=lambda: ui.navigate.to(f"/{name}"))
-ui.run(binding_refresh_interval=0.2)
+ui.run(binding_refresh_interval=0.5, port=int(sys.argv[1]))