diff --git a/compose-files/replicant/homepage/docker-compose.yml b/compose-files/replicant/homepage/docker-compose.yml new file mode 100644 index 0000000..a26f552 --- /dev/null +++ b/compose-files/replicant/homepage/docker-compose.yml @@ -0,0 +1,27 @@ +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + environment: + - PUID=1000 + - PGID=1000 + - HOMEPAGE_ALLOWED_HOSTS=192.168.1.80:3305,home.3ddbrewery.com,* + volumes: + - ./config:/app/config + ports: + - "3305:3000" + restart: unless-stopped + networks: + - proxy + deploy: + resources: + limits: + memory: 512M + cpus: '1.0' + labels: + - "autoheal=true" + - "com.centurylinklabs.watchtower.enable=true" + +networks: + proxy: + external: true diff --git a/playbooks/deploy-homepage.yml b/playbooks/deploy-homepage.yml new file mode 100644 index 0000000..8ff2525 --- /dev/null +++ b/playbooks/deploy-homepage.yml @@ -0,0 +1,62 @@ +--- +- name: Deploy Homepage to replicant + hosts: replicant + vars: + service_name: homepage + service_dir: "{{ docker_appdata }}/{{ service_name }}" + compose_src: "{{ playbook_dir }}/../compose-files/replicant/{{ service_name }}" + + tasks: + - name: Create service directory + ansible.builtin.file: + path: "{{ service_dir }}" + state: directory + mode: '0755' + + - name: Copy docker-compose.yml + ansible.builtin.copy: + src: "{{ compose_src }}/docker-compose.yml" + dest: "{{ service_dir }}/docker-compose.yml" + mode: '0644' + + - name: Create config directory + ansible.builtin.file: + path: "{{ service_dir }}/config" + state: directory + mode: '0755' + + - name: Pull latest image + community.docker.docker_image: + name: ghcr.io/gethomepage/homepage:latest + source: pull + force_source: yes + + - name: Deploy Homepage + community.docker.docker_compose_v2: + project_src: "{{ service_dir }}" + state: present + pull: missing + register: deploy_result + + - name: Show deployment result + ansible.builtin.debug: + msg: "Homepage deployed: {{ deploy_result.changed }}" + + - name: Wait for container to be healthy + ansible.builtin.shell: | + for i in {1..30}; do + status=$(docker inspect --format='{{ "{{" }}.State.Health.Status{{ "}}" }}' homepage 2>/dev/null || echo "starting") + if [ "$status" = "healthy" ]; then + echo "Container is healthy" + exit 0 + fi + sleep 2 + done + echo "Warning: Container not healthy after 60s" + docker logs homepage 2>&1 | tail -20 + register: health_check + changed_when: false + + - name: Display health status + ansible.builtin.debug: + msg: "{{ health_check.stdout }}"