Skip to content

Levy-Y/KeyPortal

Repository files navigation

wakatime Quarkus RabbitMQ Postgres

Keyportal (Server)

Keyportal is a self-service SSH key management platform designed to automate and simplify key distribution in small to medium-sized organizations.

Overview

Keyportal automates the SSH key provisioning process, reducing the manual workload for system administrators. It enables users to request access and manage their keys through an intuitive interface, while admins retain full control and visibility.

Demo

Ui Demo video

Features

  • Server-rendered management panel for users and administrators
  • Agent-based key installation on remote servers
  • Live audit logging of actions and access
  • User-friendly request interface and key management UI

Tech Stack

  • Backend: Java (Quarkus)
  • Frontend: HTML, CSS, JavaScript
  • Database: PostgreSQL
  • Message Broker: RabbitMQ
  • Runners:
    • Agent: systemd service
    • Server: Docker container

Getting Started

Prerequisites

Ensure the following tools are installed:

  • git
  • make
  • docker

For Debian-based systems:

sudo apt-get install git make

For Docker, follow the official guide

Installation

  1. Clone the repository:
    git clone https://github.com/Levy-Y/KeyPortal
    cd KeyPortal
  2. Configure environment:
    Edit the .env file with your preferred credentials.
    nano .env
  3. Run the setup script:
    make setup
    (Note: This will prompt for your sudo password)

Usage

After setup completes successfully, the server will be running locally. You can now access the management panel in your browser at http://localhost:80/management/admin, or the key request page at http://localhost:80/

Configuration

Environment variables in .env control:

  • Database credentials and database name
  • RabbitMQ credentials

Add the server names in the docker-compose.yml file's keyportal service environment section that match the agent names you configured.
If you have not configured any agents yet, configure at least one according to the guide

Troubleshooting

Common issues:

  • Port conflicts: Ensure port 80 is available or modify the docker-compose.yml
  • Database errors: Verify PostgreSQL credentials in .env

API Documentation

The documentation can be found here

A system architecture diagram is available here to illustrate the key components and their interactions.

Roadmap / Future Improvements

  • Authentication for both admin and user sides.

  • Email notifications

License

This project is licensed under the AGPL-3.0 License.

Author

Levente Hagymási
GitHub: @Levy-Y
LinkedIn: in/leventehagymasi