aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/18_komga/templates
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2026-07-12 19:42:38 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-07-12 19:42:38 +0300
commit56f6dcf6d4443e6b22eede461ea5c5d07f3a30a4 (patch)
tree2e0dc2890d0c3bef9eb7680688531deccb8133be /roles/jails/18_komga/templates
parentcb6f6bb766edf6a409545f4609ca633dabe97a2a (diff)
Set up komga jail
Diffstat (limited to 'roles/jails/18_komga/templates')
-rw-r--r--roles/jails/18_komga/templates/usr_local_bin_convert_pdfs43
-rw-r--r--roles/jails/18_komga/templates/usr_local_bin_komga2
-rw-r--r--roles/jails/18_komga/templates/usr_local_etc_rc.d_komga47
3 files changed, 92 insertions, 0 deletions
diff --git a/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs b/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs
new file mode 100644
index 0000000..20ca86c
--- /dev/null
+++ b/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -euo pipefail
+
+DPI="${DPI:-250}" # override: DPI=200 ./convert-pdfs
+JPEG_QUALITY="${Q:-85}" # override: Q=80 ./convert-pdfs
+
+for f in *.pdf; do
+ [ -f "$f" ] || continue
+
+ name="${f%.pdf}"
+ tmpdir="$(mktemp -d "${name}.XXXXXX")"
+
+ echo "Converting $f (DPI=$DPI, Q=$JPEG_QUALITY)..."
+
+ cleanup() { rm -rf "$tmpdir"; }
+ trap cleanup EXIT INT TERM
+
+ pdftoppm -jpeg -r "$DPI" -jpegopt "quality=$JPEG_QUALITY" "$f" "$tmpdir/page"
+
+ if ! ls "$tmpdir"/page-*.jpg >/dev/null 2>&1; then
+ echo "ERROR: pdftoppm produced no JPEG pages for $f"
+ exit 1
+ fi
+
+ tmpcbz="${name}.cbz.tmp"
+ (cd "$tmpdir" && zip -q -r "../$tmpcbz" .)
+
+ if [ ! -s "$tmpcbz" ]; then
+ echo "ERROR: Failed to create CBZ for $f"
+ exit 1
+ fi
+
+ if [ -e "${name}.cbz" ]; then
+ echo "ERROR: ${name}.cbz already exists"
+ exit 1
+ fi
+
+ mv "$tmpcbz" "${name}.cbz"
+
+ trap - EXIT
+ cleanup
+ echo "✔ Converted $f → ${name}.cbz"
+done
diff --git a/roles/jails/18_komga/templates/usr_local_bin_komga b/roles/jails/18_komga/templates/usr_local_bin_komga
new file mode 100644
index 0000000..47cf18c
--- /dev/null
+++ b/roles/jails/18_komga/templates/usr_local_bin_komga
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/local/bin/java -jar /usr/local/komga/komga.jar --server.port=80 --komga.config-dir=/var/db/komga
diff --git a/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga b/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga
new file mode 100644
index 0000000..750b774
--- /dev/null
+++ b/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# PROVIDE: komga
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="komga"
+rcvar="komga_enable"
+pidfile="/var/run/${name}.pid"
+
+load_rc_config "$name"
+
+: ${komga_enable:="NO"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+komga_start()
+{
+ echo "Starting ${name}..."
+ daemon -p "${pidfile}" -o /var/log/komga.log \
+ /usr/local/bin/komga
+}
+
+komga_stop()
+{
+ if [ -f "${pidfile}" ]; then
+ echo "Stopping ${name}..."
+ kill "$(cat "${pidfile}")" 2>/dev/null
+ rm -f "${pidfile}"
+ fi
+}
+
+komga_status()
+{
+ if [ -f "${pidfile}" ] && kill -0 "$(cat "${pidfile}")" 2>/dev/null; then
+ echo "${name} is running as pid $(cat "${pidfile}")"
+ else
+ echo "${name} is not running"
+ return 1
+ fi
+}
+
+run_rc_command "$1"