# fujin
> [!IMPORTANT]
> This tool is currently contains minimal features and is a work-in-progress
<!-- content:start -->
`fujin` is a simple deployment tool that helps you get your project up and running on a VPS in minutes. It manages your app processes using [systemd](https://systemd.io) and runs your apps behind [caddy](https://caddyserver.com).
[![Publish Package](https://github.com/falcopackages/fujin/actions/workflows/publish.yml/badge.svg)](https://github.com/falcopackages/fujin/actions/workflows/publish.yml)
[![PyPI - Version](https://img.shields.io/pypi/v/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/falcopackages/fujin/blob/main/LICENSE.txt)
[![Status](https://img.shields.io/pypi/status/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
## Features
- π One-command server bootstrap
- π Rollback broken deployments
- π Zero configuration SSL certificates
- π Swappable proxy ([caddy](https://caddyserver.com), [nginx](https://nginx.org/en/) and `dummy` to disable proxy)
- π οΈ Secrets injection from password managers ([Bitwarden](https://bitwarden.com/), [1Password](https://1password.com), etc.)
- π Easily customizable `systemd` and `proxy` configurations
- π¨βπ» Remote application management and log streaming
- π Supports packaged python apps and self-contained binaries
For more details, check out the [documentationπ](https://fujin.oluwatobi.dev/en/latest/).
## Why?
I wanted [kamal](https://kamal-deploy.org/) but without Docker, and I thought the idea was fun. At its core, this project automates versions of this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu). If you've been a Django beginner
trying to get your app in production, you probably went through this.
I'm using `caddy` here by default instead of `nginx` because it's configurable via an API and it's is a no-brainer for SSL certificates. `Systemd` is the default on most Linux distributions and does a good enough job.
Fujin was initially planned to be a Python-only project, but the core concepts can be applied to any language that can produce a single distributable file (e.g., Go, Rust).
The goal is to automate deployment while leaving you in full control of your Linux box. It's not a CLI PaaS - it's simple and expects you to be able to SSH into your server and troubleshoot if necessary. For beginners, it makes the initial deployment easier while you get your hands dirty with Linux.
If you need a never-break, worry-free, set-it-and-forget-it setup that auto-scales and does all the magic, fujin probably isn't for you.
## Inspiration and alternatives
Fujin draws inspiration from the following tools for their developer experience. These are better alternatives if you need a more robust, set-and-forget solution
- [fly.io](https://fly.io/)
- [kamal](https://kamal-deploy.org/) (you probably can't just forget this one)
## License
`fujin` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
<!-- content:end -->
Raw data
{
"_id": null,
"home_page": null,
"name": "fujin-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "caddy, deployment, django, fastapi, litestar, python, systemd",
"author": null,
"author_email": "Tobi DEGNON <tobidegnon@proton.me>",
"download_url": "https://files.pythonhosted.org/packages/a0/40/4430eec67bb51af828bec3ef7ddc56019db09eef07ce790b68b354d7bfa1/fujin_cli-0.10.0.tar.gz",
"platform": null,
"description": "# fujin\n\n> [!IMPORTANT]\n> This tool is currently contains minimal features and is a work-in-progress\n\n<!-- content:start -->\n\n`fujin` is a simple deployment tool that helps you get your project up and running on a VPS in minutes. It manages your app processes using [systemd](https://systemd.io) and runs your apps behind [caddy](https://caddyserver.com).\n\n[![Publish Package](https://github.com/falcopackages/fujin/actions/workflows/publish.yml/badge.svg)](https://github.com/falcopackages/fujin/actions/workflows/publish.yml)\n[![PyPI - Version](https://img.shields.io/pypi/v/fujin-cli.svg)](https://pypi.org/project/fujin-cli)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fujin-cli.svg)](https://pypi.org/project/fujin-cli)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/falcopackages/fujin/blob/main/LICENSE.txt)\n[![Status](https://img.shields.io/pypi/status/fujin-cli.svg)](https://pypi.org/project/fujin-cli)\n\n## Features\n\n- \ud83d\ude80 One-command server bootstrap\n- \ud83d\udd04 Rollback broken deployments\n- \ud83d\udd10 Zero configuration SSL certificates\n- \ud83d\udd01 Swappable proxy ([caddy](https://caddyserver.com), [nginx](https://nginx.org/en/) and `dummy` to disable proxy)\n- \ud83d\udee0\ufe0f Secrets injection from password managers ([Bitwarden](https://bitwarden.com/), [1Password](https://1password.com), etc.)\n- \ud83d\udcdd Easily customizable `systemd` and `proxy` configurations\n- \ud83d\udc68\u200d\ud83d\udcbb Remote application management and log streaming\n- \ud83d\udc0d Supports packaged python apps and self-contained binaries\n\nFor more details, check out the [documentation\ud83d\udcda](https://fujin.oluwatobi.dev/en/latest/).\n\n## Why?\n\nI wanted [kamal](https://kamal-deploy.org/) but without Docker, and I thought the idea was fun. At its core, this project automates versions of this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu). If you've been a Django beginner \ntrying to get your app in production, you probably went through this.\n\nI'm using `caddy` here by default instead of `nginx` because it's configurable via an API and it's is a no-brainer for SSL certificates. `Systemd` is the default on most Linux distributions and does a good enough job.\n\nFujin was initially planned to be a Python-only project, but the core concepts can be applied to any language that can produce a single distributable file (e.g., Go, Rust).\n\nThe goal is to automate deployment while leaving you in full control of your Linux box. It's not a CLI PaaS - it's simple and expects you to be able to SSH into your server and troubleshoot if necessary. For beginners, it makes the initial deployment easier while you get your hands dirty with Linux.\nIf you need a never-break, worry-free, set-it-and-forget-it setup that auto-scales and does all the magic, fujin probably isn't for you.\n\n## Inspiration and alternatives\n\nFujin draws inspiration from the following tools for their developer experience. These are better alternatives if you need a more robust, set-and-forget solution\n\n- [fly.io](https://fly.io/)\n- [kamal](https://kamal-deploy.org/) (you probably can't just forget this one)\n\n## License\n\n`fujin` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n\n<!-- content:end -->\n",
"bugtrack_url": null,
"license": null,
"summary": "Get your project up and running in a few minutes on your own vps.",
"version": "0.10.0",
"project_urls": {
"Documentation": "https://github.com/falcopackages/fujin#readme",
"Issues": "https://github.com/falcopackages/fujin/issues",
"Source": "https://github.com/falcopackages/fujin"
},
"split_keywords": [
"caddy",
" deployment",
" django",
" fastapi",
" litestar",
" python",
" systemd"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3badaf0279ad5e04ee3a0ff2007e49916cb182b13f0f4553120e9f939ed89cf4",
"md5": "a9f1ef7bcec935b751a46de45e24ac84",
"sha256": "603f95e983ea6e2e48fe358e43e8a111c22e5ea6212fe67c8f56949db5b8ff3b"
},
"downloads": -1,
"filename": "fujin_cli-0.10.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a9f1ef7bcec935b751a46de45e24ac84",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 35091,
"upload_time": "2024-11-24T18:09:40",
"upload_time_iso_8601": "2024-11-24T18:09:40.285603Z",
"url": "https://files.pythonhosted.org/packages/3b/ad/af0279ad5e04ee3a0ff2007e49916cb182b13f0f4553120e9f939ed89cf4/fujin_cli-0.10.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a0404430eec67bb51af828bec3ef7ddc56019db09eef07ce790b68b354d7bfa1",
"md5": "c116600565b4fca48e2b89d5a52d61ea",
"sha256": "8ce0162731815a1328a28532d3e4a8f64097bbb037c732d9c05e160e67d18cff"
},
"downloads": -1,
"filename": "fujin_cli-0.10.0.tar.gz",
"has_sig": false,
"md5_digest": "c116600565b4fca48e2b89d5a52d61ea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 128575,
"upload_time": "2024-11-24T18:09:41",
"upload_time_iso_8601": "2024-11-24T18:09:41.872450Z",
"url": "https://files.pythonhosted.org/packages/a0/40/4430eec67bb51af828bec3ef7ddc56019db09eef07ce790b68b354d7bfa1/fujin_cli-0.10.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-24 18:09:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "falcopackages",
"github_project": "fujin#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "fujin-cli"
}