kubero Documentation

A free and self-hosted PaaS alternative to Heroku / Netlify / Coolify / Vercel / Dokku / Portainer running on Kubernetes

4,443 stars TypeScript TypeScript 4 files Β· ~4,257 tokens #ci-cd#cloud#coolify#developer-tools#dokku#gitops#hacktoberfest#heroku
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy kubero on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name kubero -p 8000:8000 --restart always gitea/gitea:latest
Configured Services & Ports
βš™οΈ kubero
image: build locally
πŸ”Œ Ports: 8000:2000
βš™οΈ gitea
image: gitea/gitea:latest
πŸ”Œ Ports: 3000:3000, 222:22
βš™οΈ gitlab
image: gitlab/gitlab-ee:latest
πŸ”Œ Ports: 3080:80, 3443:443, 3022:22
βš™οΈ gogs
image: gogs/gogs:latest
πŸ”Œ Ports: 3000:3000, 22:22
docker-compose.yml
yaml (docker-compose.yml)
version: "3.9"
services:
  kubero:
    container_name: "kubero"
    build: .
    #command: ["tail", "-f", "/dev/null"] # for debugging
    env_file:
      - server/.env
    environment:
      - KUBERO_CONTEXT=kind-kubero-001 # make sure you use the context name from your mounted kubeconfig
    ports:
      - "8000:2000"
    extra_hosts:
      - "kubero-001-control-plane:192.168.65.2" # make sure you use the container name from your local kind cluster control plane
    volumes:
      #- .:/app
      - ./kubeconfig-docker:/app/server/kubeconfig # change the port 6443 to the outside port of your local kind cluster control plane
      - ./server/config.yaml:/app/server/config.yaml
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./.dockerdata/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
  gitlab:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: 'gitlab.lacolhost.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.lacolhost.com'
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '3080:80'
      - '3443:443'
      - '3022:22'
    volumes:
      - './.dockerdata/gitlab/config:/etc/gitlab'
      - './.dockerdata/gitlab/logs:/var/log/gitlab'
      - './.dockerdata/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'

  gogs:
    image: gogs/gogs:latest
    container_name: gogs
    hostname: 'localhost'
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./.dockerdata/gogs:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "22:22"

Technical Documentation: kubero-dev/kubero

ℹ️ Provenance: Multi-Tier Ingestion Β· CodeWiki Reference

Overview (`README.md`)






δΈ­ζ–‡ηΏ»θ―‘

ζ—₯本θͺžθ¨³

Kubero [pronounced: Kube Hero] is a self-hosted PaaS (Platform as a Service) that allows any developer to deploy their application on Kubernetes without specialized knowledge. Kubero follows the principles of 12-factor apps. It is possible to run apps based on existing containers or from source code.

More Screenshots and a full video on
YouTube

Features ([DEMO](https://demo.kubero.dev))

  • Docker Deployments Deploy Docker containers on Kubernetes without needing Helm charts.
  • App Templates (+160) Deploy popular applications like WordPress and Grafana with ready-to-use templates.
  • CI/CD Pipelines Create unlimited pipelines with up to 4 separate staging environments for all your applications.
  • GitOps Review Apps Automatically build, start, and clean up review apps when opening or closing pull requests.
  • Automatic Redeployments Trigger app redeployments on pushes to branches or tags.
  • Add-ons Integration Seamlessly deploy add-ons such as PostgreSQL and Redis alongside your applications.
  • API & CLI Integrate seamlessly with existing tools and CI/CD workflows.
  • Metrics & Monitoring Access integrated metrics to monitor application health.
  • Notifications Get build and deployment updates via Discord, Slack, or Webhooks.
  • Vulnerability Scans Perform scheduled or triggered scans for running applications.
  • Application Logs View logs directly from the web UI for easy monitoring.
  • Safe Restarts Restart applications safely and easily through the web UI.
  • Web Console Use the built-in container web console for direct access.
  • Scheduled Tasks Easily create and manage cronjobs.
  • Multi-Tenancy Support for managing multiple tenants.
  • Single Sign-On (SSO) Authenticate securely with GitHub and OAuth2.
  • Basic Auth Configure Basic Auth for your applications with ease.

Basic Concept

Kubero is Kubernetes native and runs with two containers on any Kubernetes instance (kubero-ui and Operator). All data is stored on your Kubernetes etcd without an extra database.

Add-ons

Addon Maintainer Built in*
MySQL groundhog2k βœ…
PostgreSQL groundhog2k βœ…
Redis groundhog2k βœ…
MongoDB groundhog2k βœ…
RabbitMQ groundhog2k βœ…
CouchDB Apache βœ…
Haraka Mail Server Kubero βœ…
MySQL Bitnami ⚠️ (deprecated)
PostgreSQL Bitnami ⚠️ (deprecated)
Redis Bitnami ⚠️ (deprecated)
MongoDB Bitnami ⚠️ (deprecated)
Elasticsearch Bitnami ⚠️ (deprecated)
Kafka Bitnami ⚠️ (deprecated)
Memcache Bitnami ⚠️ (deprecated)
RabbitMQ Bitnami ⚠️ (deprecated)
PostgreSQL HA CloudNative
Cludflare Tunnels Adianth
Minio Minio
Percona MongoDB Cluster Percona
Crunchy Postgres Cluster Crunchy Data
Redis Cluster Opstree
CockroachDB CockroachDB
Clickhouse Altinity

* These add-ons are shipped with the Kubero Operator. They are not High Availability (HA) ready but greate to to get you started as fast as possible.

** All Bitnami add-ons are deprecated and will be removed in future releases due to Broadcom's image repository removal. read more here

164+ Application templates (similar to Heroku Buttons)

Check out the full list here or submit your own app! Read here how to do it.

Quickstart

1) Download and unpack the Kubero CLI (MacOS, Linux, Windows)

Binaries (MacOS, Linux)

bash
$ curl -fsSL get.kubero.dev | bash

Brew (MacOS, Linux)

bash
$ brew tap kubero-dev/kubero
$ brew install kubero-cli

2) Run kubero install to install all components on a new or your existing cluster

You can bring your own existing cluster or create one with the kubero install on one of the following providers:

  • GKE
  • Scaleway
  • DigitalOcean
  • Linode
  • Kind (local)

Supported GIT repositories (hosted and self-hosted)

  • Gitea / Forgejo
  • Gogs
  • Github
  • Gitlab
  • Bitbucket

Tested languages/frameworks

Basically everything that can be packaged in a single container can be deployed by Kubero.

  • GoLang (including Hugo, gin-gonic)
  • Python (including Flask)
  • JavaScript/NodeJS
  • PHP (including Laravel)
  • Ruby (including Rails)
  • Static HTML
  • Rust (including Rocket)
  • ...

How GitOps Works

  1. Create a pipeline with the phases you need (review, test, stage, production)
  2. (optional) Connect the pipeline to your git repository (GitHub, Bitbucket, GiLab, Gitea, Gogs)
  3. Configure your apps with cronjobs and addons

Kubero starts now building your app. Once the build is complete, Kubero will launch the final container and make it accessible via the configured domain.

Techstack

Community

Contributing

All contributions are welcome!

  • Rise an issue/bug/error
  • Open a feature request
  • Discuss ideas in the discussions section or discord
  • Fix typos (I do a lot of them)
  • Contribute code
  • Write articles

Supporting this project

Starring this project is a huge motivation. ⭐ Thank you!


Overview (`client/README.md`)

base

Project setup

text
# yarn
yarn

# npm
npm install

# pnpm
pnpm install

# bun
bun install

Compiles and hot-reloads for development

text
# yarn
yarn dev

# npm
npm run dev

# pnpm
pnpm dev

# bun
pnpm run dev

Compiles and minifies for production

text
# yarn
yarn build

# npm
npm run build

# pnpm
pnpm build

# bun
pnpm run build

Lints and fixes files

text
# yarn
yarn lint

# npm
npm run lint

# pnpm
pnpm lint

# bun
pnpm run lint

Customize configuration

See Configuration Reference.


Overview (`server/README.md`)

Description

This is Kubero server part of the Kubero project. It is a NestJS application that provides REST API for the Kubero project. It is a part of the Kubero project that is a platform for managing Kubernetes clusters.

Project setup

bash
$ yarn install

Compile and run the project

bash
# development
$ yarn run start

# watch mode
$ yarn run start:dev

# production mode
$ yarn run start:prod

Administration Commands

bash
# Reset admin account (creates or updates with new password)
$ yarn cli:reset-admin

Run tests

bash
# unit tests
$ yarn run test

# e2e tests
$ yarn run test:e2e

# test coverage
$ yarn run test:cov

Resources

Check out a few resources that may come in handy when working with NestJS:

  • Visit the NestJS Documentation to learn more about the framework.
  • For questions and support, please visit our Discord channel.
  • To dive deeper and get more hands-on experience, check out our official video courses.
  • Deploy your application to AWS with the help of NestJS Mau in just a few clicks.
  • Visualize your application graph and interact with the NestJS application in real-time using NestJS Devtools.
  • Need help with your project (part-time to full-time)? Check out our official enterprise support.
  • To stay in the loop and get updates, follow us on X and LinkedIn.
  • Looking for a job, or have a job to offer? Check out our official Jobs board.

Overview (`services/README.md`)

Kubero Services

Services can be added to Kubero by creating a pull request to this repository.

Required qualifications to submit a service:

  • Single app container (not counting addons)
  • Publicly accessible Docker images
  • Maintained and documented (1 commit within the last 6 months)
  • Icon/Logo (square, max 300x300px)

How to add a new services

  1. Fork this repository
  2. Create a new folder with the name of your service
  3. Add a app.yaml and service.yaml
  4. Create a pull request

app.yaml

The app yaml that describes your service technically. You can use the following template to get started.
If you have a running instace of Kubero you can use the CLI to lookup the values for your service.

text
/* Detailed source-code truncated for AI context efficiency. */

--- METRICS ---