# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Kener
spec:
    description: Stunning status pages, batteries included!
    coverImage: https://raw.githubusercontent.com/rajnandan1/kener/main/static/og.jpg
    icon: https://raw.githubusercontent.com/rajnandan1/kener/main/static/kener.svg
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Public Domain
          description: The URL of Kener
    tags:
        - Uptime
        - Monitor
        - Status Page
        - Incident Management
        - DevOps
        - SvelteKit
        - Open Source
        - Dashboard
    readme: "# Kener\n\nKener is a sleek and lightweight status page system built with SvelteKit and NodeJS. It's not here to replace heavyweights like Datadog or Atlassian but rather to offer a simple, modern, and hassle-free way to set up a great-looking status page with minimal effort.\n\nDesigned with ease of use and customization in mind, Kener provides all the essential features you'd expect from a status page—without unnecessary complexity.\n\n[\U0001F3E0 Homepage](https://kener.ing/) | [GitHub](https://github.com/rajnandan1/kener)\n\n## Why Kener?\n\n- Real-time monitoring (API, Ping, TCP, DNS, SSL, SQL, and more)\n- Uptime tracking and latency metrics\n- Incident and maintenance management\n- Customizable dashboards with theming\n- Internationalization (20+ languages)\n- Embeddable widgets and status badges\n- Email notifications (SMTP / Resend)\n- Webhook and Slack/Discord alerts\n\n## After Deployment\n\n1. Open your Kener domain in a browser.\n2. Complete the initial setup wizard to create your admin account.\n3. Add your first monitor from the management dashboard.\n\n## Documentation\n\nFull docs: [https://kener.ing/docs](https://kener.ing/docs)\n\n## Support Kener\n\nKener is built and maintained by Rajnandan1. If you find it useful, consider supporting the project:\n\n- [GitHub Sponsors](https://github.com/sponsors/rajnandan1)\n- [Buy Me a Coffee](https://www.buymeacoffee.com/rajnandan1)\n- [PayPal](https://www.paypal.com/paypalme/rajnandan1)\n- [Star on GitHub](https://github.com/rajnandan1/kener)\n"
    services:
        - name: Kener
          icon: https://raw.githubusercontent.com/rajnandan1/kener/main/static/kener.svg
          dependencies:
            - postgresql
            - redis
          template: PREBUILT
          spec:
            id: kener
            source:
                image: rajnandan1/kener:latest
            ports:
                - id: web
                  port: 3000
                  type: HTTP
            env:
                DATABASE_URL:
                    default: ${POSTGRES_CONNECTION_STRING}
                KENER_SECRET_KEY:
                    default: ${PASSWORD}
                ORIGIN:
                    default: https://${ZEABUR_WEB_DOMAIN}
                REDIS_URL:
                    default: ${REDIS_CONNECTION_STRING}
          domainKey: PUBLIC_DOMAIN
        - name: postgresql
          icon: https://cdn.zeabur.com/marketplace/postgresql.svg
          template: PREBUILT
          spec:
            id: postgresql
            source:
                image: postgres:18
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            instructions:
                - title: Connection String
                  content: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DATABASE}
                - title: PostgreSQL Connect Command
                  content: psql "postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DATABASE}"
                - title: PostgreSQL username
                  content: ${POSTGRES_USERNAME}
                - title: PostgreSQL password
                  content: ${POSTGRES_PASSWORD}
                - title: PostgreSQL database
                  content: ${POSTGRES_DATABASE}
                - title: PostgreSQL host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: PostgreSQL port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
            env:
                PGDATA:
                    default: /var/lib/postgresql/data/pgdata
                    expose: false
                POSTGRES_CONNECTION_STRING:
                    default: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}
                    expose: true
                POSTGRES_DATABASE:
                    default: ${POSTGRES_DB}
                    expose: true
                POSTGRES_DB:
                    default: kener
                POSTGRES_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                POSTGRES_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                POSTGRES_URI:
                    default: ${POSTGRES_CONNECTION_STRING}
                    expose: true
                POSTGRES_USER:
                    default: root
                POSTGRES_USERNAME:
                    default: ${POSTGRES_USER}
                    expose: true
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT
          spec:
            id: redis
            source:
                image: redis/redis-stack-server:latest
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
            instructions:
                - title: Command to connect to your Redis
                  content: redis-cli -h ${PORT_FORWARDED_HOSTNAME} -p ${DATABASE_PORT_FORWARDED_PORT} -a ${REDIS_PASSWORD}
                - title: Redis Connection String
                  content: redis://:${REDIS_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}
                - title: Redis password
                  content: ${REDIS_PASSWORD}
                - title: Redis host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: Redis port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
            env:
                CONFFILE:
                    default: /etc/redis-stack.conf
                REDIS_ARGS:
                    default: --requirepass ${REDIS_PASSWORD}
                REDIS_CONNECTION_STRING:
                    default: redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}
                    expose: true
                REDIS_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                REDIS_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                REDIS_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                REDIS_URI:
                    default: ${REDIS_CONNECTION_STRING}
                    expose: true
            configs:
                - path: /etc/redis-stack.conf
                  template: |
                    port 6379
                    daemonize no
                  permission: null
                  envsubst: null
