YunoHost architecture
The core of YunoHost is built in Python around the yunohost
server, but is composed
of four main components:
Moulinette
It is a small "homemade" framework. Its major role is to allow us to build both a web API and a command-line API from the same Python code thanks to a YAML schema which we call the actionmap.
It handles other mechanisms like authentication, internationalization and small technical utilitary functions (e.g. reading/writing JSON).
Moulinette has its own documentation available here.
YunoHost
This piece is the very core of YunoHost. It contains:
- The Python code that manages users, domains, apps, services and other things
- Bash helpers mainly used by application packagers to package applications
- Hooks and templates that are used to configure the various pieces of the ecosystem such as NGINX, Postfix...
- Internationalized strings
- Tests
SSOwat
This is the single sign-on backend of YunoHost. It is based on Lua scripts that are directly interfaced with NGINX and handle all the "technical" aspects of authentication and route accesses.
SSOwat is configured through /etc/ssowat/conf.json
which is generated by YunoHost.
YunoHost-portal
This is the web user portal used to log in and browse installed apps.
YunoHost-admin
It is an optional dependency of YunoHost and corresponds to an interface for the web API created by YunoHost and Moulinette (c.f. the yunohost-api
service).
It essentially contains:
- View templates
- Corresponding JavaScript controllers that interact with the YunoHost API
- Internationalized strings