beadify


Namebeadify JSON
Version 0.0.6 PyPI version JSON
download
home_pagehttps://github.com/CodeLexis/beadify-cli
SummaryA lightweight, efficient tool tailored for hobbyists looking to deploy multiple applications on a single Ubuntu-based VPS (Virtual Private Server)
upload_time2024-11-24 13:28:32
maintainerNone
docs_urlNone
authorTomisin Abiodun
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements altgraph annotated-types bcrypt cffi click colorama cryptography cx_Freeze dmgbuild ds-store importlib_metadata mac-alias macholib Nuitka ordered-set packaging paramiko pycparser pydantic pydantic_core pyinstaller pyinstaller-hooks-contrib PyNaCl tomli typing_extensions zipp zstandard
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Beadify CLI

[![PyPI version](https://img.shields.io/pypi/v/beadify.svg)](https://pypi.org/project/beadify/)
![Python Versions](https://img.shields.io/pypi/pyversions/beadify.svg)
![PyPI - Downloads](https://img.shields.io/pypi/dm/beadify)
![License](https://img.shields.io/pypi/l/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[![PyPI version](https://img.shields.io/pypi/v/beadify.svg)](https://pypi.org/project/beadify/)\n![Python Versions](https://img.shields.io/pypi/pyversions/beadify.svg)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/beadify)\n![License](https://img.shields.io/pypi/l/beadify)\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"
}
        
Elapsed time: 0.33358s