--- # Gokapi logs in through Pocket ID. config.json is written only on a fresh # install (Gokapi rewrites it on upgrades), so changing the template later # means deleting /opt/stacks/gokapi/config/config.json first. - name: make gokapi directories ansible.builtin.file: path: "{{ item }}" state: directory mode: '0700' loop: - /opt/stacks/gokapi - /opt/stacks/gokapi/config - /opt/stacks/gokapi/data - name: Template out the compose file ansible.builtin.template: src: gokapi-compose.yml.j2 dest: /opt/stacks/gokapi/compose.yml owner: root mode: '0644' - name: Template out the gokapi config (fresh installs only) ansible.builtin.template: src: gokapi-config.json.j2 dest: /opt/stacks/gokapi/config/config.json owner: root mode: '0600' force: false no_log: true - name: Check for an existing gokapi database ansible.builtin.stat: path: /opt/stacks/gokapi/data/gokapi.sqlite register: gokapi_db # A new database has no users and Gokapi refuses to start, so run it once with # --deployment-password to create the super admin (the Pocket ID email above). - name: Create the gokapi super admin on a fresh install when: not gokapi_db.stat.exists block: - name: Start a one-off gokapi with a deployment password ansible.builtin.command: cmd: >- docker compose run -d --rm --no-deps --name gokapi-init gokapi /app/run.sh --deployment-password {{ vault_gokapi.deployment_password }} chdir: /opt/stacks/gokapi no_log: true - name: Wait for the one-off gokapi to finish starting ansible.builtin.wait_for: path: /opt/stacks/gokapi/data/log.txt search_regex: Gokapi started timeout: 60 always: - name: Stop the one-off gokapi ansible.builtin.command: docker rm -f gokapi-init when: not gokapi_db.stat.exists changed_when: true failed_when: false - name: deploy gokapi stack community.docker.docker_compose_v2: project_src: /opt/stacks/gokapi files: - compose.yml