--- - name: "Configure dashboard start page" hosts: all vars: app_name: "dashboard" app_user: "{{ app_name }}" app_owner_uid: 1109 app_owner_gid: 1109 base_dir: "{{ (application_dir, app_name) | path_join }}" config_dir: "{{ (base_dir, 'config') | path_join }}" # gethomepage.dev — проверь актуальный тег перед обновлением. homepage_image: "ghcr.io/gethomepage/homepage:v1.13.2" # Внутренний порт контейнера; наружу не публикуется, ходим только через Caddy. homepage_port: 3000 # Домен, на котором Caddy отдаёт дашборд. homepage 1.x требует явный whitelist # Host за реверс-прокси, иначе «Host validation failed». homepage_domain: "start.vakhrushev.me" config_files: - "settings" - "services" - "widgets" - "bookmarks" tasks: - name: "Create user and environment" ansible.builtin.import_role: name: owner vars: owner_name: "{{ app_user }}" owner_uid: "{{ app_owner_uid }}" owner_gid: "{{ app_owner_gid }}" owner_extra_groups: ["docker"] - name: "Create application internal directories" ansible.builtin.file: path: "{{ item }}" state: "directory" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0750" loop: - "{{ base_dir }}" - "{{ config_dir }}" - name: "Render dashboard config files" ansible.builtin.template: src: "./files/{{ app_name }}/config/{{ item }}.template.yaml" dest: "{{ (config_dir, item ~ '.yaml') | path_join }}" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" loop: "{{ config_files }}" - name: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.template.yml" dest: "{{ base_dir }}/docker-compose.yml" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "present" remove_orphans: true pull: "always" tags: - run-app