Back

Self-Host Guide

Deploy Kageos on your own Linux server. Your data stays on your machine.

Prerequisites

  • Linux server with sudo/root access (Ubuntu, Debian, Rocky, Fedora, or similar)
  • Public IP or domain name for the instance URL
  • Minimum 4 GB RAM, 20 GB disk
  • Port 80 available, or pass --http-port

One-Command Install

The hosted installer prepares the server, checks out Kageos, and starts production services.

View install.sh
# Domain or HTTPS endpoint
$ curl -fsSL https://kageos.com/install.sh | sudo bash -s -- \
--base-url https://your-domain.com

The installer installs host basics where possible, installs Go 1.25 if needed, prepares Podman/Docker Compose, clones Kageos into /opt/kageos, creates production config, and starts MySQL, NATS, MinIO, Nginx, and platform services.

Auditable Install

# Download, inspect, then run
$ curl -fsSLO https://kageos.com/install.sh
$ less install.sh
$ sudo bash install.sh --base-url https://your-domain.com

Use this path for security review, enterprise environments, or any server where you want to read the bootstrapper before execution.

Common Install Modes

# Quick HTTP trial by IP
$ curl -fsSL https://kageos.com/install.sh | sudo bash -s -- --base-url http://your-server-ip --tls-mode http
# Behind Cloudflare, a load balancer, or another HTTPS proxy
$ curl -fsSL https://kageos.com/install.sh | sudo bash -s -- --base-url https://app.example.com --tls-mode external
# Custom HTTP port
$ curl -fsSL https://kageos.com/install.sh | sudo bash -s -- --base-url http://your-server-ip:8080 --http-port 8080

Use --tls-mode external when HTTPS terminates before Kageos. Use --tls-mode http for an internal or temporary HTTP deployment.

What Gets Deployed

L1
Infrastructure
MySQL, NATS, MinIO containers
L2
Gateway
Nginx, TLS termination, static frontend
L3
Platform Services
9 microservices in one core-server process
L4
App Runtime
Podman API, app container lifecycle management
L5
User Apps
Generated apps run in isolated Podman containers

Common Commands

# Check status
$ cd /opt/kageos && go run ./cmd/kagectl status
# View logs
$ cd /opt/kageos && tail -f .kageos/prod/kagectl-up.log
# Stop
$ cd /opt/kageos && go run ./cmd/kagectl down
# Upgrade
$ curl -fsSL https://kageos.com/install.sh | sudo bash -s -- --base-url https://your-domain.com

Need help?

Check the full documentation or open an issue on GitHub.