ketchup: initial deploy
Assisted-by: Claude Opus 4.6 via pi
change oooslnuwssuplnkxlzzwzowqzprtrlsp
commit 67bbac6fabb5fbce8cfed58c1ed3715ba5cabe87
author Alpha Chen <alpha@kejadlen.dev>
date
parent muzzonum
diff --git a/lotus-land-story/ketchup.yml b/lotus-land-story/ketchup.yml
new file mode 100644
index 0000000..db72741
--- /dev/null
+++ b/lotus-land-story/ketchup.yml
@@ -0,0 +1,28 @@
+- name: Set up Ketchup
+  hosts: lotus-land-story
+  vars:
+    version: 20260216-49781d4
+  tasks:
+
+    - name: Create data directory for Ketchup
+      ansible.builtin.file:
+        path: /mnt/lotus-land-story/ketchup
+        state: directory
+        mode: "0755"
+
+    - name: Run Ketchup
+      community.docker.docker_container:
+        name: ketchup
+        image: ghcr.io/kejadlen/ketchup:{{ version }}
+        pull: true
+        restart: true
+        env:
+          DATABASE_URL: /data/ketchup.db
+          SESSION_SECRET: "{{ ketchup.session_secret }}"
+        volumes:
+          - /mnt/lotus-land-story/ketchup:/data
+        restart_policy: unless-stopped
+        networks:
+          - name: lotus_land_story
+
+# vim: ft=yaml.ansible
diff --git a/lotus-land-story/main.yml b/lotus-land-story/main.yml
index c4574cb..ab8f729 100644
--- a/lotus-land-story/main.yml
+++ b/lotus-land-story/main.yml
@@ -60,6 +60,7 @@
 - import_playbook: grafana.yml     # noqa: name[play]
 - import_playbook: miniflux.yml    # noqa: name[play]
 - import_playbook: gotosocial.yml  # noqa: name[play]
+- import_playbook: ketchup.yml     # noqa: name[play]
 - import_playbook: caddy.yml       # noqa: name[play]
 - import_playbook: security.yml    # noqa: name[play]
 - import_playbook: backup.yml      # noqa: name[play]
diff --git a/lotus-land-story/templates/Caddyfile b/lotus-land-story/templates/Caddyfile
index 7a143b1..efa093f 100644
--- a/lotus-land-story/templates/Caddyfile
+++ b/lotus-land-story/templates/Caddyfile
@@ -98,6 +98,16 @@ rss {
 	}
 }
 
+ketchup {
+	tls internal
+	bind tailscale/ketchup
+	tailscale_auth
+	reverse_proxy ketchup:9292 {
+		header_up Tailscale-User-Login {http.auth.user.tailscale_login}
+		header_up Tailscale-User-Name {http.auth.user.tailscale_user}
+	}
+}
+
 ### Family
 
 books {