diff options
| -rw-r--r-- | ansible/playbook.yml | 9 | ||||
| -rw-r--r-- | ansible/roles/actualbudget/tasks/main.yml | 49 | ||||
| -rw-r--r-- | ansible/roles/actualbudget/templates/openrc/actualbudget | 27 | ||||
| -rw-r--r-- | ansible/vars/actualbudget.yml | 2 | ||||
| -rw-r--r-- | ansible/vars/common.yml | 2 | ||||
| -rw-r--r-- | compose.yml | 9 | ||||
| -rw-r--r-- | make/vars.mk | 6 |
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 |
