diff --git a/playbooks/heriverse.yml b/playbooks/heriverse.yml new file mode 100644 index 0000000..15fbe3f --- /dev/null +++ b/playbooks/heriverse.yml @@ -0,0 +1,11 @@ +--- +- name: Configure webserver with Docker, Heriverse and Caddy + hosts: + - localhost + become: true + vars: + server_name: "heriverse.stratigraph" + + roles: + - docker + - heriverse diff --git a/roles/heriverse/defaults/main.yml b/roles/heriverse/defaults/main.yml new file mode 100644 index 0000000..67cc8eb --- /dev/null +++ b/roles/heriverse/defaults/main.yml @@ -0,0 +1,3 @@ +heriverse_repo_url: "https://git.3dresearch.it/stratigraph/docker-heriverse" +# Note: replace with the domain name for Caddy config +#server_name: "heriverse.stratigraph" diff --git a/roles/heriverse/handlers/main.yml b/roles/heriverse/handlers/main.yml new file mode 100644 index 0000000..7e7ab42 --- /dev/null +++ b/roles/heriverse/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart Caddy + ansible.builtin.service: + name: caddy + state: restarted diff --git a/roles/heriverse/tasks/main.yml b/roles/heriverse/tasks/main.yml new file mode 100644 index 0000000..9fcd1e8 --- /dev/null +++ b/roles/heriverse/tasks/main.yml @@ -0,0 +1,68 @@ +--- +- name: Ensure ACL is installed + ansible.builtin.package: + name: + - acl + state: present + update_cache: yes + +- name: Ensure git is installed + ansible.builtin.package: + name: + - git + state: present + update_cache: yes + +- name: Ensure Caddy is installed + ansible.builtin.package: + name: + - caddy + state: present + update_cache: yes + +- name: Create Heriverse user + ansible.builtin.user: + name: heriverse + shell: /usr/sbin/nologin + home: /opt/heriverse + create_home: true + password: '*' + +- name: Ensure Heriverse directory exists + ansible.builtin.file: + path: /opt/heriverse/docker-herivese + state: directory + owner: heriverse + group: heriverse + mode: "0755" + +- name: Clone Heriverse repo + ansible.builtin.git: + repo: "{{ heriverse_repo_url }}" + dest: /opt/heriverse/docker-heriverse + clone: true + become: true + become_user: heriverse + +- name: Create and start all Heriverse services + community.docker.docker_compose_v2: + project_src: /opt/heriverse/docker-heriverse + pull: missing + register: output + +- name: Execute entrypoint script + ansible.builtin.command: + chdir: /opt/heriverse/docker-heriverse + cmd: './entrypoint.sh' + become: true + become_user: heriverse + +- name: Copy Caddy config file + ansible.builtin.template: + src: Caddyfile.j2 + dest: "/etc/caddy/Caddyfile" + owner: root + group: root + mode: '0644' + notify: Restart Caddy + diff --git a/roles/heriverse/templates/Caddyfile.j2 b/roles/heriverse/templates/Caddyfile.j2 new file mode 100644 index 0000000..b78a80c --- /dev/null +++ b/roles/heriverse/templates/Caddyfile.j2 @@ -0,0 +1,25 @@ +{{ server_name }} { + # Don't show ATON's frontend home page + redir / /a/heriverse 302 + + request_body { + max_size 2GB # This can be made configurable + } + + # `handle_path` is required where URIs must be rewritten + handle_path /server/* { + reverse_proxy localhost:3000 + } + + handle /auth* { + reverse_proxy localhost:8080 + } + + handle_path /couchdb/* { + reverse_proxy localhost:5984 + } + + handle /* { + reverse_proxy localhost:8081 + } +}