xcad hace 1 mes
padre
commit
8aab7a2a3b

+ 8 - 63
library/compose/homepage/compose.yaml.j2

@@ -1,51 +1,29 @@
 services:
   {{ service_name }}:
     image: ghcr.io/gethomepage/homepage:v1.8.0
-    {#
-      If not in swarm mode, check whether container_name is set and apply restart policy,
-      else swarm mode handles restarts via deploy.restart_policy
-    #}
     {% if not swarm_enabled %}
     restart: {{ restart_policy }}
+    {% if container_name %}
     container_name: {{ container_name }}
     {% endif %}
-    {#
-      Set container hostname for identification
-    #}
-    hostname: {{ container_hostname }}
-    {#
-      Environment variables for Homepage configuration:
-      - Timezone, log level, and allowed hosts
-      - Optional user/group IDs for file permissions
-    #}
+    {% endif %}
+    {% if container_timezone or container_loglevel %}
     environment:
+      {% if container_timezone %}
       - TZ={{ container_timezone }}
+      {% endif %}
+      {% if container_loglevel %}
       - LOG_LEVEL={{ container_loglevel }}
-      - HOMEPAGE_ALLOWED_HOSTS={{ homepage_allowed_hosts }}
-      {% if homepage_puid %}
-      - PUID={{ homepage_puid }}
-      - PGID={{ homepage_pgid }}
       {% endif %}
-    {#
-      When traefik is enabled, add traefik network for reverse proxy access
-    #}
+    {% endif %}
     {% if traefik_enabled %}
     networks:
       {{ traefik_network }}:
     {% endif %}
-    {#
-      Port mappings for web interface (only when Traefik is disabled)
-    #}
     {% if not traefik_enabled %}
     ports:
       - {{ ports_http }}:3000
     {% endif %}
-    {#
-      Volume configuration for persistent data:
-      - config: Dashboard configuration files
-      - images: Custom images for dashboard
-      - icons: Custom icons for services
-    #}
     volumes:
       {% if volume_mode == 'local' %}
       - {{ service_name }}_config:/app/config
@@ -56,10 +34,6 @@ services:
       - {{ volume_mount_path }}/{{ service_name }}/images:/app/images
       - {{ volume_mount_path }}/{{ service_name }}/icons:/app/icons
       {% endif %}
-    {#
-      When traefik_enabled is set, and not running in swarm mode, add traefik labels
-      (optionally enable TLS if traefik_tls_enabled is set)
-    #}
     {% if traefik_enabled and not swarm_enabled %}
     labels:
       - traefik.enable=true
@@ -71,17 +45,11 @@ services:
       {% 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={{ traefik_tls_entrypoint %}
+      - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
       - traefik.http.routers.{{ service_name }}-https.tls=true
       - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
       {% endif %}
     {% endif %}
-    {#
-      Deploy configuration for Swarm mode:
-      - Configure replicas or global mode, placement constraints, and restart policy
-      - Traefik: Labels for reverse proxy integration (Swarm mode)
-      - Resources: Set CPU/memory limits and reservations
-    #}
     {% if swarm_enabled %}
     deploy:
       {% if swarm_placement_mode == 'replicated' %}
@@ -92,10 +60,6 @@ services:
       {% else %}
       mode: global
       {% endif %}
-      {#
-        When traefik_enabled is set in swarm mode, add traefik labels
-        (optionally enable TLS if traefik_tls_enabled is set)
-      #}
       {% if traefik_enabled %}
       labels:
         - traefik.enable=true
@@ -112,33 +76,14 @@ services:
         - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
         {% endif %}
       {% endif %}
-      {% if resources_enabled %}
-      resources:
-        limits:
-          cpus: '{{ resources_cpu_limit }}'
-          memory: {{ resources_memory_limit }}
-        reservations:
-          cpus: '{{ resources_cpu_reservation }}'
-          memory: {{ resources_memory_reservation }}
-      {% endif %}
     {% endif %}
 
-{#
-  Network definitions (only when Traefik is enabled):
-  - Traefik network: always external (managed by Traefik)
-#}
 {% if traefik_enabled %}
 networks:
   {{ traefik_network }}:
     external: true
 {% endif %}
 
-{#
-  Volume definitions (only when volume_mode is 'local'):
-  - config: Dashboard configuration files
-  - images: Custom images for dashboard
-  - icons: Custom icons for services
-#}
 {% if volume_mode == 'local' %}
 volumes:
   {{ service_name }}_config:

+ 45 - 45
library/compose/homepage/template.yaml

@@ -28,15 +28,20 @@ schema: '1.2'
 spec:
   general:
     vars:
-      container_hostname:
+      service_name:
+        description: The service name
+        type: str
+        required: true
         default: homepage
       container_name:
-        default: homepage
-      service_name:
+        description: The container name
+        type: str
         default: homepage
       container_timezone:
+        description: The container timezone
         type: str
       container_loglevel:
+        description: The container log level
         type: enum
         options:
           - debug
@@ -44,20 +49,35 @@ spec:
           - warn
           - error
       restart_policy:
+        description: The container restart policy
         type: enum
         options:
           - unless-stopped
           - always
           - on-failure
           - 'no'
-        default: unless-stopped
         required: true
+        default: unless-stopped
   ports:
     vars:
       ports_http:
+        description: The HTTP port
+        type: int
+        needs:
+          - traefik_enabled=false
+        required: true
         default: 3000
   traefik:
     vars:
+      traefik_enabled:
+        type: bool
+        default: false
+        description: Enable Traefik integration
+      traefik_entrypoint:
+        description: The Traefik entrypoint
+        type: str
+        required: true
+        default: web
       traefik_host:
         default: homepage
       traefik_network:
@@ -68,20 +88,21 @@ spec:
         default: home.arpa
         type: str
         required: true
-      traefik_enabled:
-        type: bool
-        default: false
-        description: Enable Traefik integration
   traefik_tls:
     vars:
-      traefik_tls_certresolver:
-        type: str
-        default: cloudflare
-        required: true
       traefik_tls_enabled:
+        description: Enable Traefik TLS
         type: bool
         default: false
-        description: Enable Traefik TLS
+      traefik_tls_entrypoint:
+        description: The Traefik TLS entrypoint
+        type: str
+        default: websecure
+        required: true
+      traefik_tls_certresolver:
+        type: str
+        required: true
+        default: cloudflare
   volume:
     vars:
       volume_mode:
@@ -110,50 +131,29 @@ spec:
         type: str
         default: ''
         description: The NFS server
-  resources:
+  swarm:
     vars:
-      resources_enabled:
+      swarm_enabled:
+        description: Enable Docker Swarm mode
         type: bool
         default: false
-      resources_cpu_limit:
-        type: str
-        default: 1.0
-        required: true
-      resources_cpu_reservation:
-        type: str
-        default: 0.25
-        needs:
-          - swarm_enabled=true
-        required: true
-      resources_memory_limit:
-        type: str
-        default: 1G
-        required: true
-      resources_memory_reservation:
-        type: str
-        default: 512M
-        needs:
-          - swarm_enabled=true
-        required: true
-  swarm:
-    vars:
       swarm_replicas:
+        description: Number of replicas for replicated mode
         type: int
-        default: 1
         needs:
+          - swarm_enabled=true
           - swarm_placement_mode=replicated
         required: true
+        default: 1
       swarm_placement_host:
+        description: Hostname for placement constraint
         type: str
-        default: ''
         needs:
+          - swarm_enabled=true
           - swarm_placement_mode=replicated
-        extra: Constrains service to run on specific node by hostname
-      swarm_enabled:
-        type: bool
-        default: false
-        description: Enable Docker Swarm mode
       swarm_placement_mode:
+        description: The placement mode
         type: str
+        needs:
+          - swarm_enabled=true
         default: replicated
-        description: The placement mode

+ 5 - 52
library/compose/homer/compose.yaml.j2

@@ -1,34 +1,20 @@
 services:
   {{ service_name }}:
     image: docker.io/b4bz/homer:v25.11.1
-    {#
-      If not in swarm mode, check whether container_name is set and apply restart policy,
-      else swarm mode handles restarts via deploy.restart_policy
-    #}
     {% if not swarm_enabled %}
     restart: {{ restart_policy }}
+    {% if container_name %}
     container_name: {{ container_name }}
     {% endif %}
-    {#
-      Set container hostname for identification
-    #}
-    hostname: {{ container_hostname }}
-    {#
-      Environment variables for Homer configuration
-    #}
+    {% endif %}
+    {% if container_timezone %}
     environment:
       - TZ={{ container_timezone }}
-    {#
-      When traefik is enabled, add traefik network for reverse proxy access
-    #}
+    {% endif %}
     {% if traefik_enabled %}
     networks:
       {{ traefik_network }}:
     {% endif %}
-    {#
-      Port mappings for web interface (only when Traefik is disabled)
-      Note: Swarm mode uses 'host' mode for port publishing to avoid port conflicts
-    #}
     {% if not traefik_enabled %}
     ports:
       {% if swarm_enabled %}
@@ -40,16 +26,8 @@ services:
       - "{{ ports_http }}:8080"
       {% endif %}
     {% endif %}
-    {#
-      Volume configuration:
-      - assets: Homer dashboard configuration and assets
-    #}
     volumes:
       - ./assets:/www/assets
-    {#
-      When traefik_enabled is set, and not running in swarm mode, add traefik labels
-      (optionally enable TLS if traefik_tls_enabled is set)
-    #}
     {% if traefik_enabled and not swarm_enabled %}
     labels:
       - traefik.enable=true
@@ -66,13 +44,7 @@ services:
       - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
       {% endif %}
     {% endif %}
-    {#
-      Deploy configuration for Swarm mode and/or resource limits:
-      - Swarm: Configure replicas, placement constraints, and restart policy
-      - Resources: Set CPU/memory limits (and reservations in Swarm mode)
-      - Traefik: Labels for reverse proxy integration (Swarm mode)
-    #}
-    {% if swarm_enabled or resources_enabled %}
+    {% if swarm_enabled %}
     deploy:
       {% if swarm_enabled %}
       mode: {{ swarm_placement_mode }}
@@ -87,21 +59,6 @@ services:
       restart_policy:
         condition: on-failure
       {% endif %}
-      {% if resources_enabled %}
-      resources:
-        limits:
-          cpus: '{{ resources_cpu_limit }}'
-          memory: {{ resources_memory_limit }}
-        {% if swarm_enabled %}
-        reservations:
-          cpus: '{{ resources_cpu_reservation }}'
-          memory: {{ resources_memory_reservation }}
-        {% endif %}
-      {% endif %}
-      {#
-        When traefik_enabled is set in swarm mode, add traefik labels
-        (optionally enable TLS if traefik_tls_enabled is set, and authentik middleware if enabled)
-      #}
       {% if swarm_enabled and traefik_enabled %}
       labels:
         - traefik.enable=true
@@ -126,10 +83,6 @@ services:
       {% endif %}
     {% endif %}
 
-{#
-  Network definitions (only when Traefik is enabled):
-  - Traefik network: always external (managed by Traefik)
-#}
 {% if traefik_enabled %}
 networks:
   {{ traefik_network }}:

+ 15 - 32
library/compose/homer/template.yaml

@@ -39,8 +39,6 @@ spec:
         default: homer
       container_name:
         default: homer
-      container_hostname:
-        type: str
       container_timezone:
         type: str
       restart_policy:
@@ -72,8 +70,17 @@ spec:
         default: 8080
   traefik:
     vars:
+      traefik_enabled:
+        type: bool
+        default: false
+        description: Enable Traefik integration
+      traefik_entrypoint:
+        description: The Traefik entrypoint
+        type: str
+        required: true
+        default: web
       traefik_host:
-        default: homer.home.arpa
+        default: homepage
       traefik_network:
         default: traefik
         type: str
@@ -82,45 +89,21 @@ spec:
         default: home.arpa
         type: str
         required: true
-      traefik_enabled:
-        type: bool
-        default: false
-        description: Enable Traefik integration
   traefik_tls:
     vars:
-      traefik_tls_certresolver:
-        type: str
-        default: cloudflare
-        required: true
       traefik_tls_enabled:
-        type: bool
-        default: false
         description: Enable Traefik TLS
-  resources:
-    vars:
-      resources_enabled:
         type: bool
         default: false
-      resources_cpu_limit:
+      traefik_tls_entrypoint:
+        description: The Traefik TLS entrypoint
         type: str
-        default: 1.0
+        default: websecure
         required: true
-      resources_cpu_reservation:
-        type: str
-        default: 0.25
-        needs:
-          - swarm_enabled=true
-        required: true
-      resources_memory_limit:
-        type: str
-        default: 1G
-        required: true
-      resources_memory_reservation:
+      traefik_tls_certresolver:
         type: str
-        default: 512M
-        needs:
-          - swarm_enabled=true
         required: true
+        default: cloudflare
   swarm:
     vars:
       swarm_placement_mode:

+ 0 - 138
library/compose/komodo/compose.yaml.j2.final

@@ -1,138 +0,0 @@
----
-services:
-  {{ service_name }}:
-    image: ghcr.io/moghtech/komodo:latest
-    {% if not swarm_enabled %}
-    restart: {{ restart_policy }}
-    container_name: {{ container_name }}
-    {% endif %}
-    hostname: {{ container_hostname }}
-    {#
-      When traefik is enabled, add traefik network for reverse proxy access
-    #}
-    {% if traefik_enabled %}
-    networks:
-      {{ traefik_network }}:
-    {% endif %}
-      {% if network_mode == 'macvlan' %}
-      {{ network_name }}:
-        ipv4_address: {{ network_macvlan_ipv4_address }}
-      {% elif network_mode == 'bridge' %}
-      {{ network_name }}:
-      {% endif %}
-    {% endif %}
-    {% if network_mode == 'bridge' and not traefik_enabled %}
-    ports:
-      {% if swarm_enabled %}
-      - target: 9120
-        published: {{ ports_http }}
-        protocol: tcp
-        mode: host
-      {% else %}
-      - "{{ ports_http }}:9120/tcp"
-      {% endif %}
-    {% endif %}
-    {% if environment_enabled %}
-    environment:
-      KOMODO_DATABASE_ADDRESS: "{{ environment_database_address }}"
-      KOMODO_DATABASE_DB_NAME: "{{ environment_database_name }}"
-      {% if environment_database_username %}
-      KOMODO_DATABASE_USERNAME: "{{ environment_database_username }}"
-      {% endif %}
-      {% if environment_database_password %}
-      KOMODO_DATABASE_PASSWORD: "{{ environment_database_password }}"
-      {% endif %}
-      {% if environment_jwt_secret %}
-      KOMODO_JWT_SECRET: "{{ environment_jwt_secret }}"
-      {% endif %}
-      LOG_LEVEL: "{{ environment_log_level }}"
-    {% endif %}
-    volumes:
-      {% if volume_mode == 'mount' %}
-      - {{ volume_mount_path }}/data:/app/data:rw
-      - {{ volume_mount_path }}/repos:/app/repos:rw
-      {% elif volume_mode in ['local', 'nfs'] %}
-      - {{ service_name }}-data:/app/data
-      - {{ service_name }}-repos:/app/repos
-      {% endif %}
-    {% if swarm_enabled or resources_enabled %}
-    deploy:
-      {% if swarm_enabled %}
-      mode: replicated
-      replicas: 1
-      restart_policy:
-        condition: on-failure
-      {% endif %}
-      {% if resources_enabled %}
-      resources:
-        limits:
-          cpus: '{{ resources_cpu_limit }}'
-          memory: {{ resources_memory_limit }}
-        {% if swarm_enabled %}
-        reservations:
-          cpus: '{{ resources_cpu_reservation }}'
-          memory: {{ resources_memory_reservation }}
-        {% endif %}
-      {% endif %}
-      {% if swarm_enabled and traefik_enabled %}
-      labels:
-        - traefik.enable=true
-        - traefik.docker.network={{ traefik_network }}
-        - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=9120
-        - 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={{ traefik_entrypoint }}
-        {% 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={{ traefik_tls_entrypoint }}
-        - traefik.http.routers.{{ service_name }}-https.tls=true
-        - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
-        {% endif %}
-      {% endif %}
-    {% endif %}
-    {% if traefik_enabled and not swarm_enabled %}
-    labels:
-      - traefik.enable=true
-      - traefik.docker.network={{ traefik_network }}
-      - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=9120
-      - 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={{ traefik_entrypoint }}
-      {% 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={{ traefik_tls_entrypoint }}
-      - traefik.http.routers.{{ service_name }}-https.tls=true
-      - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
-      {% endif %}
-    {% endif %}
-
-{% if volume_mode == 'local' %}
-volumes:
-  {{ service_name }}-data:
-    driver: local
-  {{ service_name }}-repos:
-    driver: local
-{% elif volume_mode == 'nfs' %}
-volumes:
-  {{ service_name }}-data:
-    driver: local
-    driver_opts:
-      type: nfs
-      o: addr={{ volume_nfs_server }},{{ volume_nfs_options }}
-      device: ":{{ volume_nfs_path }}/data"
-  {{ service_name }}-repos:
-    driver: local
-    driver_opts:
-      type: nfs
-      o: addr={{ volume_nfs_server }},{{ volume_nfs_options }}
-      device: ":{{ volume_nfs_path }}/repos"
-{% endif %}
-
-    {% endif %}
-  {% if traefik_enabled %}
-  {{ traefik_network }}:
-    external: true
-  {% endif %}
-{% endif %}

+ 20 - 10
library/compose/komodo/template.yaml

@@ -125,8 +125,17 @@ spec:
         required: true
   traefik:
     vars:
+      traefik_enabled:
+        type: bool
+        default: false
+        description: Enable Traefik integration
+      traefik_entrypoint:
+        description: The Traefik entrypoint
+        type: str
+        required: true
+        default: web
       traefik_host:
-        default: komodo
+        default: homepage
       traefik_network:
         default: traefik
         type: str
@@ -135,20 +144,21 @@ spec:
         default: home.arpa
         type: str
         required: true
-      traefik_enabled:
-        type: bool
-        default: false
-        description: Enable Traefik integration
   traefik_tls:
     vars:
-      traefik_tls_certresolver:
-        type: str
-        default: cloudflare
-        required: true
       traefik_tls_enabled:
+        description: Enable Traefik TLS
         type: bool
         default: false
-        description: Enable Traefik TLS
+      traefik_tls_entrypoint:
+        description: The Traefik TLS entrypoint
+        type: str
+        default: websecure
+        required: true
+      traefik_tls_certresolver:
+        type: str
+        required: true
+        default: cloudflare
   network:
     vars:
       network_name:

+ 0 - 130
library/compose/komodo/template.yaml.backup

@@ -1,130 +0,0 @@
----
-kind: compose
-schema: "1.2"
-metadata:
-  name: Komodo
-  description: |
-    Build and deployment automation tool for managing software across multiple servers. Komodo provides
-    unlimited server connections, flexible API access, and comprehensive management of Docker deployments,
-    stacks, and builds. Features include real-time container monitoring, batch operations, and integration
-    with Docker, Docker Compose, and build systems. Supports both MongoDB and FerretDB as database backends.
-    ## Important Notes
-    * Requires MongoDB or FerretDB for data storage (database not included in this template)
-    * Requires Periphery agent on managed servers for remote operations
-    * Web interface and API accessible through configured ports
-    ## References
-    * **Project:** https://github.com/moghtech/komodo
-    * **Documentation:** https://github.com/moghtech/komodo/tree/main/docsite/docs
-    * **Docker Hub:** https://hub.docker.com/r/moghtech/komodo
-  version: latest
-  author: Christian Lempa
-  date: '2025-11-13'
-  tags:
-    - traefik
-    - swarm
-    - deployment
-    - automation
-  next_steps: |
-    ### 1. Prerequisites
-    * Deploy MongoDB or FerretDB database
-    * Configure database connection in environment variables
-    * Install Periphery agent on servers you want to manage
-    ### 2. Deploy the Service
-    {% if swarm_enabled -%}
-    Deploy to Docker Swarm:
-    ```bash
-    docker stack deploy -c compose.yaml komodo
-    ```
-    {% else -%}
-    Start Komodo using Docker Compose:
-    ```bash
-    docker compose up -d
-    ```
-    {% endif -%}
-    ### 3. Access the Web Interface
-    {% if traefik_enabled -%}
-    * Navigate to: **https://{{ traefik_host }}.{{ traefik_domain }}**
-    {% else -%}
-    * Navigate to: **http://localhost:{{ ports_http }}**
-    {% endif -%}
-    * Complete initial setup and create admin user
-    ### 4. Install Periphery Agent
-    On each server you want to manage:
-    ```bash
-    curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py | python3
-    ```
-    ### 5. Configure Servers
-    * Add servers to Komodo through the web interface
-    * Configure API keys for programmatic access
-    * Start managing deployments, stacks, and builds
-spec:
-  general:
-    vars:
-      service_name:
-        default: "komodo"
-      container_name:
-        default: "komodo"
-      container_hostname:
-        default: "komodo"
-  traefik:
-    vars:
-      traefik_host:
-        default: "komodo"
-  network:
-    vars:
-      network_name:
-        default: "komodo_network"
-  ports:
-    vars:
-      ports_http:
-        description: "External HTTP port (web interface and API)"
-        type: int
-        default: 9120
-        needs: ["traefik_enabled=false", "network_mode=bridge"]
-  volume:
-    vars:
-      volume_mount_path:
-        default: "/mnt/storage/komodo"
-  environment:
-    title: "Environment Variables"
-    toggle: environment_enabled
-    required: true
-    vars:
-      environment_enabled:
-        type: bool
-        default: true
-        description: "Configure environment variables (required)"
-      environment_database_address:
-        type: str
-        default: "mongodb://mongo:27017"
-        description: "Database connection address (MongoDB or FerretDB)"
-        needs: "environment_enabled=true"
-      environment_database_name:
-        type: str
-        default: "komodo"
-        description: "Database name"
-        needs: "environment_enabled=true"
-      environment_database_username:
-        type: str
-        default: ""
-        description: "Database username (optional)"
-        needs: "environment_enabled=true"
-      environment_database_password:
-        type: str
-        default: ""
-        sensitive: true
-        description: "Database password (optional)"
-        needs: "environment_enabled=true"
-      environment_jwt_secret:
-        type: str
-        default: ""
-        sensitive: true
-        autogenerated: true
-        description: "JWT secret for authentication (auto-generated if empty)"
-        needs: "environment_enabled=true"
-      environment_log_level:
-        type: enum
-        default: "info"
-        options: ["debug", "info", "warn", "error"]
-        description: "Log level"
-        needs: "environment_enabled=true"