Simple PaaS - Deploy and manage web applications on a single server
Project description
Hop3 - Deploy and manage web applications on a single server
About
Hop3 is a tool to deploy and manage web applications on a single server (currently). It is designed to be simple, secure, and easy to use.
The project is hosted on both SourceHut and GitHub.
[!WARNING] This code is still evolving quickly, and not meant for production yet.
Overview
Hop3 is an open-source platform aimed at enhancing cloud computing with a focus on sovereignty, security, sustainability, and inclusivity.
It is designed to facilitate access to cloud technologies for a wide range of users, including small and medium-sized enterprises (SMEs), non-profits, public services, and individual developers. By leveraging existing, robust web, cloud and open source technologies, Hop3 enables these groups to deploy and manage web applications efficiently and securely.
Key Features
- Sovereignty: Empowers users to maintain control over their data and infrastructure, aiming to reduce reliance on centralized cloud services.
- Security and Privacy: Adopts a secure-by-design approach, integrating advanced security measures and ensuring compliance with privacy regulations like GDPR.
- Environmental Sustainability: Incorporates eco-design principles to reduce the environmental footprint of cloud computing, advocating for sustainable digital practices.
- Openness and Collaboration: Developed as an open-source project to encourage community-driven innovation and improvement.
- Inclusivity and Accessibility: Ensures the platform is accessible to a diverse audience, including those with different abilities, through comprehensive documentation and support.
Technology Stack
Hop3's technology stack is carefully chosen to support its goals without relying on conventional containerization tools like Docker or Kubernetes. Instead, it focuses on alternative, lightweight solutions that align with the project's principles of efficiency and sovereignty. The stack includes:
- Lightweight Isolation: Utilizes lean isolation technologies to ensure efficient resource use.
- Decentralized Architecture: Employs a decentralized model for data storage and processing to enhance sovereignty and resilience.
- Security Tools: Incorporates a suite of security tools designed for continuous monitoring and proactive threat mitigation.
- Energy-Efficient Computing: Adopts strategies and technologies aimed at minimizing energy consumption across all operations.
- Open Standards and Protocols: Committed to open standards to ensure interoperability and prevent vendor lock-in.
Getting Started
To begin using Hop3, follow these introductory steps:
-
Prerequisites: Familiarize yourself with basic cloud computing concepts and the specific technologies Hop3 employs for virtualization and security.
-
Installation:
- Clone the latest version of Hop3 from the official repository:
git clone https://github.com/abilian/hop3.git
- Follow the installation instructions in the
docs/installation.md
to set up Hop3 on your system.
- Clone the latest version of Hop3 from the official repository:
-
Configuration: Configuration options can be found in the
config
directory. Adjust these settings to suit your environment and deployment needs. -
Documentation: For detailed information on setup, architecture, and usage, refer to the
docs
folder. This resource includes comprehensive guides and best practices.
Contributing
Contributions to Hop3 are highly encouraged, whether it involves fixing bugs, adding features, or enhancing documentation. Please refer to the files below for contribution guidelines.
Key documents:
Note on Development Environment
To develop Hop3, you will need to set up a Python development environment (tested under various variants of Linux, and MacOS). The project uses Python 3.10+ and Poetry for environment and dependency management. We assume you are already familiar with these prerequisites.
Additional notes:
- Under NixOS or if using Nix, you can use the provided
shell.nix
file to set up a development environment. - We use
nox
for test automation. You can runnox
to run all tests, ornox -l
to list available sessions. - We use
abilian-devtools
for various development tasks. This includesmake
targets for common tasks, such as running tests, formatting code, and checking for typing issues. You can runmake help
to see a list of the main available targets.
Support and Community
Engage with the Hop3 community:
- GitHub Issues: For bug reports and feature suggestions.
The following tools will soon be available:
-
Community Forums/Discussion Boards: For discussions, questions, and community support.
-
Mailing List: Subscribe to receive updates, announcements, and participate in discussions.
Roadmap
Here's the current roadmap for Hop3. Priorities and timelines are subject to change based on community feedback, business priorities and funding.
P0 (MVP, Q2 2024):
Initial goal: just enough to deploy Abilian SBE.
Features, UX:
- First working version (static sites, python apps, demo apps)
- Deploy a few more useful apps: Abilian SBE, more...
- Add postgres, redis, etc. lifecycle support using plugins
Doc:
- Fix REUSE config
- Basic Documentation / READMEs / etc.
Infra, QA, DX, refactorings:
- Add e2e tests (
make test-e2e
) - Basic tests and sample apps
- Basic CI (on SourceHut)
- Basic plugin architecture (using, e.g. pluggy)
- Nix dev env (support for
nix-shell
) - Test automation (using
nox
) - Fix all typing issues (mypy and pyright)
- Make src/hop3/run/uwsgi.py into a class
- Split class Deployer. Introduce "DeployStep" and "DeployContext" classes.
P1 (Q3 2024):
Features:
- More apps
- Review / improve CLI DX
- Improve Python builder (support for poetry, pipenv, etc.)
- Manage external services (databases, mail, etc.)
- Backup / Restore
- Web App / portal
Infra, refactorings:
- Introduce new plugins (where it makes sense)
- More end-to-end tests, examples
- CI on GitHub
- e2e CI tests
P2 (Q4 2024):
- More apps
- Target other platforms (e.g. SlapOS, NixOS, Guix, etc.)
- Security (Firewall, WAF, better isolation, etc.)
- Monitoring
- (Pluggable) Alternatives to uWSGI, NGINX, ACME, etc.
- Support for (or migration from) Heroku, Render, Docker Compose, Fly… config files,
P3 (S1 2025):
- More apps
- Multi-server support
- Unified logging
- Unified login (LDAP / IAM)
- Container / VM support
Documentation
See the docs directory for detailed information on Hop3's architecture, installation, and usage.
Will soon be deployed at https://doc.hop3.cloud.
Copyright, Credits and Acknowledgements
Authors
Hop3 contains code from Piku, which shares some of the goals of Hop3 / Nua but also has some significant differences in goals and principles, as well as in architecture (Hop3 is modular and pugin-based, Piku is a single-file script).
Hop3 also contains code from Nua, written by the Abilian development team, and contributors. The two projects share most goals and principles, except Nua is based on containers and Hop3 is not. The two projects may ultimately merge in the future (or not).
Other inspirations include:
The following people have contributed to Hop3:
-
Stefane Fermigier has created and maintains Nua and Hop3.
-
Jérôme Dumonteil has contributed to and maintans Nua.
-
Rui Carmo (and other Piku contributors) for the original Piku.
-
Abilian is the company behind Nua and Hop3.
Licensing / REUSE Compliance
Hop3 is licensed under the AGPL-3.0 License, except for vendored code. See the LICENSE file for more information.
- Bad licenses: 0
- Deprecated licenses: 0
- Licenses without file extension: 0
- Missing licenses: 0
- Unused licenses: 0
- Used licenses: AGPL-3.0-only, CC0-1.0, MIT, CC-BY-4.0
- Read errors: 0
- files with copyright information: 125 / 125
- files with license information: 125 / 125
Congratulations! Your project is compliant with version 3.0 of the REUSE Specification :-)
What's the story behind the name?
"Hop3" (or more precisely "Hop^3" or "Hop cubed") is a pun on "Hop, hop, hop!" which is a French expression used to encourage quick action or to hurry someone up. It's akin to saying "Let's go!" or "Hurry up!" in English. It can also convey a sense of enthusiasm or encouragement to get moving or to proceed with something. It generally carries a light, motivating tone.
Links / References
- Hop3 on PyPI
- Hop3 on GitHub
- Hop3 on SourceHut (mirror)
- Nua (Hop3's predecessor)
- Piku (Hop3's inspiration)
- Sailor (Another fork of Piku)
- Abilian (Hop3's sponsor / buy support from us)
- Abilian SBE (One of the applications that can be deployed with Hop3 - Soon)
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
Built Distribution
File details
Details for the file hop3-0.2.2.tar.gz
.
File metadata
- Download URL: hop3-0.2.2.tar.gz
- Upload date:
- Size: 75.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64d645a311b94a07f41e713661aacbfdb38745255ed43cac307db48448b4d030 |
|
MD5 | a5ba1b40c273785f796efe2885f20c35 |
|
BLAKE2b-256 | 24c6698102d216cf7b84b2a320620aa99cf0a129e9021ac082ad0276042a61c3 |
File details
Details for the file hop3-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: hop3-0.2.2-py3-none-any.whl
- Upload date:
- Size: 117.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fccad22488fdf9341a32d00058f8b234a20e1b5e2683a12c979b288f553cf71f |
|
MD5 | fafb3e65e2561e292cfccf449b7c3116 |
|
BLAKE2b-256 | 93da5c6e0e9998d6c459c1e70593dcfae12fa60d8eb5930fa8f661b7d01a12d9 |