Konarr

[![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)][github] [![Crates.io Version](https://img.shields.io/crates/v/konarr?style=for-the-badge)][crates-io] [![Crates.io Downloads (recent)](https://img.shields.io/crates/dr/konarr?style=for-the-badge)][crates-io] [![Docs.rs](https://img.shields.io/badge/docs.rs-konarr-66c2a5?style=for-the-badge)][docs] [![GitHub Stars](https://img.shields.io/github/stars/42ByteLabs/konarr?style=for-the-badge)][github] [![GitHub Issues](https://img.shields.io/github/issues/42ByteLabs/konarr?style=for-the-badge)][github-issues] [![Licence](https://img.shields.io/github/license/42ByteLabs/konarr?style=for-the-badge)][license] ⚠️ Work in progress and early stages of development ⚠️
## Overview [Konarr][konarr] is a simple, easy-to-use web interface for monitoring your servers, clusters, and containers supply chain for dependencies and vulnerabilities. It is designed to be lightweight and fast, with minimal resource usage. It is written in [Rust][rust-lang], uses [Rocker][rocket] for the web server, and [Vue.js](https://vuejs.org/) for the front-end.
Origin Story This project came out of the need to monitor my homelab for insecure dependencies / components. All the products that offer this are proprietary and cost money to use. [In December 2021, Log4Shell (CVE-2021-44228)](https://en.wikipedia.org/wiki/Log4Shell) came dropped and like most of the world I was running around trying to find if I had a service using it. Turned out I was but it was a painful process in finding if I was even using it. **Name Origin:** Konarr is from the name [Konar quo Maten](https://oldschool.runescape.wiki/w/Konar_quo_Maten) (translated as Konar the Hunter) from the game [Old School Runescape](https://oldschool.runescape.com/).
## 🖼️ Screenshots
![project-view](./assets/screenshots/projects-view.png) ![project-view-dark](./assets/screenshots/dark-mode.png)
More screenshots **Single Project Summary** ![server-view](./assets/screenshots/server-view.png) **Container Summary** ![container-view](./assets/screenshots/container-view.png) **Dependencies View** ![dependencies-view](./assets/screenshots/dependencies-view.png)
## ✨ Features - Simple, easy-to-use web interface - Blazing fast performance with minimal resource usage (written in [Rust][rust-lang] 🦀) - Real-time monitoring of your containers - Uses [Syft][syft] for image scanning (with more scanners to come) - Orchestration support - Docker / Podman - Docker Compose / Docker Swarm - 🚧 Kubernetes support is planned - Software Bill of Materials (SBOM) for your containers - 🚧 Supply chain attack monitoring ## 🚀 Quick Start This small script will install the Konarr server and agent on your machine using containers. ```bash curl https://raw.githubusercontent.com/42ByteLabs/konarr/refs/heads/main/install.sh | bash -s ``` ## 📚 Documentation
🚧 Work in progress 🚧
## 🛠️ Installation Konarr can be installed using Docker, Podman, or Cargo (native). ### Konarr using Compose When using Docker/Podman Compose, the Konarr server and agent will be installed on your machine using containers.
Cloning the repository ```bash # Clone the Konarr repository from GitHub git clone https://github.com/42ByteLabs/konarr.git && cd konarr # Update submodules git submodule update --init --recursive ```
**Starting the server and agent:** ```bash docker-compose up -d ``` ### 💻 Konarr Server The Konarr Server is the API and web interface that is used to monitor your containers. It can be installed using Docker/Podman or Cargo (native). #### Konarr Server using Docker ```bash docker run -it --rm \ -p 9000:9000 \ -v ./data:/data \ -v ./config:/config \ ghcr.io/42bytelabs/konarr:v0.1.0 ```
Description This command does the following: - `-it --rm` - This is a common set of flags to pass to `docker run`. The `-it` flag is short for `--interactive` and `--tty`, which tells Docker to open an interactive terminal inside the container. The `--rm` flag tells Docker to automatically remove the container when it stops running. - `-p 9000:9000` - This tells Docker to map port 9000 on the host machine to port 9000 on the container. This is the port that the Konarr server listens on by default. - `-v ./data:/data` - This tells Docker to mount the `./data` directory on the host machine to the `/data` directory on the container. This is where Konarr stores its data by default. - `-v ./config:/config` - This tells Docker to mount the `./config` directory on the host machine to the `/config` directory on the container. This is where Konarr looks for its configuration file by default. - `ghcr.io/42bytelabs/konarr:v0.1.0` - This is the name of the Docker image that we want to run. The `ghcr.io/42bytelabs/konarr` part is the name of the repository on GitHub Container Registry, and the `v0.1.0` part is the tag of the image that we want to run.
#### Install Server via Cargo The `konarr-server` can be installed using Cargo but it is not recommended for production use. ```bash cargo install konarr-server ``` ### 🕵️ Konarr Agent The Konarr Agent is the Konarr CLI that is used to monitor your containers. It is written in Rust and is available as a binary or as a Docker image. #### Running Agent in Docker ```bash docker run -it --rm \ -e KONARR_INSTANCE \ -e KONARR_AGENT_TOKEN \ -e KONARR_PROJECT_ID \ ghcr.io/42bytelabs/konarr-agent:v0.1.0 ``` #### Install Agent via Cargo The konarr-cli is a Rust binary that can be installed via Cargo. ```bash cargo install konarr-cli ``` ### From Source ```bash # Clone the Konarr repository from GitHub git clone https://github.com/42ByteLabs/konarr.git && cd konarr # Update submodules (client/frontend is a submodule) git submodule update --init --recursive # Build frontend cd client && npm install && npm run build && cd .. # Build and run server cargo run -p konarr-server --release -- -c ./konarr.yml ``` ## ❤️ Maintainers / Contributors
Mathew Payne
Mathew Payne

💻 👀
## 🦸 Support Please create [GitHub Issues][github-issues] if there are bugs or feature requests. This project uses [Semantic Versioning (v2)][semver] and with major releases, breaking changes will occur. ## 📓 License This project is licensed under the terms of the Apache2 open source license. Please refer to [Apache2][license] for the full terms. [license]: ./LICENSE [crates-io]: https://crates.io/crates/konarr [docs]: https://docs.rs/konarr/latest/konarr [semver]: https://semver.org/ [rust-lang]: https://www.rust-lang.org/ [rocket]: https://rocket.rs/ [konarr]: https://github.com/42ByteLabs/konarr [github]: https://github.com/42ByteLabs/konarr [github-issues]: https://github.com/42ByteLabs/konarr/issues [syft]: https://github.com/anchore/syft