diff --git a/images/glpi_logo.png b/images/glpi_logo.png new file mode 100644 index 00000000..7dac3d65 Binary files /dev/null and b/images/glpi_logo.png differ diff --git a/images/snappymail_logo.png b/images/snappymail_logo.png new file mode 100644 index 00000000..213feded Binary files /dev/null and b/images/snappymail_logo.png differ diff --git a/images/umami-logo.png b/images/umami-logo.png new file mode 100644 index 00000000..14c12ed9 Binary files /dev/null and b/images/umami-logo.png differ diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.ar.md b/pages/01.overview/15.try_yunohost/try_yunohost.ar.md index 3ee773d8..4d16b9af 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.ar.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.ar.md @@ -16,6 +16,7 @@ routes: كلمة السر : demo [[fa=cog /] واجهة الإدارة](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +إسم المستخدم : demo كلمة السر : demo [/columns] diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.ca.md b/pages/01.overview/15.try_yunohost/try_yunohost.ca.md index 2f285899..b1483701 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.ca.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.ca.md @@ -16,6 +16,7 @@ Nom d'usuària: demo Contrasenya: demo [[fa=cog /] Interfície d'administració](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Nom d'usuària: demo Contrasenya: demo [/columns] diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.de.md b/pages/01.overview/15.try_yunohost/try_yunohost.de.md index fbcfb2a1..a76aba18 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.de.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.de.md @@ -16,6 +16,7 @@ Username: demo Password: demo [[fa=cog /] Verwaltung](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Username: demo Password: demo [/columns] diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.es.md b/pages/01.overview/15.try_yunohost/try_yunohost.es.md index 0709a18e..69705f76 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.es.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.es.md @@ -16,6 +16,7 @@ Usuario : demo Contraseña : demo [[fa=cog /] Interfaz de administración](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Usuario : demo Contraseña : demo [/columns] diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.fr.md b/pages/01.overview/15.try_yunohost/try_yunohost.fr.md index 7d81bedf..3ea822d6 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.fr.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.fr.md @@ -16,6 +16,7 @@ Utilisateur : demo Mot de passe : demo [[fa=cog /] Interface d’administration](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Utilisateur : demo Mot de passe : demo [/columns] diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.it.md b/pages/01.overview/15.try_yunohost/try_yunohost.it.md index 916e4770..421511ab 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.it.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.it.md @@ -16,9 +16,10 @@ Nome utente: demo Password: demo [[fa=cog /] Interfaccia amministrazione](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Nome utente: demo Password: demo [/columns] [/center] -!!!! **Il server demo è gentilmente fornito da [Gitoyen](https://www.gitoyen.net?target=_blank) [fa=heart /]** \ No newline at end of file +!!!! **Il server demo è gentilmente fornito da [Gitoyen](https://www.gitoyen.net?target=_blank) [fa=heart /]** diff --git a/pages/01.overview/15.try_yunohost/try_yunohost.md b/pages/01.overview/15.try_yunohost/try_yunohost.md index 0496de0b..63672d64 100644 --- a/pages/01.overview/15.try_yunohost/try_yunohost.md +++ b/pages/01.overview/15.try_yunohost/try_yunohost.md @@ -12,10 +12,11 @@ routes: [center] [columns] [[fa=user /] User interface](https://demo.yunohost.org/?target=_blank&classes=btn,btn-lg,btn-success) -Username: demo +Username: demo Password: demo [[fa=cog /] Administration interface](https://demo.yunohost.org/yunohost/admin/?target=_blank&classes=btn,btn-lg,btn-primary) +Username: demo Password: demo [/columns] diff --git a/pages/02.administer/15.admin_guide/15.command_line/command_line.de.md b/pages/02.administer/15.admin_guide/15.command_line/command_line.de.md index 47e37850..432597fc 100644 --- a/pages/02.administer/15.admin_guide/15.command_line/command_line.de.md +++ b/pages/02.administer/15.admin_guide/15.command_line/command_line.de.md @@ -47,49 +47,49 @@ Nach dem allerersten Login sollte man das root Passwort ändern. Der Server kön Wir sind nun bereit, mit der [Postinstallation](/postinstall) zu beginnen. -## After installing YunoHost +## Nach der Installation von YunoHost -If you installed your server at home and are attempting to connect from outside your local network, make sure port 22 is correctly forwarded to your server. (Reminder : since YunoHost 3.4 you should connect using the `admin` user !) +Wenn du deinen Server zu Hause installiert hast und versuchst, dich von außerhalb deines lokalen Netzwerks zu verbinden, stell sicher, dass Port 22 korrekt an deinen Server weitergeleitet wird. (Zur Erinnerung: seit YunoHost 3.4 solltest du dich mit dem Benutzer `admin` verbinden). -If you only know the IP address of your server : +Wenn du nur die IP-Adresse deines Servers kennst : ```bash ssh admin@111.222.333.444 ``` -Then, you need to enter your administrator password created at [post-installation step](/postinstall). +Dann musst du dein Administratorkennwort eingeben, das du unter [Post-Installationsschritt](/postinstall) erstellt hast. -If you configured your DNS (or tweaked your `/etc/hosts`), you can simply use your domain name : +Wenn du dein DNS konfiguriert hast (oder deine `/etc/hosts` optimiert hast), kannst du einfach deinen Domainnamen verwenden: ```bash ssh admin@your.domain.tld ``` -If you changed the SSH port, you need to add `-p ` to the command, e.g. : +Wenn du den SSH-Port geändert hast, musst du `-p ` an den Befehl anhängen, z.B. : ```bash ssh -p 2244 admin@your.domain.tld ``` -!!! If you are connected as `admin` and would like to become `root` for more comfort (e.g. to avoid typing `sudo` in front of every command), you can become `root` using the command `sudo su`. +!!! Wenn du als `admin` verbunden bist und aus Bequemlichkeit `root` werden möchtest (z.B. um nicht vor jedem Befehl `sudo` eintippen zu müssen), kannst du mit dem Befehl `sudo su` `root` werden. -## Which users? +## Welche Benutzer? -By default, only the `admin` user can log in to YunoHost SSH server. +Standardmäßig kann sich nur der Benutzer `admin` am YunoHost SSH-Server anmelden. -YunoHost's users created via the administration interface are managed by the LDAP directory. By default, they can't connect via SSH for security reasons. If you want some users to have SSH access enabled, use the command: +Die über die Administrationsoberfläche angelegten Benutzer von YunoHost werden über das LDAP-Verzeichnis verwaltet. Standardmäßig können sie sich aus Sicherheitsgründen nicht über SSH anmelden. Wenn du möchtest, dass einige Benutzer SSH-Zugang haben, verwende den Befehl: ```bash yunohost user permission add ssh.main ``` -It is also possible to remove SSH access using the following: +Es ist auch möglich, den SSH-Zugang wie folgt zu entfernen: ```bash yunohost user permission remove ssh.main ``` -Finally, it is possible to add, delete and list SSH keys, to improve SSH access security, using the commands: +Schließlich ist es möglich, SSH-Schlüssel hinzuzufügen, zu löschen und aufzulisten, um die Sicherheit des SSH-Zugangs zu verbessern, indem man die Befehle verwendet: ```bash yunohost user ssh add-key @@ -97,20 +97,20 @@ yunohost user ssh remove-key yunohost user ssh list-keys ``` -## Security and SSH +## Sicherheit und SSH -N.B. : `fail2ban` will ban your IP for 10 mimutes if you perform 5 failed login attempts. If you need to unban the IP, have a look at the page about [Fail2Ban](/fail2ban) +N.B.: `fail2ban` sperrt deine IP für 10 Minuten, wenn du 5 fehlgeschlagene Login-Versuche durchführst. Wenn du die IP-Sperre aufheben willst, schau dir die Seite über [Fail2Ban](/fail2ban) an. -A more extensive discussion about security & SSH can be found on the [dedicated page](/security). +Eine ausführlichere Diskussion über Sicherheit & SSH findest du auf der [dedicated page](/security). -## YunoHost command line +## YunoHost Kommandozeile -!!! Providing a full tutorial about the command line is quite beyond the scope of the YunoHost documentation : for this, consider reading a dedicated tutorial such as [this one](https://ryanstutorials.net/linuxtutorial/) or [this one](http://linuxcommand.org/). But be reassured that you don't need to be a CLI expert to start using it ! +!!! Ein vollständiges Tutorial über die Kommandozeile würde den Rahmen der YunoHost-Dokumentation sprengen: Lies dazu am besten ein spezielles Tutorial wie [dieses](https://ryanstutorials.net/linuxtutorial/) oder [dieses](http://linuxcommand.org/). Aber sei versichert, dass du kein CLI-Experte sein musst, um es zu benutzen! -The `yunohost` command can be used to administer your server and perform the various actions similarly to what you do on the webadmin. The command must be launched either from the `root` user or from the `admin` user by preceeding them with `sudo`. (ProTip™ : you can become `root` with the command `sudo su` as `admin`). +Der Befehl "yunohost" kann zur Verwaltung deines Servers verwendet werden und führt verschiedene Aktionen aus, die denen des Webadmin ähneln. Der Befehl muss entweder vom `root`-Benutzer oder vom `admin`-Benutzer durch Voranstellen von `sudo` gestartet werden. (ProTip™ : Du kannst `root` mit dem Befehl `sudo su` als `admin` werden). -YunoHost commands usually have this kind of structure : +YunoHost-Befehle haben normalerweise diese Art von Struktur: ```bash yunohost app install wordpress --label Webmail @@ -119,7 +119,7 @@ yunohost app install wordpress --label Webmail category action argument options ``` -Don't hesitate to browse and ask for more information about a given category or action using the the `--help` option. For instance, those commands : +Zögere nicht, nach weiteren Informationen zu einer bestimmten Kategorie oder Aktion zu fragen, indem du die Option `--help` verwendest. Zum Beispiel listen diese Befehle : ```bash yunohost --help @@ -127,4 +127,4 @@ yunohost user --help yunohost user create --help ``` -will successively list all the categories available, then the actions available in the `user` category, then the usage of the action `user create`. You might notice that the YunoHost command tree is built with a structure similar to the YunoHost admin pages. +nacheinander alle verfügbaren Kategorien auf, dann die in der Kategorie `Benutzer` verfügbaren Aktionen, dann die Verwendung der Aktion `Benutzer erstellen`. Du wirst feststellen, dass der YunoHost-Befehlsbaum eine ähnliche Struktur aufweist wie die YunoHost-Admin-Seiten. diff --git a/pages/04.applications/10.docs/glpi/app_glpi.md b/pages/04.applications/10.docs/glpi/app_glpi.md new file mode 100644 index 00000000..b8e55293 --- /dev/null +++ b/pages/04.applications/10.docs/glpi/app_glpi.md @@ -0,0 +1,32 @@ +--- +title: Glpi +template: docs +taxonomy: + category: docs, apps +routes: + default: '/app_glpi' +--- + +![Glpi's logo](image://glpi_logo.png?resize=,80) + +[![Install Glpi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=glpi) [![Integration level](https://dash.yunohost.org/integration/glpis.svg)](https://dash.yunohost.org/appci/app/glpi) + +GLPI stands for Gestionnaire Libre de Parc Informatique is a Free Asset and IT Management Software package, that provides ITIL Service Desk features, licenses tracking and software auditing. + +## Features: +Inventory of computers, peripherals, network printers and any associated components through an interface, with inventory tools such as: FusionInventory or OCS Inventory +Data Center Infrastructure Management (DCIM) +Item lifecycle management +Licenses management (ITIL compliant) +Management of warranty and financial information (purchase order, warranty and extension, damping) +Management of contracts, contacts, documents related to inventory items +Incidents, requests, problems and changes management +Knowledge base and Frequently-Asked Questions (FAQ) +Asset reservation + +## Useful links + ++ Website: [glpi-project.org](https://glpi-project.org/) ++ Official documentation: [glpi-install.readthedocs.io - docs](https://glpi-install.readthedocs.io/en/latest/) ++ Application software repository: [github.com - YunoHost-Apps/glpi](https://github.com/glpi-project/glpi) ++ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/gogs/issues](https://github.com/YunoHost-Apps/glpi_ynh/issues) diff --git a/pages/04.applications/10.docs/rainloop/app_rainloop.md b/pages/04.applications/10.docs/rainloop/app_rainloop.md index 65b002aa..f1262357 100644 --- a/pages/04.applications/10.docs/rainloop/app_rainloop.md +++ b/pages/04.applications/10.docs/rainloop/app_rainloop.md @@ -14,8 +14,14 @@ routes: ### Index - [Configuration](#configuration) + - [CardDAV](#carddav) + - [Domains](#domains) + - [PGP Keys](#pgp-keys) + - [Upgrade](#upgrade) - [Useful links](#useful-links) +! **Note:** RainLoop is no longer maintained, you're encouraged to switch to RainLoop's community maintained fork - [SnappyMail](/app_snappymail) + Rainloop is a lightweight webmail. ## Configuration diff --git a/pages/04.applications/10.docs/snappymail/app_snappymail.md b/pages/04.applications/10.docs/snappymail/app_snappymail.md new file mode 100644 index 00000000..5f068901 --- /dev/null +++ b/pages/04.applications/10.docs/snappymail/app_snappymail.md @@ -0,0 +1,44 @@ +--- +title: SnappyMail +template: docs +taxonomy: + category: docs, apps +routes: + default: '/app_snappymail' +--- + +![SnappyMail's logo](image://snappymail_logo.png?height=100) + +[![Install SnappyMail with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=snappymail) [![Integration level](https://dash.yunohost.org/integration/snappymail.svg)](https://dash.yunohost.org/appci/app/snappymail) + +### Index + +- [Configuration](#configuration) + - [Domains](#domains) + - [Upgrade](#upgrade) +- [Useful links](#useful-links) + +SnappyMail is a lightweight webmail, a fork of RainLoop. + +## Configuration + +To configure it, go to http://DOMAIN.TLD/snappymail/app/?admin + +- The default login is: admin +- The default password is stored in a file located at `/var/www/snappymail/data/_data_/_default_/admin_password.txt`. + +### Domains +Users can use SnappyMail to access mailboxes other than the one provided by YunoHost (e.g. gmail.com or live.com). The option is available through the "account -> add an account" button. +The administrator must authorize the connection to third party domains, via a white list in the administration interface. + +### Upgrade +To upgrade the app once a new SnappyMail version is available, simply run in a local shell via ssh or otherwise: +`sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/snappymail_ynh snappymail` + +## Useful links + ++ Website : [snappymail.eu](https://snappymail.eu/) ++ Official documentation : [github.com/the-djmaze/snappymail/wiki](https://github.com/the-djmaze/snappymail/wiki) ++ Demonstration : [Demo](https://snappymail.eu/demo/) ++ Application software repository : [github.com - YunoHost-Apps/snappymail](https://github.com/YunoHost-Apps/snappymail_ynh) ++ Fix a bug or an improvement by creating a ticket (issue) : [github.com - YunoHost-Apps/snappymail/issues](https://github.com/YunoHost-Apps/snappymail_ynh/issues) diff --git a/pages/04.applications/10.docs/umami/app_umami.md b/pages/04.applications/10.docs/umami/app_umami.md new file mode 100644 index 00000000..6aca21da --- /dev/null +++ b/pages/04.applications/10.docs/umami/app_umami.md @@ -0,0 +1,53 @@ +--- +title: umami +template: docs +taxonomy: + category: docs, apps +routes: + default: '/app_umami' +--- + +![umami's logo](image://umami-logo.png?resize=100) + + +[![Install umami with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=umami) +[![Integration level](https://dash.yunohost.org/integration/umami.svg)](https://dash.yunohost.org/appci/app/umami) + +**Umami** is a simple, fast, privacy-focused alternative to Google Analytics. + +## Getting Started +- Install `umami` on dedicated domain (does not support subpaths!) +- After installation the default user is `admin` with password `umami`. Change these as soon as possible! + +## Upgrade +To upgrade the app once a new `umami` version is available, simply run in a local shell via ssh or otherwise: +`sudo yunohost app upgrade umami -u https://github.com/YunoHost-Apps/umami_ynh` + +### Migrating from 1.x to 2.x +Upgrading from 1.x series to 2.x is a multi-step process that cannot be automated. It involves: +- Upgrade to 1.40 - the latest version in 1.x series. Intermediate steps may include upgrade to 1.33 (first version to use `prisma` for schema versioning) and 1.33.1 (which introduces breaking `prisma` change). +- Running dedicated script for v1 DB to v2 DB migration +- Upgrading to latest and greatest in 2.x series. + +The script to perform this step is as following (assuming this is the first instance, named `umami`. If it's the second instance use `umami__2` etc.): + + +``` +# Install latest 1.x version from dedicated branch +$ sudo yunohost app upgrade umami -u https://github.com/orhtej2/umami_ynh/tree/v1.40-enh + +# Run migrations +$ cd /var/www/umami +$ yarn add @umami/migrate-v1-v2 +$ npx @umami/migrate-v1-v2 + +# Update to latest version +$ sudo yunohost app upgrade umami -u https://github.com/YunoHost-Apps/umami_ynh +``` + +## Useful links + +* Upstream app code repository: [https://github.com/umami-software/umami](https://github.com/umami-software/umami) +* Docs: [https://umami.is/docs/](https://umami.is/docs/) +* Application software repository: [https://github.com/YunoHost-Apps/umami_ynh](https://github.com/YunoHost-Apps/umami_ynh) +* Report a bug: [https://github.com/YunoHost-Apps/umami_ynh/issues](https://github.com/YunoHost-Apps/umami_ynh/issues) diff --git a/pages/04.applications/99.wishlist/apps_wishlist.md b/pages/04.applications/99.wishlist/apps_wishlist.md index f60dea09..292a3592 100644 --- a/pages/04.applications/99.wishlist/apps_wishlist.md +++ b/pages/04.applications/99.wishlist/apps_wishlist.md @@ -37,6 +37,7 @@ You can [contribute to this list by adding something you'd like to be packaged]( | [Baserow](https://baserow.io/) | Open source no-code database tool and Airtable alternative. | [Upstream](https://gitlab.com/bramw/baserow) | | | [Beatbump](https://beatbump.ml/home) | An alternative frontend for YouTube Music | [Upstream](https://github.com/snuffyDev/Beatbump) | | | [Beeper](https://www.beeper.com/) | A unified inbox for 15 chat networks. | [Upstream](https://gitlab.com/beeper) | | +| [Belenios Voting](https://www.belenios.org/) | Verifiable, lean, trustable online voting system | [Upstream](https://github.com/glondu/belenios/) | | | [BigBlueButton](https://bigbluebutton.org) | Web conferencing system | [Upstream](https://github.com/bigbluebutton/bigbluebutton) | | | [BitcartCC](https://bitcartcc.com) | BitcartCC is a self-hosted, open-source cryptocurrency all-in-one solution | [Upstream](https://github.com/bitcartcc/bitcart) | | | [Bitmessage](https://bitmessage.org/) | P2P communication protocol used to send encrypted messages | [Upstream](https://github.com/Bitmessage/PyBitmessage) | | @@ -60,6 +61,7 @@ You can [contribute to this list by adding something you'd like to be packaged]( | [CKAN](https://ckan.org/) | A tool for making open data websites | [Upstream](https://github.com/ckan/ckan) | | | [CloudTube](https://tube.cadence.moe/) | CloudTube front-end for YouTube | [Upstream](https://git.sr.ht/~cadence/cloudtube) | | | [Commafeed](https://www.commafeed.com/) | Self-hosted RSS reader | [Upstream](https://github.com/Athou/commafeed) | | +| [Congressus](https://congressus.partipirate.org/about.php) | A meeting management tool with decision-making based on a voting pool. | [upstream](https://github.com/PartiPirate/congressus) | | | cops | Calibre OPDS | | [Package Draft](https://github.com/YunoHost-Apps/cops_ynh) | | [Coquelicot](https://coquelicot.potager.org/) | A “one-click” file sharing web application | | [Package Draft](https://github.com/YunoHost-Apps/coquelicot_ynh) | | [Cozy](https://cozy.io/en/) | | | | @@ -154,7 +156,6 @@ You can [contribute to this list by adding something you'd like to be packaged]( | [Kitchenowl](https://kitchenowl.org/) | grocery list and recipe manager | [Upstream](https://github.com/TomBursch/kitchenowl) | | | [Klaxon](https://newsklaxon.org) | Easily create alerts for changes on the web | [Upstream](https://github.com/themarshallproject/klaxon) | | | [Known](https://withknown.com) | | [Upstream](https://github.com/idno/known) | | -| [Koel](https://koel.phanan.net) | | [Upstream](https://github.com/phanan/koel) | | | [Koha](https://koha-community.org/) | The world's first free and open source library system | [Upstream](https://git.koha-community.org/Koha-community/Koha) | | | Kontalk | | [Upstream](https://github.com/kontalk) | | | [Koozip](https://koozic.net) | | [Upstream](https://github.com/DocMarty84/koozic) | | @@ -360,7 +361,7 @@ You can [contribute to this list by adding something you'd like to be packaged]( | youtube-dl-webui | Web interface for youtube-dl | | [Package Draft](https://github.com/YunoHost-Apps/youtube-dl-webui_ynh) | | yunofav | A page of favorite links | | [Package Draft](https://github.com/YunoHost-Apps/yunofav_ynh) | | [yunohost](https://yunohost.org) | YunoHost in YunoHost, crazy :D ! | | [Package Draft](https://github.com/aymhce/yunohost_ynh) | -| Zammad | | [Upstream](https://github.com/zammad/zammad) | | +| [Zammad](https://zammad.org) | Zammad is a web-based, open source user support/ticketing solution | [Upstream](https://github.com/zammad/zammad) | | | [zigbee2mqtt.io](https://www.zigbee2mqtt.io/) | [Zigbee](https://en.wikipedia.org/wiki/Zigbee)-to-[MQTT](https://en.wikipedia.org/wiki/MQTT) software-bridge supporting [more than 1000 Zigbee devices](https://www.zigbee2mqtt.io/information/supported_devices.html) | [Upstream](https://github.com/koenkk/zigbee2mqtt) | | | [Zola](https://www.getzola.org/) | Static site generator | | | | zomburl | An URL shortening service | | [Package Draft](https://github.com/courgette/zomburl_ynh) | diff --git a/pages/06.contribute/10.packaging_apps/packaging_apps_intro_de.md b/pages/06.contribute/10.packaging_apps/packaging_apps_intro_de.md new file mode 100644 index 00000000..a5671b8c --- /dev/null +++ b/pages/06.contribute/10.packaging_apps/packaging_apps_intro_de.md @@ -0,0 +1,117 @@ +--- +Titel: Einführung in die Paketierung +Template: docs +Taxonomie: + Kategorie: docs +Routen: + Standard: '/packaging_apps_intro' + Aliases: + - '/packaging_apps' +--- + +In dieser Dokumentation findest du alle grundlegenden Konzepte und Vokabeln, die du zum Verständnis von Anwendungspaketen benötigst. + +Wir werden detailliert beschreiben, was ein YunoHost-Anwendungspaket ist, wie es funktioniert, wie du dein eigenes Paket erstellst und wie du Hilfe findest, wenn du diese benötigst. + + +## 1. Paketierungs-Philosophie + +Die Möglichkeit, Anwendungen einfach aus einem Katalog zu installieren, ist eine Schlüsselfunktion von YunoHost. Während du in den Prozess der YunoHost-Anwendungspaketierung eintauchst, solltest du dich an diese Schlüsselprinzipien erinnern: + +- **Der Administrator sollte keinen Doktortitel in Informatik haben, um deine Anwendung installieren, konfigurieren und nutzen zu können**: Gehe davon aus, dass der Administrator keine fortgeschrittenen Computerkenntnisse hat; + +- **Weniger ist mehr**, **Keep it simple!**: überfrachte den Administrator nicht mit Dutzenden von technischen Fragen; + +- **Die Dinge sollten sofort funktionieren**: zum Beispiel sollte der Administrator den Installationsprozess nicht manuell abschließen müssen, indem er die Zugangsdaten für die Datenbank manuell ausfüllt; + +- Bei der Paketierung von YunoHost-Apps geht es **nicht nur um die Installation** von Quellen und Abhängigkeiten: Es geht auch um Wartung (Upgrade, Backup...) und die Integration der App in das YunoHost-Ökosystem (NGINX, SSO/LDAP, Fail2Ban, Anwendungskatalog, UI/UX...) + + +## 2. Voraussetzungen + +In dieser Dokumentation wird vorausgesetzt, dass: + +1. Du selbst bereits YunoHost-Administrator bist und weißt, wie der Installationsablauf aussieht;) +2. Du bist einigermaßen vertraut mit Systemadministration und Bash-Programmierung (oder bereit, diese zu lernen); +3. Du bist einigermaßen vertraut mit Git (oder bereit, es zu lernen); +4. Du hast Spaß am Basteln und am Debuggen von Computerkram im Allgemeinen. + +Du bist auch eingeladen, dem [app packaging chatroom](/chat_rooms) beizutreten, um alle Fragen zu stellen, die du vielleicht hast! + +Irgendwann wirst du auch eine Entwicklungs-/Testumgebung haben wollen, entweder mit [VirtualBox](/packaging_apps_virtualbox) oder [LXC/ynh-dev](https://github.com/yunohost/ynh-dev), das für den Kern gedacht ist, aber durchaus auch für die Entwicklung von Anwendungen verwendet werden kann. Du kannst auch einen Dev/Test-VPS bei deinem bevorzugten Hosting-Anbieter einrichten oder sogar auf deinem Prod entwickeln, wenn du gerne gefährlich lebst ;). + +## 3. Anmerkungen zur Geschichte der YunoHost-App-Pakete + +Viele Dinge bei YunoHost und dem YunoHost App-Packaging-Format sind historisch bedingt oder wurden auf organische Art und Weise entwickelt. Daher können sich einige Aspekte zu Recht alt anfühlen. + +Die **"v0" der App-Paketierung** bestand aus dem Schreiben roher Bash-Skripte ohne echte Standardisierung/Einschränkung. + +Mit der Zeit wurden wiederkehrende Schritte (wie die Installation von Abhängigkeiten mit apt oder die Einrichtung der NGINX-Konfiguration) in standardisierte Bash-Funktionen, auch "Helfer" genannt, formalisiert. Dies markierte so ziemlich **den Beginn der Ära der "v1"-Pakete**. + +Verschiedene Tools wurden implementiert, um die Anwendung zu testen und ihr Verhalten zu standardisieren. + +Nach einer Weile bildete sich eine Reihe von gemeinsamen Praktiken und Konventionen heraus, die sich in der `example_ynh`-Vorlagenanwendung widerspiegeln und erhalten. Während es für Entwickler verlockend ist, die Namensschemata von Variablen zu ändern oder die Struktur von Skripten zu refaktorisieren, stellt sich heraus, dass es sogar noch wichtiger ist, sich an die gemeinsamen Praktiken zu halten (auch wenn sie willkürlich und nicht elegant sind), um die Wartung aller Anwendungen durch jedes Mitglied der Paketierungsgemeinschaft über alle Repos hinweg zu erleichtern! + +Nichtsdestotrotz war die inhärente Struktur von Anwendungen, auch wenn es Helfer gab, schwer und langweilig zu warten, da sie zu viele redundante Codestücke enthielt oder mit seltsamen historischen Konventionen gefüllt war. **Ein neues v2-Format** [wurde entworfen und zu YunoHost 11.1 Anfang 2023 hinzugefügt] (https://github.com/YunoHost/yunohost/pull/1289) in der Hoffnung, das App-Packaging zu modernisieren und zu vereinfachen und die UI/UX von YunoHost zu verbessern. + +Es wird jedoch [**ein zukünftiges v3-Format**](https://github.com/YunoHost/issues/issues/2136) geben, um die Paketierung von Anwendungen weiter zu vereinfachen (z.B. durch die Übernahme von NGINX/systemd/... Konfigurationen, die Beseitigung der Notwendigkeit, Skripte zum Entfernen/Backup/Wiederherstellen manuell zu schreiben, usw.) + + +## 4. Allgemeiner Überblick über die Struktur einer YunoHost-App + +Eine YunoHost-Anwendung besteht aus einem Git-Repository. Wir empfehlen dir, einen Blick auf diese Code-Repositories zu werfen, um dich mit der Struktur der App-Repositories vertraut zu machen: +- [die `helloworld_ynh` App](https://github.com/YunoHost-Apps/helloworld_ynh) +- [die `example_ynh` app](https://github.com/YunoHost/example_ynh), die alle gängigen Funktionen und empfohlenen Formatierungen veranschaulicht +- Deine bevorzugte "Real-Life"-App in der [YunoHost-Apps-Organisation](https://github.com/orgs/YunoHost-Apps/repositories) + +Unter den in einem Paket enthaltenen Dateien sind die wichtigsten: + +- das **Anwendungsmanifest** `manifest.toml` (oder `.json` in der Vergangenheit) + - Dies kann als der Ausweis der Anwendung angesehen werden, der verschiedene Metadaten enthält. + - Sie enthält auch die Fragen, die bei der Installation der Anwendung gestellt werden. + - und eine Reihe von "Ressourcen" zum Initialisieren, wie z.B. herunterzuladende Quellen oder zu installierende apt-Abhängigkeiten +- **scripts/** enthält eine Reihe von Bash-Skripten, die den in YunoHost angebotenen Aktionen entsprechen + - `_common.sh`: gemeinsame Variablen oder eigene Funktionen, die in anderen Skripten enthalten sind + - `install`/`remove`: die Installations- und Deinstallationsprozedur + - `upgrade`: die Upgrade-Prozedur + - `backup`/`restore`: die Sicherungs-/Wiederherstellungsprozeduren + - (`change_url`): Ändern des Ortes, an dem die Anwendung in Bezug auf die Webzugriffsurl installiert ist +- **conf/** enthält eine Reihe von Konfigurationsvorlagen, die bei der Installation der Anwendung verwendet werden. Hier sind einige Beispiele für häufig vorkommende Dateien: + - `nginx.conf`: die NGINX (=Webserver) Konfigurationsvorlage für diese Anwendung + - systemd.service": die Konfigurationsvorlage für den systemd-Dienst für diese Anwendung + - config.json/yaml/???`: die Konfigurationsvorlage für die Anwendung + +Grob gesagt besteht die Installation selbst im Allgemeinen aus den folgenden Vorgängen (die jedoch je nach Komplexität und von der App verwendeten Technologien variieren können) - nicht unbedingt in dieser genauen Reihenfolge: + +1. YunoHost holt das Git-Repository des Pakets +2. YunoHost stellt dem Administrator die in `manifest.toml` definierten Fragen zur Installation +3. Der Administrator füllt das Formular aus und startet die Installation +4. YunoHost stellt eine Reihe von technischen Voraussetzungen (genannt 'Ressourcen') bereit, wie z.B.: + - Initialisierung des Schlüssel/Wertspeichers der Anwendung `settings.yml` mit den Antworten des Administrators auf das Installationsformular + - legt einen UNIX-Systembenutzer für diese Anwendung an + - installiert apt-Abhängigkeiten, die für diese Anwendung benötigt werden + - wählt einen Port für internes Reverse-Proxying aus + - initialisiert eine leere SQL-Datenbank + - konfiguriert SSOwat-Berechtigungen + - ... +5. Das eigentliche Skript `Install` wird ausgeführt und erledigt in der Regel: + - Holen und Bereitstellen der App-Quellen + - die App konfigurieren (typischerweise DB-Anmeldedaten, interner Reverse-Proxy-Port...) + - Hinzufügen der NGINX-Konfiguration + - Hinzufügen der systemd-Konfiguration für den Daemon der Anwendung + - Startet den Daemon der Anwendung + - verschiedene Feinabstimmungen zur Fertigstellung +6. ??? +7. Die Anwendung ist einsatzbereit! + + +## 5. Erstellen deines allerersten YunoHost-Pakets + +Wenn du nicht wirklich bei Null anfangen willst oder von [`example_ynh`](https://github.com/YunoHost/example_ynh), ist eine gängige Praxis, eine Anwendung zu identifizieren, die derjenigen ähnlich ist, die du zu paketieren versuchst - typischerweise, weil du dich auf die gleichen Technologien stützt -, das entsprechende Code-Repository zu klonen und die verschiedenen Dateien anzupassen. + +TODO/FIXME : hier sollten wir eine Reihe von bekannten Anwendungen für klassische Technologien auflisten + +- PHP-Anwendungen: +- NodeJS-Apps: +- Python-Apps: +- ???