# Beadify CLI
[](https://pypi.org/project/beadify/)



A deployment tool crafted for cost-saavy hobbyists, enabling the seamless deployment and serving of multiple lightweight applications from a single Ubuntu VPS (Virtual Private Server) powered by Nginx. This documentation guides you through transforming your VPS into a functional Platform-as-a-Service (PaaS) with minimal effort.
---
## Table of Contents
1. [Pre-requisites](#pre-requisites)
- [VPS](#vps)
- [Local Machine](#local-machine)
2. [Installation](#installation)
3. [Usage](#usage)
- [Commands Overview](#commands-overview)
- [Workflow](#workflow)
- [Initialize a Project](#initialize-a-project)
- [Specify the Target Machine](#specify-the-target-machine)
- [Deploy a Bead](#deploy-a-bead)
- [Run a Bead](#run-a-bead)
- [Apply SSL](#apply-ssl)
4. [Examples](#examples)
- [Initializing a Project](#1-initializing-a-project)
- [Setting Up the Target Host](#2-setting-up-the-target-host)
- [Deploying an Application](#3-deploying-an-application)
- [Running the Application](#4-running-the-application)
- [Setting Up HTTPS](#5-setting-up-https)
5. [Setup](#setup)
6. [Build](#build)
7. [Run](#run)
- [Source Mode](#source-mode)
- [Packaged Mode](#packaged-mode)
8. [Troubleshooting](#troubleshooting)
---
## Pre-requisites
### VPS
Currently, the following packages need to be pre-installed on the VPS:
1. Docker
2. Docker Compose
3. Nginx
> Support for automatically installing the required packages will be provided in the coming months.
### Local Machine
1. Python >= 3.9
## Installation
```bash
pip install beadify
```
## Usage
### Commands Overview
The Beadify CLI provides the following commands:
| Command | Description |
|-------------|-------------------------------------------------------|
| `init` | Initialize a project for deployment setup |
| `set-host` | Specify the target VPS for deploying the project |
| `deploy` | Deploy a bead (application) to the VPS |
| `run` | Run a deployed bead |
| `apply-ssl` | Apply SSL to the deployed application |
### Workflow
#### Initialize a Project
This command creates a manifest file in your project's directory, and sets up a new project for deployment.
```
beadify init --name <name_of_service>
```
- `--name`: (Required) The name of the service you are deploying.
#### Specify the Target Machine
Configures the target VPS for deployment.
```
beadify set-host --ip <ip_address> --ssh-key-file <path_to_ssh_key> --username <username>
```
- `--ip`: (Required) IP address of the target VPS.
- `--ssh-key-file`: (Required) Path to your SSH key file.
- `--username`: (Required) Username for SSH access.
#### Deploy a Bead
Deploys the specified bead (application) to the configured VPS.
```
beadify deploy [--domain-name <domain_name>] [--env-file <path_to_env_file>] [--image <docker_image>]
```
- `--domain-name`: (Optional) Domain name for the deployment. Required only once per project.
- `--env-file`: (Optional) Path to the environment variables file. Required only once per project.
- `--image`: (Optional) Docker image to deploy. Only required the first time. Required only once per project.
> You would need a domain name and a Docker image to deploy a bead
#### Run a Bead
Runs the deployed bead on the target VPS.
```
beadify run
```
- Starts the service on the configured VPS.
#### Apply SSL
Automatically applies an SSL certificate to your deployed application.
```
beadify apply-ssl
```
- This command uses Let's Encrypt to secure your application with HTTPS.
### Examples
#### 1. Initializing a Project
```
beadify init --name my_app
```
#### 2. Setting Up the Target Host
```
beadify set-host --ip 203.0.113.10 --ssh-key-file ~/.ssh/my-vps-ssh-file --username ubuntu
```
#### 3. Deploying an Application
```
beadify deploy --domain-name blog.example.com --env-file .env --image my_docker_image
```
#### 4. Running the Application
```
beadify run
```
#### 5. Setting Up HTTPS
```
beadify apply-ssl
```
## Setup
1. Install Python 3.9
2. Clone the repo
3. Navigate to the project's directory and create a virtualenv using: `python -m venv .venv && source .venv/bin/activate`
## Build
To build the Beadify CLI, run the following command in your terminal:
```bash
python setup.py build
```
This will create a bundled version of the CLI tool that can be used as a standalone executable.
## Run
### Source Mode
If you’re developing or testing the CLI, you can run it directly from the source using:
```bash
python -m src.cli {COMMAND} ...
```
This is ideal during development when the CLI is not yet packaged.
### Packaged Mode
Once the CLI is built and bundled, navigate to the directory of a project and:
```bash
/path/to/build/beadify {COMMAND}
```
## Troubleshooting
The Beadify CLI simplifies the process of deploying applications by automating configuration and deployment steps. Make sure to follow the instructions carefully to set up your environment correctly.
Note: Ensure that your VPS and container registry credentials are correctly set up before running the bead deploy command to avoid any authentication issues.
Raw data
{
"_id": null,
"home_page": "https://github.com/CodeLexis/beadify-cli",
"name": "beadify",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Tomisin Abiodun",
"author_email": "decave.12357@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c1/87/db7759a1a15c1898d7017d6de0498b260d9edb4d377a3b4eb2d31d8dbf60/beadify-0.0.6.tar.gz",
"platform": null,
"description": "# Beadify CLI\n\n[](https://pypi.org/project/beadify/)\n\n\n\n\nA deployment tool crafted for cost-saavy hobbyists, enabling the seamless deployment and serving of multiple lightweight applications from a single Ubuntu VPS (Virtual Private Server) powered by Nginx. This documentation guides you through transforming your VPS into a functional Platform-as-a-Service (PaaS) with minimal effort.\n\n\n---\n## Table of Contents\n1. [Pre-requisites](#pre-requisites)\n - [VPS](#vps)\n - [Local Machine](#local-machine)\n2. [Installation](#installation)\n3. [Usage](#usage)\n - [Commands Overview](#commands-overview)\n - [Workflow](#workflow)\n - [Initialize a Project](#initialize-a-project)\n - [Specify the Target Machine](#specify-the-target-machine)\n - [Deploy a Bead](#deploy-a-bead)\n - [Run a Bead](#run-a-bead)\n - [Apply SSL](#apply-ssl)\n4. [Examples](#examples)\n - [Initializing a Project](#1-initializing-a-project)\n - [Setting Up the Target Host](#2-setting-up-the-target-host)\n - [Deploying an Application](#3-deploying-an-application)\n - [Running the Application](#4-running-the-application)\n - [Setting Up HTTPS](#5-setting-up-https)\n5. [Setup](#setup)\n6. [Build](#build)\n7. [Run](#run)\n - [Source Mode](#source-mode)\n - [Packaged Mode](#packaged-mode)\n8. [Troubleshooting](#troubleshooting)\n---\n\n\n## Pre-requisites\n### VPS\nCurrently, the following packages need to be pre-installed on the VPS:\n1. Docker\n2. Docker Compose\n3. Nginx\n\n> Support for automatically installing the required packages will be provided in the coming months.\n\n### Local Machine\n1. Python >= 3.9\n\n## Installation\n```bash\npip install beadify\n```\n\n\n## Usage\n\n### Commands Overview\n\nThe Beadify CLI provides the following commands:\n\n| Command | Description |\n|-------------|-------------------------------------------------------|\n| `init` | Initialize a project for deployment setup |\n| `set-host` | Specify the target VPS for deploying the project |\n| `deploy` | Deploy a bead (application) to the VPS |\n| `run` | Run a deployed bead |\n| `apply-ssl` | Apply SSL to the deployed application |\n\n### Workflow\n#### Initialize a Project\nThis command creates a manifest file in your project's directory, and sets up a new project for deployment.\n\n```\nbeadify init --name <name_of_service>\n```\n\n- `--name`: (Required) The name of the service you are deploying.\n\n#### Specify the Target Machine\nConfigures the target VPS for deployment.\n\n```\nbeadify set-host --ip <ip_address> --ssh-key-file <path_to_ssh_key> --username <username>\n```\n\n- `--ip`: (Required) IP address of the target VPS. \n- `--ssh-key-file`: (Required) Path to your SSH key file. \n- `--username`: (Required) Username for SSH access.\n\n#### Deploy a Bead\nDeploys the specified bead (application) to the configured VPS.\n\n```\nbeadify deploy [--domain-name <domain_name>] [--env-file <path_to_env_file>] [--image <docker_image>]\n```\n\n- `--domain-name`: (Optional) Domain name for the deployment. Required only once per project.\n- `--env-file`: (Optional) Path to the environment variables file. Required only once per project.\n- `--image`: (Optional) Docker image to deploy. Only required the first time. Required only once per project.\n\n> You would need a domain name and a Docker image to deploy a bead\n\n#### Run a Bead\nRuns the deployed bead on the target VPS.\n\n```\nbeadify run\n```\n\n- Starts the service on the configured VPS.\n\n#### Apply SSL\nAutomatically applies an SSL certificate to your deployed application.\n\n```\nbeadify apply-ssl\n```\n\n- This command uses Let's Encrypt to secure your application with HTTPS.\n\n\n### Examples\n\n#### 1. Initializing a Project\n```\nbeadify init --name my_app\n```\n\n#### 2. Setting Up the Target Host\n```\nbeadify set-host --ip 203.0.113.10 --ssh-key-file ~/.ssh/my-vps-ssh-file --username ubuntu\n```\n\n#### 3. Deploying an Application\n```\nbeadify deploy --domain-name blog.example.com --env-file .env --image my_docker_image\n```\n\n#### 4. Running the Application\n```\nbeadify run\n```\n\n#### 5. Setting Up HTTPS\n```\nbeadify apply-ssl\n```\n\n## Setup\n1. Install Python 3.9\n2. Clone the repo\n3. Navigate to the project's directory and create a virtualenv using: `python -m venv .venv && source .venv/bin/activate`\n\n\n## Build\nTo build the Beadify CLI, run the following command in your terminal:\n```bash\npython setup.py build\n```\nThis will create a bundled version of the CLI tool that can be used as a standalone executable.\n\n\n## Run\n### Source Mode\nIf you\u2019re developing or testing the CLI, you can run it directly from the source using:\n```bash\npython -m src.cli {COMMAND} ...\n```\nThis is ideal during development when the CLI is not yet packaged.\n\n### Packaged Mode\nOnce the CLI is built and bundled, navigate to the directory of a project and:\n```bash\n/path/to/build/beadify {COMMAND}\n```\n\n\n## Troubleshooting\nThe Beadify CLI simplifies the process of deploying applications by automating configuration and deployment steps. Make sure to follow the instructions carefully to set up your environment correctly.\n\nNote: Ensure that your VPS and container registry credentials are correctly set up before running the bead deploy command to avoid any authentication issues.\n",
"bugtrack_url": null,
"license": null,
"summary": "A lightweight, efficient tool tailored for hobbyists looking to deploy multiple applications on a single Ubuntu-based VPS (Virtual Private Server)",
"version": "0.0.6",
"project_urls": {
"Homepage": "https://github.com/CodeLexis/beadify-cli"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2aec86db3262e9fed62e3bde67f963d25b4f4bc2e0399e943a8373b96095459f",
"md5": "6c9eab0e77256d991f3b12a32b5df84c",
"sha256": "97c0d2659f162fb2cba6a3066124ae174d7ca3ce9d15f3a009627bc8f8a11a19"
},
"downloads": -1,
"filename": "beadify-0.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6c9eab0e77256d991f3b12a32b5df84c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 10620,
"upload_time": "2024-11-24T13:28:31",
"upload_time_iso_8601": "2024-11-24T13:28:31.370792Z",
"url": "https://files.pythonhosted.org/packages/2a/ec/86db3262e9fed62e3bde67f963d25b4f4bc2e0399e943a8373b96095459f/beadify-0.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c187db7759a1a15c1898d7017d6de0498b260d9edb4d377a3b4eb2d31d8dbf60",
"md5": "aab2b19e1f739623b34d8e428e937d40",
"sha256": "5056332afc734d38efab81aa92c29d927fa203ae5a1d14247f717d1009374144"
},
"downloads": -1,
"filename": "beadify-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "aab2b19e1f739623b34d8e428e937d40",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8844,
"upload_time": "2024-11-24T13:28:32",
"upload_time_iso_8601": "2024-11-24T13:28:32.273922Z",
"url": "https://files.pythonhosted.org/packages/c1/87/db7759a1a15c1898d7017d6de0498b260d9edb4d377a3b4eb2d31d8dbf60/beadify-0.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-24 13:28:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CodeLexis",
"github_project": "beadify-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "altgraph",
"specs": [
[
"==",
"0.17.4"
]
]
},
{
"name": "annotated-types",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "bcrypt",
"specs": [
[
"==",
"4.2.0"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.17.1"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.7"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "cryptography",
"specs": [
[
"==",
"43.0.3"
]
]
},
{
"name": "cx_Freeze",
"specs": [
[
"==",
"7.2.3"
]
]
},
{
"name": "dmgbuild",
"specs": [
[
"==",
"1.6.2"
]
]
},
{
"name": "ds-store",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "importlib_metadata",
"specs": [
[
"==",
"8.5.0"
]
]
},
{
"name": "mac-alias",
"specs": [
[
"==",
"2.2.2"
]
]
},
{
"name": "macholib",
"specs": [
[
"==",
"1.16.3"
]
]
},
{
"name": "Nuitka",
"specs": [
[
"==",
"2.4.8"
]
]
},
{
"name": "ordered-set",
"specs": [
[
"==",
"4.1.0"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"24.1"
]
]
},
{
"name": "paramiko",
"specs": [
[
"==",
"3.5.0"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.22"
]
]
},
{
"name": "pydantic",
"specs": [
[
"==",
"2.9.2"
]
]
},
{
"name": "pydantic_core",
"specs": [
[
"==",
"2.23.4"
]
]
},
{
"name": "pyinstaller",
"specs": [
[
"==",
"6.10.0"
]
]
},
{
"name": "pyinstaller-hooks-contrib",
"specs": [
[
"==",
"2024.8"
]
]
},
{
"name": "PyNaCl",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "tomli",
"specs": [
[
"==",
"2.0.2"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "zipp",
"specs": [
[
"==",
"3.20.2"
]
]
},
{
"name": "zstandard",
"specs": [
[
"==",
"0.23.0"
]
]
}
],
"lcname": "beadify"
}