From 28fe5937feb750e583e56a90784171782115db52 Mon Sep 17 00:00:00 2001 From: Bastian de Byl Date: Sun, 2 Nov 2025 14:18:45 -0500 Subject: [PATCH] updates for gregtime, caddyfile, added uptime-kuma --- ansible/roles/podman/defaults/main.yml | 3 ++ .../containers/debyltech/uptime-kuma.yml | 38 ++++++++++++++++ .../podman/tasks/containers/home/gregtime.yml | 45 +++++++++++++++++++ ansible/roles/podman/tasks/main.yml | 9 +++- .../roles/podman/templates/caddy/Caddyfile.j2 | 18 ++++++++ 5 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/podman/tasks/containers/debyltech/uptime-kuma.yml create mode 100644 ansible/roles/podman/tasks/containers/home/gregtime.yml diff --git a/ansible/roles/podman/defaults/main.yml b/ansible/roles/podman/defaults/main.yml index 7b10013..d2f7d67 100644 --- a/ansible/roles/podman/defaults/main.yml +++ b/ansible/roles/podman/defaults/main.yml @@ -7,12 +7,14 @@ debyltech_path: "{{ podman_volumes }}/debyltech" # drone_path: removed - Drone CI decommissioned factorio_path: "{{ podman_volumes }}/factorio" fulfillr_path: "{{ podman_volumes }}/fulfillr" +gregtime_path: "{{ podman_volumes }}/gregtime" hass_path: "{{ podman_volumes }}/hass" # nginx_path: removed - nginx no longer used nosql_path: "{{ podman_volumes }}/nosql" partkeepr_path: "{{ podman_volumes }}/partkeepr" partsy_path: "{{ podman_volumes }}/partsy" photos_path: "{{ podman_volumes }}/photos" +uptime_kuma_path: "{{ podman_volumes }}/uptime-kuma" pihole_path: "{{ podman_volumes }}/pihole" sshpass_cron_path: "{{ podman_volumes }}/sshpass_cron" caddy_path: "{{ podman_volumes }}/caddy" @@ -29,6 +31,7 @@ cloud_server_name: cloud.bdebyl.net cloud_skudak_server_name: cloud.skudakrennsport.com fulfillr_server_name: fulfillr.debyltech.com home_server_name: home.bdebyl.net +uptime_kuma_server_name: uptime.debyltech.com parts_server_name: parts.bdebyl.net photos_server_name: photos.bdebyl.net diff --git a/ansible/roles/podman/tasks/containers/debyltech/uptime-kuma.yml b/ansible/roles/podman/tasks/containers/debyltech/uptime-kuma.yml new file mode 100644 index 0000000..90aecbc --- /dev/null +++ b/ansible/roles/podman/tasks/containers/debyltech/uptime-kuma.yml @@ -0,0 +1,38 @@ +--- +- name: create uptime-kuma host directory volumes + become: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ podman_user }}" + group: "{{ podman_user }}" + mode: 0755 + notify: restorecon podman + loop: + - "{{ uptime_kuma_path }}/data" + +- name: flush handlers + ansible.builtin.meta: flush_handlers + +- import_tasks: podman/podman-check.yml + vars: + container_name: uptime-kuma + container_image: "{{ image }}" + +- name: create uptime-kuma container + become: true + become_user: "{{ podman_user }}" + containers.podman.podman_container: + name: uptime-kuma + image: "{{ image }}" + restart_policy: on-failure:3 + log_driver: journald + volumes: + - "{{ uptime_kuma_path }}/data:/app/data" + ports: + - "3001:3001/tcp" + +- name: create systemd startup job for uptime-kuma + include_tasks: podman/systemd-generate.yml + vars: + container_name: uptime-kuma diff --git a/ansible/roles/podman/tasks/containers/home/gregtime.yml b/ansible/roles/podman/tasks/containers/home/gregtime.yml new file mode 100644 index 0000000..5c568f0 --- /dev/null +++ b/ansible/roles/podman/tasks/containers/home/gregtime.yml @@ -0,0 +1,45 @@ +--- +- name: create gregtime host directory volumes + become: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ podman_subuid.stdout }}" + group: "{{ podman_user }}" + mode: 0755 + notify: restorecon podman + loop: + - "{{ gregtime_path }}/logs" + +- name: unshare chown the gregtime log volume + become: true + become_user: "{{ podman_user }}" + changed_when: false + ansible.builtin.command: | + podman unshare chown -R 1000:1000 {{ gregtime_path }}/logs + +- name: flush handlers + ansible.builtin.meta: flush_handlers + +- import_tasks: podman/podman-check.yml + vars: + container_name: gregtime + container_image: "{{ image }}" + +- name: create gregtime container + become: true + become_user: "{{ podman_user }}" + containers.podman.podman_container: + name: gregtime + image: "{{ image }}" + restart_policy: on-failure:3 + log_driver: journald + env: + TZ: America/New_York + volumes: + - "{{ gregtime_path }}/logs:/app/logs" + +- name: create systemd startup job for gregtime + include_tasks: podman/systemd-generate.yml + vars: + container_name: gregtime \ No newline at end of file diff --git a/ansible/roles/podman/tasks/main.yml b/ansible/roles/podman/tasks/main.yml index ba537a5..5f9c20f 100644 --- a/ansible/roles/podman/tasks/main.yml +++ b/ansible/roles/podman/tasks/main.yml @@ -42,7 +42,7 @@ - import_tasks: containers/home/partsy.yml vars: - image: localhost/partsy:b8e4e92-dirty + image: localhost/partsy:f3bb84a-45ae7ef tags: partsy - import_tasks: containers/skudak/wiki.yml @@ -76,6 +76,11 @@ image: "{{ aws_ecr_endpoint }}/fulfillr:20251003.1533" tags: debyltech, fulfillr +- import_tasks: containers/debyltech/uptime-kuma.yml + vars: + image: docker.io/louislam/uptime-kuma:1 + tags: debyltech, uptime-kuma + - import_tasks: containers/home/nosql.yml vars: image: docker.io/redis:7.2.1-alpine @@ -83,5 +88,5 @@ - import_tasks: containers/home/gregtime.yml vars: - image: docker.io/library/greg-time-bot:1.0.1 + image: localhost/greg-time-bot:1.2.0 tags: gregtime \ No newline at end of file diff --git a/ansible/roles/podman/templates/caddy/Caddyfile.j2 b/ansible/roles/podman/templates/caddy/Caddyfile.j2 index f7534f0..7bd4855 100644 --- a/ansible/roles/podman/templates/caddy/Caddyfile.j2 +++ b/ansible/roles/podman/templates/caddy/Caddyfile.j2 @@ -139,6 +139,24 @@ } } +# Uptime Kuma - {{ uptime_kuma_server_name }} +{{ uptime_kuma_server_name }} { +{{ ip_restricted_site() }} + + handle @local { + import common_headers + reverse_proxy localhost:3001 { + # WebSocket support for live updates + flush_interval -1 + } + } + + log { + output file /var/log/caddy/uptime-kuma.log + format json + } +} + # ============================================================================ # COMPLEX CONFIGURATIONS # ============================================================================