Skip to main content

Simple PaaS - Deploy and manage web applications on a single server

Project description

hop3-server

Core server for the Hop3 Platform-as-a-Service.

Overview

hop3-server is the central orchestrator that handles application deployments, process management, reverse proxy configuration, and addon services. It provides a JSON-RPC API for communication with hop3-cli and hop3-tui.

Features

  • Git-push deployments - Deploy applications via git push
  • Automatic build system - Detects language (Python, Node, Ruby, Go, Rust, etc.) and builds automatically
  • Process management - Manages app processes based on Procfile via uWSGI
  • Reverse proxy - Nginx/Caddy/Traefik with automatic SSL certificates
  • Addon services - PostgreSQL, MySQL, Redis management
  • Plugin architecture - Extensible via pluggy-based plugins
  • JSON-RPC API - For CLI and TUI communication

Installation

For development

# From workspace root
cd packages/hop3-server
uv pip install -e ".[dev]"

Production installation

Use hop3-installer:

curl -LsSf https://hop3.cloud/install-server.py | sudo python3 -

Quick Start

# Run the server
hop3-server serve

# Run with specific host/port
hop3-server serve --host 0.0.0.0 --port 8000

Architecture

hop3-server/
├── src/hop3/
│   ├── server/              # Litestar ASGI application
│   │   ├── asgi.py          # App factory
│   │   ├── controllers/     # API endpoints
│   │   └── security/        # Authentication
│   ├── commands/            # RPC command handlers
│   ├── deployers/           # Deployment orchestration
│   ├── orm/                 # SQLAlchemy models (App, EnvVar)
│   ├── plugins/             # Plugin system
│   │   ├── build/           # Builders, language toolchains
│   │   ├── deploy/          # Deployers (uWSGI, static)
│   │   ├── proxy/           # Nginx, Caddy, Traefik
│   │   ├── oses/            # OS implementations
│   │   ├── postgresql/      # PostgreSQL addon
│   │   ├── mysql/           # MySQL addon
│   │   └── redis/           # Redis addon
│   ├── core/                # Core abstractions
│   │   ├── protocols.py     # Plugin protocols
│   │   ├── hookspecs.py     # Hook specifications
│   │   └── plugins.py       # Plugin manager
│   ├── toolchains/          # Language toolchains
│   ├── run/                 # Runtime process management
│   └── project/             # Procfile parsing
└── tests/
    ├── a_unit/              # Unit tests
    ├── b_integration/       # Integration tests
    ├── c_system/            # System tests
    └── d_e2e/               # End-to-end tests

Deployment Flow

git push → Git hook → Deployer → Builder → Language Toolchain → uWSGI config → Nginx config

Filesystem Layout

/home/hop3/
├── apps/<app_name>/
│   ├── git/           # Bare git repository
│   ├── src/           # Checked-out source code
│   ├── data/          # Persistent data
│   ├── log/           # Log files
│   └── venv/          # Python virtualenv (if applicable)
├── nginx/             # Nginx configs and certs
├── uwsgi-available/   # uWSGI configs
├── uwsgi-enabled/     # Active uWSGI configs (symlinks)
└── hop3.db            # SQLite database

Configuration

Server configuration via environment variables or /etc/hop3/config.toml:

Variable Description Default
HOP3_HOME Home directory /home/hop3
HOP3_DATABASE_URL Database URL sqlite:///hop3.db
HOP3_SECRET_KEY JWT signing key (required)

Development

Running tests

# Unit tests
uv run pytest tests/a_unit/ -v

# Integration tests
uv run pytest -n 4 tests/b_integration/ -v

# System tests (requires Docker)
uv run pytest tests/c_system/ -v

# E2E tests (slow)
uv run pytest tests/d_e2e/ -v

Code quality

uv run ruff check src/
uv run ruff format src/
uv run pyright src/

Plugin Development

See Plugin Development Guide for creating:

  • Language toolchains (new language support)
  • Addons (new backing services)
  • Deployers (new runtime strategies)
  • Proxies (new reverse proxy support)

Documentation

Related Packages

License

Apache-2.0 - Copyright (c) 2024-2025, Abilian SAS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hop3_server-0.4.0b1.tar.gz (276.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hop3_server-0.4.0b1-py3-none-any.whl (386.6 kB view details)

Uploaded Python 3

File details

Details for the file hop3_server-0.4.0b1.tar.gz.

File metadata

  • Download URL: hop3_server-0.4.0b1.tar.gz
  • Upload date:
  • Size: 276.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hop3_server-0.4.0b1.tar.gz
Algorithm Hash digest
SHA256 d8c84095a0d11890ae5516c4a8689fef5395e908150db2b84f21125569cf0e18
MD5 0e4b42b2bbd5d73f6c052ebd97e409e7
BLAKE2b-256 c837149dfab6b23a445f17b5e4a67928d6061d97047e755527e4803648fba93e

See more details on using hashes here.

File details

Details for the file hop3_server-0.4.0b1-py3-none-any.whl.

File metadata

  • Download URL: hop3_server-0.4.0b1-py3-none-any.whl
  • Upload date:
  • Size: 386.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hop3_server-0.4.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 a73b9ab7730484fe8e482a2736cd496e45b3b8f7da2080f6d1006b2031afea8c
MD5 25077cbc454a1ec559c173418be0d112
BLAKE2b-256 c6d836436211a2c386f0410d2913b8e0821a409dfb9ae6105975871114bf6172

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page