diff --git a/README.md b/README.md index d8d641c..371beca 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,8 @@ Lightweight async request runner. A simplified version of [trusted-cgi](https://github.com/reddec/trusted-cgi) designed for async processing extreme amount of requests. -## Goals +Main goals: -* Minimal requirements for host; * Should have semi-constant resource consumption regardless of: * number of requests, * size of requests, @@ -16,4 +15,140 @@ for async processing extreme amount of requests. * Should be ready for deploying in clouds; * Should support extending for another providers; * Can be used as library and as a complete solution; -* **Performance (throughput/latency) has less priority** than resource usage. \ No newline at end of file +* **Performance (throughput/latency) has less priority** than resource usage. + +Please note that the project is being developed in free time, as a non-profitable hobby project. +All codes, bugs, opinions, and other related subjects should not be considered as the official position, official project, +or company-backed project to any of the companies for/with which I worked before or/and at present. + + +![image](https://user-images.githubusercontent.com/6597086/95172239-9b58e200-07e9-11eb-8ca7-bf48d93a178b.png) + +## Documentation + +* [Installation](#installation) +* [Quick start](#quick-start) +* [Architecture overview](_docs/flow.md) +* [API](_docs/api.md) +* [API Authorization](_docs/authorization.md) +* [UI](_docs/ui.md) +* [UI Authorization](_docs/ui_authorization.md) +* [Unit configuration](_docs/unit.md) +* [Docker](_docs/docker.md) + +## Stability + +(After 1.0.0) + +We are trying to follow semver: + +* Patch releases provides fixes or light improvements without migration +* Minor releases provides new functionality and provides automatic migration if needed +* Major releases provides serious platform changes and may require manual or automatic migration + +Within one major release, it guarantees forward compatibility: new versions can use data from previous versions, but not vice-versa. + +## Reproducible binaries + +The project tries to follow best practices providing reproducible binaries: it means, that +you can verify that complied binaries will be exactly the same (byte to byte) as if you will compile it by yourself +by following our public instructions. + +## License + +The project (source code and provided official binaries) are licensed +under Apache-2.0 (see License file, or in [plain English](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0))) and suitable +for personal, commercial, government, and others usage without restrictions as long as it used with abiding +license agreement. + +Do not forget to bring your changes back to the project. I will + be happy to assist you with PR. + +The project uses external libraries that may be distributed +under other licenses. + +## Installation + +### Debian/Ubuntu + +(recommended) + +Tested on 20.04 and 18.04, but should good for any x64 version. + +Add the repository (only once) + +```bash +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 +echo "deb https://dl.bintray.com/reddec/debian all main" | sudo tee /etc/apt/sources.list.d/reddec.list +``` + +Install or update nano-run + +```bash +sudo apt update +sudo apt install nano-run +``` + +Automatically creates service `nano-run.service`. + +### Binary + +Download and unpack desired version in [releases](releases). + +### Docker + +`docker pull reddec/nano-run` + +### From source + +Requires go 1.14+ + +`go get -v github.com/reddec/nano-run/cmd/...` + +### Ansible for debian servers + + +```yaml +- name: Add an apt key by id from a keyserver + become: yes + apt_key: + keyserver: keyserver.ubuntu.com + id: 379CE192D401AB61 +- name: Add repository + become: yes + apt_repository: + repo: deb https://dl.bintray.com/reddec/debian all main + state: present + filename: reddec +- name: Install nano-run + become: yes + apt: + name: nano-run + update_cache: yes + state: latest +``` + +## Quick start + +**(optional) initialize configuration** + + nano-run server init + +it will create required directories and files in a current working directory. + +**define a unit file** + +Create minimal unit file (date.yaml) that will return current date (by unix command `date`) and put it +in directory `run/conf.d/` + +_run/conf.d/date.yaml_ +```yaml +command: date +``` + +**start nano-run** + + nano-run server run + + +now you can open ui over http://localhost:8989 or do API call: `curl -X POST http://localhost:8989/api/date/`