summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/playbook.yml9
-rw-r--r--ansible/roles/actualbudget/tasks/main.yml49
-rw-r--r--ansible/roles/actualbudget/templates/openrc/actualbudget27
-rw-r--r--ansible/vars/actualbudget.yml2
-rw-r--r--ansible/vars/common.yml2
-rw-r--r--compose.yml9
-rw-r--r--make/vars.mk6
7 files changed, 90 insertions, 14 deletions
diff --git a/ansible/playbook.yml b/ansible/playbook.yml
index ee0b39d..e821fbd 100644
--- a/ansible/playbook.yml
+++ b/ansible/playbook.yml
@@ -29,6 +29,15 @@
vars_files:
- common.yml
+- name: Install actualbudget
+ hosts: "{{ services.actualbudget.host }}"
+ become: true
+ roles:
+ - actualbudget
+ vars_files:
+ - common.yml
+ - actualbudget.yml
+
- name: Install etherpad
hosts: "{{ services.etherpad.host }}"
become: true
diff --git a/ansible/roles/actualbudget/tasks/main.yml b/ansible/roles/actualbudget/tasks/main.yml
new file mode 100644
index 0000000..92cad2f
--- /dev/null
+++ b/ansible/roles/actualbudget/tasks/main.yml
@@ -0,0 +1,49 @@
+- name: Install Git, NodeJS and Yarn
+ community.general.apk:
+ name:
+ - git
+ - nodejs
+ - yarn
+
+- name: Checkout actualbudget source code
+ register: actualbudget_src
+ ansible.builtin.git:
+ repo: https://github.com/actualbudget/actual.git
+ dest: "{{ actualbudget_src_dir }}"
+ depth: 1
+ version: v{{ actualbudget_version }}
+
+- name: Install actualbudget dependencies
+ register: actualbudget_dependencies
+ changed_when: "'Already up-to-date.' not in actualbudget_dependencies.stdout"
+ ansible.builtin.command:
+ chdir: "{{ actualbudget_src_dir }}"
+ cmd: yarn install
+
+- name: Install actualbudget service
+ register: actualbudget_service
+ ansible.builtin.template:
+ src: openrc/actualbudget
+ dest: /etc/init.d/actualbudget
+ mode: "755"
+
+- name: Restart actualbudget service and configure to start on boot
+ when:
+ actualbudget_src is changed
+ or actualbudget_service is changed
+ or actualbudget_dependencies is changed
+ ansible.builtin.service:
+ name: actualbudget
+ enabled: true
+ state: restarted
+
+- name: Start actualbudget service and configure to start on boot
+ when:
+ not (
+ actualbudget_src is changed
+ or actualbudget_service is changed
+ or actualbudget_dependencies is changed )
+ ansible.builtin.service:
+ name: actualbudget
+ enabled: true
+ state: started
diff --git a/ansible/roles/actualbudget/templates/openrc/actualbudget b/ansible/roles/actualbudget/templates/openrc/actualbudget
new file mode 100644
index 0000000..456e33e
--- /dev/null
+++ b/ansible/roles/actualbudget/templates/openrc/actualbudget
@@ -0,0 +1,27 @@
+#!/sbin/openrc-run
+
+description="Run actualbudget budgeting server"
+
+start()
+{
+ ebegin "Starting actualbudget"
+ start-stop-daemon --start \
+ --exec /usr/bin/yarn \
+ --background \
+ --chdir {{ actualbudget_src_dir }} \
+ --stdout /var/log/actualbudget.log \
+ --stderr /var/log/actualbudget.log \
+ --make-pidfile \
+ --pidfile /run/actualbudget.pid \
+ -- start:server
+ eend $?
+}
+
+stop()
+{
+ ebegin "Stopping actualbudget"
+ start-stop-daemon --stop \
+ --exec /usr/bin/pnpx \
+ --pidfile /run/actualbudget.pid
+ eend $?
+}
diff --git a/ansible/vars/actualbudget.yml b/ansible/vars/actualbudget.yml
new file mode 100644
index 0000000..9da2f92
--- /dev/null
+++ b/ansible/vars/actualbudget.yml
@@ -0,0 +1,2 @@
+actualbudget_src_dir: /usr/share/src/actualbudget
+actualbudget_version: 26.8.1
diff --git a/ansible/vars/common.yml b/ansible/vars/common.yml
index b0d9030..a4db78f 100644
--- a/ansible/vars/common.yml
+++ b/ansible/vars/common.yml
@@ -3,7 +3,7 @@ joeacnet_src_dir: /usr/share/src/joeac.net
services:
actualbudget:
port: 5006
- host: pi-broughton
+ host: blade-canongate
etherpad:
port: 9001
host: blade-canongate
diff --git a/compose.yml b/compose.yml
index e3d92f8..c9fde11 100644
--- a/compose.yml
+++ b/compose.yml
@@ -1,13 +1,4 @@
services:
- actualbudget:
- image: docker.io/actualbudget/actual-server:latest-alpine
- container_name: joeac.net-actualbudget
- restart: unless-stopped
- volumes:
- - ${ACTUALBUDGET_DATA_DIR}:/data/
- ports:
- - "${ACTUALBUDGET_PORT}:5006"
-
gemini:
image: git.joeac.net/joeac/${IMAGE_PREFIX}joeac.net-gemini
container_name: joeac.net-gemini
diff --git a/make/vars.mk b/make/vars.mk
index 4aa1e1a..f09ffd7 100644
--- a/make/vars.mk
+++ b/make/vars.mk
@@ -7,9 +7,9 @@ IP_ADDR_pi-broughton := 192.168.178.91
IP_ADDR_blade-canongate := 192.168.178.75
MASTER_NODE := blade-canongate
IS_MASTER_NODE := $(filter $(MASTER_NODE),$(HOSTNAME))
-MODULES_pi-broughton := actualbudget
+MODULES_pi-broughton :=
MODULES_blade-canongate := gemini
-ALL_NGINX_MODULES := actualbudget
+ALL_NGINX_MODULES :=
NGINX_MODULES := $(if $(IS_MASTER_NODE),$(ALL_NGINX_MODULES))
MODULES := $(MODULES_$(HOSTNAME))
ALL_MODULES := $(sort $(foreach hostname,$(HOSTNAMES),$(MODULES_$(hostname))))
@@ -20,11 +20,9 @@ MAKE_MODULES := $(foreach module,$(MODULES),\
SUBDOMAIN_actualbudget := budget
-PORT_actualbudget := 5006
PORT_gemini := 1965
PORT_smtp := 2500
-export ACTUALBUDGET_DATA_DIR := /var/joeac.net-actualbudget/var
export GEMINI_CERTIFICATES_DIR := /var/joeac.net-gemini/certificates
export GEMINI_COMITIUM_DATA_DIR := /var/joeac.net-gemini/comitium-data