diff --git a/ansible/main.yml b/ansible/main.yml index fbb05c6..7624597 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -17,8 +17,9 @@ - ntfy - nextcloud - tautulli - - name: gitea - tags: test + - gitea - unifi-controller - beets - navidrome + - name: webtrees + tags: test diff --git a/ansible/roles/webtrees/tasks/main.yml b/ansible/roles/webtrees/tasks/main.yml new file mode 100644 index 0000000..5c0fdfc --- /dev/null +++ b/ansible/roles/webtrees/tasks/main.yml @@ -0,0 +1,29 @@ +- name: Create service user + user: + name: "{{ role_name }}" + system: true + register: service_user + become: true + +- name: Create install directory + file: + path: "{{ install_directory }}/{{ role_name }}" + state: directory + owner: "{{ docker_user }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Copy docker-compose file to destination + template: + src: docker-compose.yml + dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml" + owner: "{{ docker_user }}" + mode: "{{ docker_compose_file_mask }}" + validate: docker-compose -f %s config + become: true + +- name: Start docker container + community.docker.docker_compose: + project_src: "{{ install_directory }}/{{ role_name }}" + pull: true + remove_orphans: yes diff --git a/ansible/roles/webtrees/templates/docker-compose.yml b/ansible/roles/webtrees/templates/docker-compose.yml new file mode 100644 index 0000000..dd93c54 --- /dev/null +++ b/ansible/roles/webtrees/templates/docker-compose.yml @@ -0,0 +1,50 @@ +version: "{{ docker_compose_version }}" + +networks: + traefik: + external: true + db: + external: false + +services: + {{ role_name }}: + container_name: "{{ role_name }}" + image: ghcr.io/nathanvaughn/webtrees:latest + restart: unless-stopped + networks: + - traefik + - db + environment: + PRETTY_URLS: "1" + BASE_URL: "https://ancestry.{{ personal_domain }}" + DB_TYPE: "pgsql" + DB_PORT: 5432 + DB_HOST: "db" + DB_NAME: "webtrees" + DB_USER: "webtrees" + DB_PASSWORD: "webtrees" + WT_USER: "mike" + WT_PASS: "mike" + WT_EMAIL: email@email.com + volumes: + - "{{ data_dir }}/{{ role_name }}/data:/var/www/webtrees/data" + - "{{ data_dir }}/{{ role_name }}/media:/var/www/webtrees/media" + labels: + traefik.enable: true + traefik.http.routers.{{ role_name }}.rule: "Host(`ancestry.{{ personal_domain }}`)" + traefik.http.routers.{{ role_name }}.middlewares: lan-whitelist@file + + db: + image: lscr.io/linuxserver/mariadb:latest + restart: unless-stopped + networks: + - db + environment: + TZ: {{ timezone }} + MYSQL_DATABASE: webtrees + MYSQL_USER: webtrees + MYSQL_PASSWORD: webtrees + MYSQL_ROOT_PASSWORD: webtrees + volumes: + - "{{ data_dir }}/mariadb/webtrees:/config" +