# ZTerton Fork me on GitHub ## WebServices and Clouds Monitoring This was created to play and sync different roles: ### As WebServer - Run several webservers with different settings at once - Handle pre-configured routes for requests (GET/POST) - Use SSL for HTTPS webservers - Serve web client frontend applications and provide them sign-on mechanism - Run a websever with templates (Tera) multi-language and style customized - Run as a File server from a preconfigured directory - Implement authenticated files upload (backend & frontend via templates) ### As Multilanguage server - Allow languages settings for request responses - Language autosense for data definition ### As DataServer - Manage Data sets from or to (json,yaml,toml) - Use several alternatives as data store (in memory, key-value) - Simple data caching or preload - Use async GraphQL or API mode to handle data requests ### As Authentication / Authorization server - Manage JSON Web Tokens [JWT](https://en.wikipedia.org/wiki/JSON_Web_Token) - Include simple authentication and user authorization policies. (casbin) - Handle User login/logout with several Data store - Manage Sessions and profiles in key-value storage - Able to encrypt/decrypt data ### As Customizable server - Declare from config and enviroment files: resources path, settings, etc - Run several tasks in Async mode, with customizable running time - Use modules (with data and resources) to configure services - Use several running services level: basic,development - Simple license and versioning ## As Monitor and Supervision server - Scan Clouds setting to create a global info with current status periodically - Watch and monitor declared Cloud services status and apply configured custom rules ## Why To explore Rust programming language excelence for backend services, handle web requests with dynamic responses, resources access, data sources, etc. [ZTerton](/LibreCloud/ZTerton) code relies on [LibreCloud Libraries](LibreCloud) with different funcionalities for backend developments, so it feeds libraries to reuse code as much as it is possible, by follwing priciple of: to make good programs use the very best libraries. To elevate all [CloudMandala(/LibreCloud/CloudMandala)] definitions, settings and management to a next level: - A way to collect Cloud settings for frontend web client to create Cloud dashboards - A Cloud resources state watcher with preconfigured rules to apply according or in response to predictable states ## Inspiration [Terton](https://en.wikipedia.org/wiki/Tert%C3%B6n) is a term within Tibetan Buddhism meaning a person who is a discoverer of ancient hidden texts or [terma](https://en.wikipedia.org/wiki/Terma_(religion)). The Termas are sometimes objects like statues, and can also exist as dharma texts and experiences. Tertöns discover the texts at the right time and place. [ZTerton](/LibreCloud/ZTerton) was conceived as a __Bridge__ (image in logo) to achive latest **Z** [termas](https://en.wikipedia.org/wiki/Terma_(religion)) as resources or data from __sources of truth__. ## Build Build is automated in [Rlung](/) repository as a CD/CI in [LibreCloud](/librecloud) Cloud: - Release is build upon request - Binaries for some platforms are build and published as release attachments ### Requirements for build - Rust infraestructure for Linux or MacOs platforms - JQ, YQ as tools to handle json and yaml ### Build from source - Clone this repository and go to folder: ```bash git clone https://rlung.librecloud.online/LibreCloud/ZTerton zterton cd zterton ``` - Build: ```bash cargo build --release ``` - Install (): ```bash copy target/release/zterton /usr/local/bin ``` ## Running Several components are need it, due to [ZTerton](/LibreCloud/ZTerton) modularity and configurability, a lot of features and funcionalities can be set, enable, extended, etc. In some specific cases like: data sources, data storage, graphql, etc some rust coding is need it. ### Resources - Home - html - data - languages - modules ### Configuration - File **config.toml** ### Environment - File **env** Use to preset settings: | Arg | Env. var | |---|---| ## Running as a service ### Container settings ### Run examples Use evironment variables like this: ```bash ``` ```txt ``` ### Optionals As an option it is possible to encrypt sensitive informations like: - Credentials (username/password) - Data config file in yaml - Help ```bash # Getting help ``` ```txt ``` - That's all! 🎉 #### YAML Config Example ```yaml ``` #### Coders and encoders It is possible to encrypt sensitive informations like: - Credentials (username/password) - Data config file in yaml Coders are called using operating system command (exec) > [Tecoder]() from [ZTerton]() > backend developments is fully supported Coder definition to be used: | var | content | |---|---| | cmd | command-path | ## Author - [Jesús Pérez](https://github.com/jesusperez). ## Article assistance If you want to say «thank you»: 1. Twit about article [on your Twitter](https://twitter.com/intent/tweet?text=Let%27s%20write%20config%20for%20your%20Golang%20web%20app%20on%20right%20way%20%E2%80%94%20YAML%20%F0%9F%91%8C%20https%3A%2F%2Fdev.to%2Fkoddr%2Flet-s-write-config-for-your-golang-web-app-on-right-way-yaml-5ggp). 2. Add a GitHub Star and make Fork to this repository. 3. Donate some money to project author via PayPal: [@paypal.me/](https://paypal.me/). 4. Join UpCloud at my [referral link](https://upcloud.com/signup/?promo=CVR337) (your profit is **\$25** credits and I will receive \$50 worth of free credits). Thanks for your support! 😘 ## References ## License MIT