{"id":13466562,"url":"https://github.com/rajnandan1/kener","last_synced_at":"2026-04-02T16:22:47.237Z","repository":{"id":210818765,"uuid":"726128134","full_name":"rajnandan1/kener","owner":"rajnandan1","description":"Stunning status pages, batteries included!","archived":false,"fork":false,"pushed_at":"2025-04-02T15:46:39.000Z","size":35162,"stargazers_count":3624,"open_issues_count":20,"forks_count":165,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-03T11:38:44.188Z","etag":null,"topics":["awesome-list","docker","monitoring","monitoring-tool","nodejs","observability","status-page","statuspage","sveltekit"],"latest_commit_sha":null,"homepage":"https://kener.ing/","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajnandan1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"rajnandan1","buy_me_a_coffee":"rajnandan1"}},"created_at":"2023-12-01T15:39:00.000Z","updated_at":"2025-04-03T09:53:06.000Z","dependencies_parsed_at":"2024-11-13T06:18:05.841Z","dependency_job_id":"6aa8bbad-42b4-4c12-b936-f213b755c0d0","html_url":"https://github.com/rajnandan1/kener","commit_stats":{"total_commits":261,"total_committers":10,"mean_commits":26.1,"dds":0.6360153256704981,"last_synced_commit":"f91d65b7a42cf0187db19f8394de7244fb3baac5"},"previous_names":["rajnandan1/kener"],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajnandan1%2Fkener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajnandan1%2Fkener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajnandan1%2Fkener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajnandan1%2Fkener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajnandan1","download_url":"https://codeload.github.com/rajnandan1/kener/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248252661,"owners_count":21072699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome-list","docker","monitoring","monitoring-tool","nodejs","observability","status-page","statuspage","sveltekit"],"created_at":"2024-07-31T15:00:46.381Z","updated_at":"2026-04-02T16:22:47.226Z","avatar_url":"https://github.com/rajnandan1.png","language":"Svelte","funding_links":["https://github.com/sponsors/rajnandan1","https://buymeacoffee.com/rajnandan1","https://www.buymeacoffee.com/rajnandan1"],"categories":["Svelte","nodejs","JavaScript","置顶","状态面板","Network","Monitor","开发工具\u0026框架"],"sub_categories":["05、运维监控体系"],"readme":"# Kener - Stunning Status Pages\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://kener.ing/og.jpg?v=1\" width=\"100%\" height=\"auto\" class=\"rounded-lg shadow-lg\" alt=\"kener example illustration\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/rajnandan1/kener?label=Star%20Repo\u0026style=social\"\u003e\n\t\u003ca href=\"https://github.com/ivbeg/awesome-status-pages\"\u003e\u003cimg src=\"https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg\" alt=\"Awesome status page\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://awesome-selfhosted.net/tags/status--uptime-pages.html#kener\"\u003e\u003cimg src=\"https://awesome.re/mentioned-badge.svg\" alt=\"Awesome self hosted\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://hub.docker.com/r/rajnandan1/kener\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/rajnandan1/kener\" alt=\"Docker Kener\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/rajnandan1/kener/tags?page=1\u0026ordering=last_updated\u0026name=latest\"\u003e\u003cimg alt=\"Docker Image Size\" src=\"https://img.shields.io/docker/image-size/rajnandan1/kener/latest?logo=docker\u0026logoColor=white\u0026label=debian\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/rajnandan1/kener/tags?page=1\u0026ordering=last_updated\u0026name=alpine\"\u003e\u003cimg alt=\"Docker Image Size\" src=\"https://img.shields.io/docker/image-size/rajnandan1/kener/alpine?logo=docker\u0026logoColor=white\u0026label=alpine\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rajnandan1/kener/actions/workflows/publish-images.yml\"\u003e\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/rajnandan1/kener/publish-images.yml\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rajnandan1/kener/commit/HEAD\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/rajnandan1/kener/main\" alt=\"\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rajnandan1/kener/issues\"\u003e\u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/rajnandan1/kener.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://deepwiki.com/rajnandan1/kener\"\u003e\u003cimg alt=\"Ask DeepWiki\" src=\"https://deepwiki.com/badge.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://www.producthunt.com/posts/kener-2\" target=\"_blank\"\u003e\n\t\t\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=kener-2\u0026theme=light\" alt=\"Kener on Product Hunt\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cpicture\u003e\n  \t\t\u003csource srcset=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f514/512.webp\" type=\"image/webp\"\u003e\n  \t\t\u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f514/512.gif\" alt=\"🔔\" width=\"32\" height=\"32\"\u003e\n\t\u003c/picture\u003e\n\t\u003cpicture\u003e\n  \t\t\u003csource srcset=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f680/512.webp\" type=\"image/webp\"\u003e\n  \t\t\u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f680/512.gif\" alt=\"🚀\" width=\"32\" height=\"32\"\u003e\n\t\u003c/picture\u003e\n\t\u003cpicture\u003e\n  \t\t\u003csource srcset=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f6a7/512.webp\" type=\"image/webp\"\u003e\n \t\t\u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f6a7/512.gif\" alt=\"🚧\" width=\"32\" height=\"32\"\u003e\n\t\u003c/picture\u003e\n\u003c/p\u003e\n\n| [🌍 Live Server](https://kener.ing) | [🎉 Quick Start](https://kener.ing/docs/v4/getting-started/quick-start) | [🗄 Documentation](https://kener.ing/docs/v4/getting-started/introduction) |\n| ----------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------- |\n\n\u003cp align=\"center\"\u003e\n\n[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/spSvic?referralCode=1Pn7vs\u0026utm_medium=integration\u0026utm_source=template\u0026utm_campaign=generic)\n[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/1YRTMI?referralCode=rajnandan1)\n[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https%3A%2F%2Fgithub.com%2Frajnandan1%2Fkener)\n\n\u003c/p\u003e\n\n## What is Kener?\n\n**Kener** 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### Why Kener?\n\n✅ \u0026nbsp;Minimal overhead \u0026ndash; Set up quickly with a clean, modern UI\u003cbr\u003e\n✅ \u0026nbsp;Customizable \u0026ndash; Easily tailor it to match your brand\u003cbr\u003e\n✅ \u0026nbsp;Open-source \u0026 free \u0026ndash; Because great tools should be accessible to everyone\n\n### What's in a Name?\n\n“Kener” is inspired by the Assamese word _“Kene”_, meaning _“how’s it going?”_. The _‘.ing’_ was added because, well… that domain was available. 😄\n\n## Quick Start\n\nGet Kener running in minutes.\n\n### Docker (recommended)\n\n```bash\ngit clone https://github.com/rajnandan1/kener.git\ncd kener\n\n# Uses docker-compose.yml (includes Redis + Kener)\n# Set a strong KENER_SECRET_KEY and ORIGIN in docker-compose.yml before first run\ndocker compose up -d\n```\n\nOpen `http://localhost:3000`.\n\n\u003e [!IMPORTANT]\n\u003e Set a strong `KENER_SECRET_KEY` and set `ORIGIN` to your public URL before starting for the first time.\n\nUse `docker-compose.dev.yml` when you want to build from local source instead of pulling the published image:\n\n```bash\ndocker compose -f docker-compose.dev.yml up -d --build\n```\n\nOr combine both files to keep base production config while overriding Kener with a local build:\n\n```bash\ndocker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build\n```\n\n### Run pre-built image\n\nYou can use either image:\n\n- `docker.io/rajnandan1/kener:latest`\n- `ghcr.io/rajnandan1/kener:latest`\n\nFor subpath deployments (`/status`), use:\n\n- `docker.io/rajnandan1/kener:latest-status`\n- `docker.io/rajnandan1/kener:latest-status-alpine`\n- `ghcr.io/rajnandan1/kener:latest-status`\n- `ghcr.io/rajnandan1/kener:latest-status-alpine`\n\n```bash\nmkdir -p database\ndocker run -d \\\n\t--name kener \\\n\t-p 3000:3000 \\\n\t-v \"$(pwd)/database:/app/database\" \\\n\t-e \"KENER_SECRET_KEY=replace_with_a_random_string\" \\\n\t-e \"ORIGIN=http://localhost:3000\" \\\n\t-e \"REDIS_URL=redis://host.docker.internal:6379\" \\\n\tdocker.io/rajnandan1/kener:latest\n```\n\n### Run pre-built subpath image (`/status`)\n\n```bash\nmkdir -p database\ndocker run -d \\\n\t--name kener-status \\\n\t-p 3000:3000 \\\n\t-v \"$(pwd)/database:/app/database\" \\\n\t-e \"KENER_SECRET_KEY=replace_with_a_random_string\" \\\n\t-e \"ORIGIN=http://localhost:3000\" \\\n\t-e \"KENER_BASE_PATH=/status\" \\\n\t-e \"REDIS_URL=redis://host.docker.internal:6379\" \\\n\tdocker.io/rajnandan1/kener:latest-status\n```\n\n\u003e [!NOTE]\n\u003e For subpath mode, keep `ORIGIN` as the site origin (`http://localhost:3000`), not `http://localhost:3000/status`.\n\n### Run without Docker\n\nRequirements:\n\n- Node.js `\u003e= 20`\n- Redis\n\n```bash\ngit clone https://github.com/rajnandan1/kener.git\ncd kener\nnpm install\n\n# Start Redis (example)\ndocker run -d --name kener-redis -p 6379:6379 redis:7-alpine\n\nnpm run build\nnpm run start\n```\n\nCreate a `.env` with at least:\n\n```dotenv\nKENER_SECRET_KEY=replace_with_a_random_string\nORIGIN=http://localhost:3000\nREDIS_URL=redis://localhost:6379\nPORT=3000\n```\n\nFor the full quick start (including local Docker builds and dev mode), see the docs:\n\n- https://kener.ing/docs/v4/getting-started/quick-start\n\n## Features\n\nKener combines public status page essentials with advanced admin workflows.\n\n### 📊 \u0026nbsp;Monitoring, Reliability, and Communication\n\n- Monitor **API, Ping, TCP, DNS, SSL, SQL, Heartbeat, and GameDig** checks\n- Manage incidents with clear timelines, updates, and acknowledgements\n- Schedule maintenance windows and keep users informed throughout\n- Send notifications via **Email, Webhook, Slack, and Discord**\n- Explore historical monitoring data and uptime trends\n\n### 🎨 \u0026nbsp;Status Page Experience and Branding\n\n- Build branded, customizable status pages (logo, colors, CSS, themes)\n- Support **light/dark mode**, localization, and timezone-aware display\n- Embed status widgets and badges into external sites and portals\n- Provide SEO-friendly public pages for global audiences\n\n### 🛠️ \u0026nbsp;Operations, Collaboration, and Automation\n\n- Invite teams with role-based collaboration across workflows\n- Manage multiple status pages from one Kener instance\n- Use trigger-based workflows and template-driven messaging\n- Manage API keys for secure integrations and automations\n- Integrate analytics providers like GA, Plausible, Mixpanel, Umami, and Clarity\n- Access the full REST API for incidents, monitors, and reporting\n\n## Technologies Used\n\n- [SvelteKit](https://kit.svelte.dev/)\n- [shadcn-svelte](https://www.shadcn-svelte.com/)\n\n## Support Me\n\nIf you’re enjoying Kener and want to support its development, consider sponsoring me on GitHub or treating me to a coffee. Your support helps keep the project growing! 🚀\n\n- [Sponsor Me Using GitHub](https://github.com/sponsors/rajnandan1)\n\n- [Buy Me a Coffee](https://www.buymeacoffee.com/rajnandan1)\n\n## Contributing\n\nIf you want to contribute to Kener, please read the [Contribution Guide](https://github.com/rajnandan1/kener/blob/main/.github/CONTRIBUTING.md).\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=rajnandan1/kener\u0026type=Date)](https://star-history.com/#rajnandan1/kener\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajnandan1%2Fkener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajnandan1%2Fkener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajnandan1%2Fkener/lists"}