aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/08_diddle
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2026-05-13 00:13:57 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-05-16 18:42:27 +0300
commitb5860daf11ac353049cb1654b9414a129e5cfb96 (patch)
tree87ed89711e4f0e85ace0a97fa123199152c67302 /roles/jails/08_diddle
parent4715a28fdcd87440400d17154bfa361d99db29cc (diff)
Rework
Diffstat (limited to 'roles/jails/08_diddle')
-rw-r--r--roles/jails/08_diddle/defaults/main.yml23
-rw-r--r--roles/jails/08_diddle/tasks/main.yml2
-rw-r--r--roles/jails/08_diddle/templates/root_clone.sh21
-rw-r--r--roles/jails/08_diddle/templates/root_diddle_env.j29
-rw-r--r--roles/jails/08_diddle/templates/usr_local_bin_diddle17
-rw-r--r--roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle43
6 files changed, 115 insertions, 0 deletions
diff --git a/roles/jails/08_diddle/defaults/main.yml b/roles/jails/08_diddle/defaults/main.yml
new file mode 100644
index 0000000..9423bd6
--- /dev/null
+++ b/roles/jails/08_diddle/defaults/main.yml
@@ -0,0 +1,23 @@
+userland: "14.3-RELEASE"
+
+pkg:
+ - python311
+ - py311-sqlite3
+ - git
+
+files:
+ - src: root_clone.sh
+ dest: /root/clone.sh
+ mode: "0755"
+ - src: root_diddle_env.j2
+ dest: /root/diddle/.env
+ mode: "0600"
+ - src: usr_local_bin_diddle
+ dest: /usr/local/bin/diddle
+ mode: "0755"
+ - src: usr_local_etc_rc.d_diddle
+ dest: /usr/local/etc/rc.d/diddle
+ mode: "0755"
+
+services:
+ - diddle
diff --git a/roles/jails/08_diddle/tasks/main.yml b/roles/jails/08_diddle/tasks/main.yml
new file mode 100644
index 0000000..2abdaff
--- /dev/null
+++ b/roles/jails/08_diddle/tasks/main.yml
@@ -0,0 +1,2 @@
+- import_role:
+ name: jail
diff --git a/roles/jails/08_diddle/templates/root_clone.sh b/roles/jails/08_diddle/templates/root_clone.sh
new file mode 100644
index 0000000..7f92c5f
--- /dev/null
+++ b/roles/jails/08_diddle/templates/root_clone.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+REPO="$1"
+TARGET="$2"
+
+set -eux
+
+# Exits with 100 if the directory was changed
+
+if [ ! -d "$TARGET" ]; then
+ git clone --depth=1 --branch main --single-branch "$REPO" "$TARGET"
+ exit 100
+fi
+
+cd "$TARGET"
+before=$(git rev-parse HEAD)
+git fetch --depth=1 --prune origin main
+git reset --hard origin/main
+after=$(git rev-parse HEAD)
+
+if [ "$before" != "$after" ]; then exit 100; fi
diff --git a/roles/jails/08_diddle/templates/root_diddle_env.j2 b/roles/jails/08_diddle/templates/root_diddle_env.j2
new file mode 100644
index 0000000..ca7db78
--- /dev/null
+++ b/roles/jails/08_diddle/templates/root_diddle_env.j2
@@ -0,0 +1,9 @@
+PYTHONUNBUFFERED="1"
+BASE_URL="https://diddle.jan.systems"
+DB_PATH="db.sqlite3"
+EMAIL_HOST="smtp.postmarkapp.com"
+EMAIL_PORT="587"
+EMAIL_HOST_USER="{{ diddle_email_host_user }}"
+EMAIL_HOST_PASSWORD="{{ diddle_email_host_password }}"
+EMAIL_USE_TLS="true"
+EMAIL_MESSAGE_FROM="diddle@jan.systems"
diff --git a/roles/jails/08_diddle/templates/usr_local_bin_diddle b/roles/jails/08_diddle/templates/usr_local_bin_diddle
new file mode 100644
index 0000000..d07cd5e
--- /dev/null
+++ b/roles/jails/08_diddle/templates/usr_local_bin_diddle
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -eux
+
+PATH=$PATH:/usr/local/bin
+
+cd /root/diddle
+
+if [ ! -f venv ]; then
+ python3.11 -m venv venv
+fi
+
+PATH=$PATH:/root/diddle/venv/bin
+
+pip install -r requirements.txt
+python apply_migrations.py
+gunicorn --bind "0.0.0.0:80" -w 4 app:app
diff --git a/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle b/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle
new file mode 100644
index 0000000..01deaad
--- /dev/null
+++ b/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# PROVIDE: diddle
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+#
+# Enable in /etc/rc.conf:
+# diddle_enable="YES"
+#
+. /etc/rc.subr
+
+name="diddle"
+rcvar=diddle_enable
+
+load_rc_config $name
+
+: ${diddle_command:=/usr/local/bin/diddle}
+: ${diddle_log:=/var/log/${name}.log}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+extra_commands="status"
+
+diddle_start() {
+ /usr/local/bin/logto ${diddle_log} ${diddle_command} &
+}
+
+diddle_status() {
+ if ps aux | grep diddle | grep -v grep | grep -v rc.d/diddle; then
+ echo "diddle is running"
+ else
+ echo "diddle is not running"
+ exit 1
+ fi
+}
+
+diddle_stop() {
+ ps aux | grep diddle | grep -v grep | grep -v rc.d/diddle | awk '{print $2}' | xargs kill -TERM
+}
+
+run_rc_command "$1"