summaryrefslogtreecommitdiff
path: root/ansible/roles/gemini
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-08-12 17:20:08 +0100
committerJoe Carstairs <me@joeac.net>2026-08-12 17:20:08 +0100
commit4f8d16ebcb16811d6a7a95d659be7e138d2713ef (patch)
tree491b2e0980cbc2ce61bbdaf62df8acb83313fecf /ansible/roles/gemini
parent96877bf48ae0920a3439dc3f7866638df4cc633c (diff)
ansible installs gemini capsule
Diffstat (limited to 'ansible/roles/gemini')
-rw-r--r--ansible/roles/gemini/tasks/main.yml44
-rw-r--r--ansible/roles/gemini/templates/openrc/gemini30
2 files changed, 74 insertions, 0 deletions
diff --git a/ansible/roles/gemini/tasks/main.yml b/ansible/roles/gemini/tasks/main.yml
new file mode 100644
index 0000000..73d730e
--- /dev/null
+++ b/ansible/roles/gemini/tasks/main.yml
@@ -0,0 +1,44 @@
+- name: Checkout joeac.net source code
+ ansible.builtin.git:
+ repo: https://git.joeac.net/joeac/joeac.net.git
+ dest: "{{ src_dir }}/joeac.net"
+ depth: 1
+ version: main
+
+- name: Run initial comitium refresh
+ register: comitium_refresh
+ ansible.builtin.command:
+ cmd: /usr/local/bin/comitium refresh --data {{ src_dir }}/joeac.net/gemini/comitium-data
+ creates: "{{ src_dir }}/joeac.net/gemini/comitium-data/feed.gmi"
+
+- name: Schedule daily comitium refresh
+ ansible.builtin.cron:
+ special_time: daily
+ job: /usr/local/bin/comitium refresh --data {{ src_dir }}/joeac.net/gemini/comitium-data
+ name: daily comitium refresh for joeac.net capsule
+
+- name: Build joeac.net capsule
+ register: build_capsule
+ community.general.make:
+ chdir: "{{ src_dir }}/joeac.net/gemini"
+
+- name: Install gemini service
+ register: install_service
+ ansible.builtin.template:
+ src: openrc/gemini
+ dest: /etc/init.d/gemini
+ mode: "775"
+
+- name: Start gemini service and configure to start on boot
+ when: not ( comitium_refresh is changed or build_capsule is changed or install_service is changed )
+ ansible.builtin.service:
+ name: gemini
+ enabled: true
+ state: started
+
+- name: Restart gemini service and configure to start on boot
+ when: comitium_refresh is changed or build_capsule is changed or install_service is changed
+ ansible.builtin.service:
+ name: gemini
+ enabled: true
+ state: restarted
diff --git a/ansible/roles/gemini/templates/openrc/gemini b/ansible/roles/gemini/templates/openrc/gemini
new file mode 100644
index 0000000..fbc2cc8
--- /dev/null
+++ b/ansible/roles/gemini/templates/openrc/gemini
@@ -0,0 +1,30 @@
+#!/sbin/openrc-run
+
+description="agate gemini server (serving {{ src_dir }}/joeac.net/gemini/content)"
+
+start()
+{
+ ebegin "Starting agate (serving {{ src_dir }}/joeac.net/gemini/content)"
+ start-stop-daemon --start \
+ --exec /root/.cargo/bin/agate \
+ --background \
+ --stdout /var/log/agate.log \
+ --stderr /var/log/agate.log \
+ --make-pidfile \
+ --pidfile /run/agate.pid \
+ -- \
+ --content {{ src_dir }}/joeac.net/gemini/content/ \
+ --addr 0.0.0.0:1965 \
+ --addr [::]:1965 \
+ --lang en-GB
+ eend $?
+}
+
+stop()
+{
+ ebegin "Stopping agate"
+ start-stop-daemon --stop \
+ --exec /usr/bin/pnpx \
+ --pidfile /run/agate.pid
+ eend $?
+}