xcad 1 неделя назад
Родитель
Сommit
f2c1b75db9

+ 1 - 0
library/compose/uptimekuma/.env.j2

@@ -0,0 +1 @@
+DATABASE_PASSWORD={{ database_password }}

+ 0 - 12
library/compose/uptimekuma/common/volumes.yaml.j2

@@ -1,12 +0,0 @@
-volumes:
-  uptimekuma-data:
-    driver: local
-services:
-  {{ service_name }}:
-    image: docker.io/louislam/uptime-kuma:1.23.17
-    container_name: {{ container_name }}
-    ports:
-      - 3001:3001
-    volumes:
-      - uptimekuma-data:/app/data
-    restart: unless-stopped

+ 99 - 6
library/compose/uptimekuma/compose.yaml.j2

@@ -1,6 +1,99 @@
-{#
-  uptimekuma Docker Compose Configuration
-#}
-include:
-  - services/uptimekuma.yaml
-  - common/volumes.yaml
+---
+services:
+  {{ service_name }}:
+    image: docker.io/louislam/uptime-kuma:2.1.3
+    environment:
+      - TZ={{ container_timezone }}
+    {% if database_type == 'sqlite' %}
+      - UPTIME_KUMA_DB_TYPE=sqlite
+    {% elif database_type == 'mariadb' %}
+      - UPTIME_KUMA_DB_TYPE=mariadb
+      {% if database_external %}
+      - UPTIME_KUMA_DB_HOSTNAME={{ database_host }}
+      {% else %}
+      - UPTIME_KUMA_DB_HOSTNAME={{ service_name }}_db
+      {% endif %}
+      - UPTIME_KUMA_DB_PORT={{ database_port }}
+      - UPTIME_KUMA_DB_USERNAME={{ database_user }}
+      - UPTIME_KUMA_DB_PASSWORD=${DATABASE_PASSWORD}
+      - UPTIME_KUMA_DB_NAME={{ database_name }}
+    {% endif %}
+    {% if (not database_external and database_type == 'mariadb') or traefik_enabled %}
+    networks:
+      {% if not database_external and database_type == 'mariadb' %}
+      - {{ service_name }}_backend
+      {% endif %}
+      {% if traefik_enabled %}
+      - {{ traefik_network }}
+      {% endif %}
+    {% endif %}
+    {% if traefik_enabled %}
+    labels:
+      - traefik.enable=true
+      - traefik.docker.network={{ traefik_network }}
+      - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=9000
+      - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
+      - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
+      - traefik.http.routers.{{ service_name }}_http.entrypoints=web
+      {% if traefik_tls_enabled %}
+      - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
+      - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
+      - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
+      - traefik.http.routers.{{ service_name }}_https.tls=true
+      - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
+      {% endif %}
+    {% else %}
+    ports:
+      - {{ ports_http }}:3001
+    {% endif %}
+    volumes:
+      - {{ service_name }}-data:/app/data
+    healthcheck:
+      test: ["CMD", "curl", "-f", "http://localhost:3001"]
+      interval: 30s
+      retries: 3
+      start_period: 10s
+      timeout: 5s
+    restart: {{ restart_policy }}
+
+  {% if not database_external and database_type == "mariadb" %}
+  {{ service_name }}_db:
+    image: docker.io/library/mariadb:10.5
+    restart: {{ restart_policy }}
+    environment:
+      - TZ={{ container_timezone }}
+      - MYSQL_USER={{ database_user }}
+      - MYSQL_PASSWORD=${DATABASE_PASSWORD}
+      - MYSQL_DATABASE={{ database_name }}
+      - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}
+    networks:
+      - {{ service_name }}_backend
+    healthcheck:
+      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u {{ database_user }} -p${DATABASE_PASSWORD}"]
+      start_period: 30s
+      interval: 10s
+      timeout: 10s
+      retries: 5
+    volumes:
+      - {{ service_name }}_db:/var/lib/mysql
+  {% endif %}
+
+volumes:
+  {{ service_name }}-data:
+    driver: local
+  {% if not database_external and database_type == "mariadb" %}
+  {{ service_name }}_db:
+    driver: local
+  {% endif %}
+
+{% if (not database_external and database_type == "mariadb") or traefik_enabled %}
+networks:
+  {% if not database_external and database_type == "mariadb" %}
+  {{ service_name }}_backend:
+    driver: bridge
+  {% endif %}
+  {% if traefik_enabled %}
+  {{ traefik_network }}:
+    external: true
+  {% endif %}
+{% endif %}

+ 0 - 12
library/compose/uptimekuma/compose.yaml.j2.backup

@@ -1,12 +0,0 @@
-volumes:
-  uptimekuma-data:
-    driver: local
-services:
-  {{ service_name }}:
-    image: docker.io/louislam/uptime-kuma:1.23.17
-    container_name: {{ container_name }}
-    ports:
-      - 3001:3001
-    volumes:
-      - uptimekuma-data:/app/data
-    restart: unless-stopped

+ 0 - 9
library/compose/uptimekuma/services/uptimekuma.yaml.j2

@@ -1,9 +0,0 @@
-services:
-  {{ service_name }}:
-    image: docker.io/louislam/uptime-kuma:1.23.17
-    container_name: {{ container_name }}
-    ports:
-      - 3001:3001
-    volumes:
-      - uptimekuma-data:/app/data
-    restart: unless-stopped

+ 121 - 20
library/compose/uptimekuma/template.yaml

@@ -2,33 +2,134 @@
 kind: compose
 metadata:
   icon:
-    provider: selfh
-    id: uptime-kuma
+    provider: simple-icons
+    id: uptimekuma
   name: Uptimekuma
-  description: >
+  description: |
     Uptimekuma is a self-hosted monitoring tool that allows you to keep track of the uptime and performance of your websites and services.
-    It provides a user-friendly interface to monitor HTTP(s), TCP, ICMP (ping), and more, with customizable alerts and notifications.
-
-
-    Project: https://uptime.kuma.pet/
-
-    Documentation: https://docs.uptime.kuma.pet/
-
-    GitHub: https://github.com/louislam/uptime-kuma
-  version: 1.23.17
+  version: 2.1.3
   author: Christian Lempa
-  date: '2025-10-31'
-  tags: []
-  draft: true
-schema: "1.2"
+  date: '2026-03-03'
+  tags: [
+    monitoring,
+    uptime,
+    self-hosted,
+    docker
+  ]
+schema: '1.2'
 spec:
   general:
     vars:
       service_name:
+        type: str
         default: uptimekuma
-      container_name:
+        required: true
+      container_timezone:
+        type: str
+        default: UTC
+        required: true
+      restart_policy:
+        type: enum
+        options:
+        - unless-stopped
+        - always
+        - on-failure
+        - no
+        default: unless-stopped
+        required: true
+  ports:
+    vars:
+      ports_http:
+        type: int
+        default: 3001
+        required: false
+  traefik:
+    vars:
+      traefik_host:
+        type: str
         default: uptimekuma
-      volumes_version:
+        required: false
+      traefik_network:
+        default: traefik
+        type: str
+        required: true
+      traefik_domain:
+        default: home.arpa
+        type: str
+        required: true
+      traefik_enabled:
+        type: bool
+        default: false
+        description: Enable Traefik integration
+        required: false
+    toggle: traefik_enabled
+    title: Traefik
+    description: Configure Traefik reverse proxy integration
+  traefik_tls:
+    vars:
+      traefik_tls_certresolver:
+        type: str
+        default: cloudflare
+        required: true
+      traefik_tls_enabled:
+        type: bool
+        default: false
+        description: Enable Traefik TLS
+        required: false
+    toggle: traefik_tls_enabled
+    title: Traefik TLS
+    description: Configure Traefik TLS/SSL certificates
+    needs: traefik
+  database:
+    vars:
+      database_type:
+        type: enum
+        options:
+        - sqlite
+        - mariadb
+        default: sqlite
+        description: Database backend type
+        required: true
+      database_external:
+        type: bool
+        default: false
+        description: Use external database
+        required: false
+        needs:
+        - database_type=mariadb
+      database_name:
+        type: str
+        default: uptimekuma
+        description: Database name
+        required: false
+        needs:
+        - database_type=mariadb
+      database_user:
+        type: str
+        default: uptimekuma
+        description: Database user
+        required: false
+        needs:
+        - database_type=mariadb
+      database_password:
+        type: str
+        sensitive: true
+        autogenerated: true
+        description: Database password
+        required: false
+        needs:
+        - database_type=mariadb
+      database_host:
         type: str
-        description: Volumes version
-        default: latest
+        default: mariadb
+        description: Database host
+        required: true
+        needs:
+        - database_type=mariadb;database_external=true
+      database_port:
+        type: int
+        default: 3306
+        description: Database port
+        required: false
+        needs:
+        - database_type=mariadb