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

Production

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

Development

pip install hop3-server

Quick Start

# Run the server
hop3-server serve

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

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)

Architecture

hop3-server/
├── src/hop3/
│   ├── server/           # Litestar ASGI application
│   │   ├── asgi.py       # App factory
│   │   └── controllers/  # API endpoints
│   ├── commands/         # RPC command handlers
│   ├── deployers/        # Deployment orchestration
│   ├── orm/              # SQLAlchemy models
│   ├── plugins/          # Plugin system
│   │   ├── build/        # Builders, language toolchains
│   │   ├── deploy/       # Deployers (uWSGI, static)
│   │   ├── proxy/        # Nginx, Caddy, Traefik
│   │   └── addons/       # PostgreSQL, MySQL, Redis
│   ├── core/             # Core abstractions
│   │   ├── protocols.py  # Plugin protocols
│   │   └── hookspecs.py  # Hook specifications
│   └── toolchains/       # Language toolchains
└── tests/
    ├── a_unit/           # Unit tests
    ├── b_integration/    # Integration tests
    ├── c_system/         # System tests
    └── d_e2e/            # End-to-end tests

Filesystem Layout

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

Development

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

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

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

# Lint and format
uv run ruff check src/
uv run ruff format src/

Documentation

Related Packages

License

Apache-2.0 - Copyright (c) 2024-2026, 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.0b4.tar.gz (310.5 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.0b4-py3-none-any.whl (428.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hop3_server-0.4.0b4.tar.gz
  • Upload date:
  • Size: 310.5 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.0b4.tar.gz
Algorithm Hash digest
SHA256 9cfbe55c4f935d0797b197d0a9cc54db839cf1c47b013d9db7ff5d08ef4f1c21
MD5 1752b6ec0bebd67d0a762ad7434cf793
BLAKE2b-256 319b3d6b97863744765780ea9eb560caf460223e97eab85bd4e90e71e9b6e914

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hop3_server-0.4.0b4-py3-none-any.whl
  • Upload date:
  • Size: 428.3 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.0b4-py3-none-any.whl
Algorithm Hash digest
SHA256 55d6cf007f47ea2b1c82885f54741bf00f9a56c1223af8aaf4c3a73b5ece52b4
MD5 cc07d794b7c563d1cfef3a1292588d66
BLAKE2b-256 25fc784b387448ca218160e1c28d9ad1eb5f4d478cfef2c0eb3c3fe9bdaff190

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