mirror of
https://github.com/YunoHost/doc.git
synced 2024-09-03 20:06:26 +02:00
Merge branch 'master' into yep-3-7
This commit is contained in:
commit
a96f409a5d
251 changed files with 6956 additions and 4707 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Nous allons voir comment configurer le DNS avec [OVH](http://www.ovh.com).
|
Nous allons voir comment configurer le DNS avec [OVH](http://www.ovh.com).
|
||||||
|
|
||||||
Après achat de votre nom de domaine, rendez vous dans l'espace client pour retrouver la panneau de configuration d'OVH, et cliquez sur votre domaine à gauche:
|
Après achat de votre nom de domaine, rendez vous dans l'espace client pour retrouver le panneau de configuration d'OVH, et cliquez sur votre domaine à gauche:
|
||||||
|
|
||||||
<img src="/images/ovh_control_panel.png" width=800>
|
<img src="/images/ovh_control_panel.png" width=800>
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Il suffit maintenant d'ajouter les redirections DNS comme indiqué dans la [conf
|
||||||
|
|
||||||
[Tutoriel plus général sur l’IP dynamique](dns_dynamicip_fr).
|
[Tutoriel plus général sur l’IP dynamique](dns_dynamicip_fr).
|
||||||
|
|
||||||
Cette partie est à suivre que si votre IP est dynamique.
|
Cette partie est à suivre, que si votre IP est dynamique.
|
||||||
|
|
||||||
Pour savoir si votre fournisseur d’accès internet vous fournit une IP dynamique [voir ici](/isp_fr).
|
Pour savoir si votre fournisseur d’accès internet vous fournit une IP dynamique [voir ici](/isp_fr).
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,4 @@
|
||||||
* [Web Site](https://yunohost.org)
|
* [Web Site](https://yunohost.org)
|
||||||
* Based on [Simone](https://github.com/YunoHost/Simone)
|
* Based on [Simone](https://github.com/YunoHost/Simone)
|
||||||
|
|
||||||
Please report [issues on YunoHost bugtracker](https://dev.yunohost.org/projects/yunohost/issues) (no registration needed).
|
Please report [issues on YunoHost bugtracker](https://github.com/YunoHost/issues/issues).
|
||||||
|
|
7
XMPP.md
7
XMPP.md
|
@ -2,17 +2,16 @@
|
||||||
<abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr> is a communication protocol of instant messaging, VoIP (Voice over IP), videoconferencing.
|
<abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr> is a communication protocol of instant messaging, VoIP (Voice over IP), videoconferencing.
|
||||||
|
|
||||||
YunoHost provide:
|
YunoHost provide:
|
||||||
* [Metronome](http://www.lightwitch.org/metronome): a XMPP server
|
* [Metronome](https://metronome.im/): a XMPP server
|
||||||
* [Jappix](/apps): a web XMPP client
|
|
||||||
|
|
||||||
## Desktop XMPP client
|
## Desktop XMPP client
|
||||||
|
|
||||||
You can connect to your XMPP server with any standard desktop XMPP client, such as [Pidgin](http://pidgin.im/), [Gajim](http://gajim.org), [Jitsi](http://jitsi.org/) or [Adium](https://adium.im/).
|
You can connect to your XMPP server with any standard desktop XMPP client, such as [Pidgin](http://pidgin.im/), [Gajim](http://gajim.org), [Jitsi](http://jitsi.org/) or [Adium](https://adium.im/).
|
||||||
|
|
||||||
The credentials to give are :
|
The credentials to give are :
|
||||||
* The first part of your email address (without the @domain.tld)
|
* Your email address (with the @domain.tld)
|
||||||
* Your standard YunoHost password
|
* Your standard YunoHost password
|
||||||
|
|
||||||
Your XMPP server runs on the standard port 5222. Your administrator might need to forward this port if the server is behind a router.
|
Your XMPP server runs on the standard port 5222. Your administrator might need to forward this port if the server is behind a router.
|
||||||
|
|
||||||
<img src="/images/Pidgin-add-acount.png" width=500>
|
<img src="/images/Pidgin-add-acount.png" width=500>
|
||||||
|
|
21
XMPP_fr.md
21
XMPP_fr.md
|
@ -2,11 +2,9 @@
|
||||||
|
|
||||||
Yunohost est installé avec un serveur de messagerie instantanée <abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr> (metronome).
|
Yunohost est installé avec un serveur de messagerie instantanée <abbr title="Extensible Messaging and Presence Protocol">XMPP</abbr> (metronome).
|
||||||
|
|
||||||
Vous pouvez discuter simplement avec des contacts XMPP/Jabber en installant l’application [Jappix](https://jappix.com/) depuis l’interface d’administration.
|
|
||||||
|
|
||||||
[XMPP](https://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol) est un protocole ouvert et extensible qui permet également de créer des salons de discussions, de partager des statuts et des données, de passer des appels en VoIP et de faire de la visioconférence.
|
[XMPP](https://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol) est un protocole ouvert et extensible qui permet également de créer des salons de discussions, de partager des statuts et des données, de passer des appels en VoIP et de faire de la visioconférence.
|
||||||
|
|
||||||
Toutes les applications basées sur XMPP sont compatibles entre-elles : lorsque vous utilisez un client XMPP vous pouvez discuter avec n’importe quel possesseur.e d’un compte XMPP/Jabber. Ce protocole est déjà utilisé par des millions de personnes dans le monde.
|
Toutes les applications basées sur XMPP sont compatibles entre-elles : lorsque vous utilisez un client XMPP vous pouvez discuter avec n’importe quel possesseur d’un compte XMPP/Jabber. Ce protocole est déjà utilisé par des millions de personnes dans le monde.
|
||||||
|
|
||||||
### Compte XMPP/Jabber
|
### Compte XMPP/Jabber
|
||||||
|
|
||||||
|
@ -14,9 +12,9 @@ Un compte XMPP/Jabber est basé sur un identifiant sous la forme `utilisateur@do
|
||||||
|
|
||||||
Sous yunohost, cet identifiant correspond simplement à l’adresse courriel principale d’un utilisateur. Le mot de passe est celui du compte de l’utilisateur.
|
Sous yunohost, cet identifiant correspond simplement à l’adresse courriel principale d’un utilisateur. Le mot de passe est celui du compte de l’utilisateur.
|
||||||
|
|
||||||
### Utiliser un autre client XMPP
|
### Se connecter à XMPP
|
||||||
|
|
||||||
En plus de Jappix, il existe d’autres clients web orientés réseau social, comme [Movim](https://pod.movim.eu) ou [Libervia/Salut à Toi](http://salut-a-toi.org/).
|
Il existe des clients web orientés réseau social, comme [Movim](https://pod.movim.eu) ou [Libervia/Salut à Toi](http://salut-a-toi.org/).
|
||||||
|
|
||||||
Vous pouvez également utiliser un client desktop comme [Pidgin](http://pidgin.im/) (multiplateforme), [Gajim](http://gajim.org/index.fr.html) (Linux), [thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplateforme), [Jitsi](http://jitsi.org/) (multiplateforme) ou [Adium](https://adium.im/) (Mac OS).
|
Vous pouvez également utiliser un client desktop comme [Pidgin](http://pidgin.im/) (multiplateforme), [Gajim](http://gajim.org/index.fr.html) (Linux), [thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplateforme), [Jitsi](http://jitsi.org/) (multiplateforme) ou [Adium](https://adium.im/) (Mac OS).
|
||||||
|
|
||||||
|
@ -27,21 +25,20 @@ Vous pouvez également utiliser un client desktop comme [Pidgin](http://pidgin.i
|
||||||
|
|
||||||
Voici une liste plus exhaustive des clients XMPP : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP
|
Voici une liste plus exhaustive des clients XMPP : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP
|
||||||
|
|
||||||
### Chiffrer ses conversations avec OTR
|
### Chiffrer ses conversations avec OMEMO
|
||||||
|
|
||||||
Il est possible de chiffrer ses conversations XMPP à l’aide de [OTR](https://otr.cypherpunks.ca/index.php#downloads), notamment en utilisant Pidgin :
|
Il est possible de chiffrer ses conversations XMPP à l’aide de [OMEMO](https://xmpp.org/extensions/xep-0384.html), notamment en utilisant Gajim :
|
||||||
* Installer `pidgin` et le plugin [`pidgin-otr`](https://otr.cypherpunks.ca/index.php#downloads)(sous linux il devrait être disponible avec votre gestionnaire de paquet)
|
* Installer `gajim` et le plugin `gajim-omemo`
|
||||||
* Activez le plugins dans `Outils > Plugins`
|
* Activez le plugins dans `Outils > Plugins`
|
||||||
* Faite `produire` pour générer une empreinte
|
* L'activer
|
||||||
* Activez le chiffrement dans une conversation avec un contact disposant de l’OTR.
|
* Activez le chiffrement dans une conversation avec un contact disposant de OMEMO.
|
||||||
|
|
||||||
### Salon de discussion
|
### Salon de discussion
|
||||||
|
|
||||||
Pour créer un salon de discussion (Multi-user chat) sur votre serveur Yunohost utilisez l’identifiant nomsalon@muc.domaine.tld (ou domaine.tld est le domaine principal de votre serveur).
|
Pour créer un salon de discussion (Multi-user chat) sur votre serveur Yunohost utilisez l’identifiant nomsalon@muc.domaine.tld (où domaine.tld est le domaine principal de votre serveur).
|
||||||
|
|
||||||
Si vous utilisez un nom de domaine personnel, il est nécessaire d’[ajouter une redirection de `type CNAME` pour le sous domaine `muc.`](dns_config_fr) au niveau de votre serveur DNS.
|
Si vous utilisez un nom de domaine personnel, il est nécessaire d’[ajouter une redirection de `type CNAME` pour le sous domaine `muc.`](dns_config_fr) au niveau de votre serveur DNS.
|
||||||
|
|
||||||
### VoIP et visioconférence
|
### VoIP et visioconférence
|
||||||
|
|
||||||
Un moyen pratique d’appeler un contact XMPP, en VoIP ou en appel vidéo, est d’utiliser le client [Jitsi](http://jitsi.org/).
|
Un moyen pratique d’appeler un contact XMPP, en VoIP ou en appel vidéo, est d’utiliser le client [Jitsi](http://jitsi.org/).
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
#Accounting
|
|
||||||
|
|
||||||
If you want to contribute to this documentation, you have to [ask an admin to create an account](/support) **OR** send merge requests to the pages' [git repository](https://github.com/YunoHost/doc).
|
|
|
@ -1,3 +0,0 @@
|
||||||
#Comptes utilisateur
|
|
||||||
|
|
||||||
Si vous voulez contribuer à cette documentation, vous devez [demander à un administrateur de vous créer un compte](/support_fr), ou modifier directement le répertoire des pages via le [dépôt Git](https://github.com/YunoHost/doc).
|
|
18
admin.md
18
admin.md
|
@ -1,8 +1,6 @@
|
||||||
# Administrator web interface
|
# Administrator web interface
|
||||||
|
|
||||||
Yunohost has an administrator web interface. The other way to administer your Yunohost install is through the [CLI called "moulinette"](/moulinette)
|
Yunohost has an administrator web interface. The other way to administrate your Yunohost install is through the [command line](/commandline).
|
||||||
|
|
||||||
**Please note** that the web interface is an active work-in-progress and has far fewer features than the CLI moulinette.
|
|
||||||
|
|
||||||
### Access
|
### Access
|
||||||
|
|
||||||
|
@ -12,20 +10,9 @@ You can access your administrator web interface at this address: https://example
|
||||||
<img src="/images/manage_en.png" style="max-width:100%;">
|
<img src="/images/manage_en.png" style="max-width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
### Reset admin password
|
### Reset admin password
|
||||||
|
|
||||||
#### On Yunohost 2.5
|
|
||||||
|
|
||||||
The script to reset the admin password is not directly available, but can be downloaded and executed (as root) :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ wget https://raw.githubusercontent.com/YunoHost/yunohost/testing/sbin/yunohost-reset-ldap-password
|
|
||||||
$ chmod +x yunohost-reset-ldap-password
|
|
||||||
$ ./yunohost-reset-ldap-password
|
|
||||||
```
|
|
||||||
|
|
||||||
#### From Yunohost 2.6
|
|
||||||
|
|
||||||
To reset the admin password (as root) :
|
To reset the admin password (as root) :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -34,6 +21,7 @@ $ yunohost-reset-ldap-password
|
||||||
|
|
||||||
A temporary password will be created, which you can use to define the new password.
|
A temporary password will be created, which you can use to define the new password.
|
||||||
|
|
||||||
|
|
||||||
### How to move application folder
|
### How to move application folder
|
||||||
|
|
||||||
To change an application folder, only a few commands are needed: move content, create a symlink and set access rights.
|
To change an application folder, only a few commands are needed: move content, create a symlink and set access rights.
|
||||||
|
|
21
admin_fr.md
21
admin_fr.md
|
@ -1,30 +1,18 @@
|
||||||
# L’interface d’administration web
|
# L’interface d’administration web
|
||||||
|
|
||||||
YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [moulinette](/moulinette_fr) ligne de commande.
|
YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [ligne de commande](/commandline_fr).
|
||||||
|
|
||||||
**Attention** : l’interface d’administration donne accès à beaucoup moins de fonctionnalités que la moulinette, car elle est en développement actif.
|
|
||||||
|
|
||||||
### Accès
|
### Accès
|
||||||
|
|
||||||
L’interface admin est accessible depuis votre instance YunoHost à l’adresse https://exemple.org/yunohost/admin (remplacez exemple.org par la bonne valeur)
|
L’interface admin est accessible depuis votre instance YunoHost à l’adresse https://exemple.org/yunohost/admin (remplacez exemple.org par la bonne valeur)
|
||||||
|
|
||||||
<div class="text-center" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<div class="text-center" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
||||||
<img src="/images/manage.png" style="max-width:100%;">
|
<img src="/images/manage.png" style="max-width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
### Réinitialiser le mot de passe administrateur
|
### Réinitialiser le mot de passe administrateur
|
||||||
|
|
||||||
#### Sous Yunohost 2.5
|
|
||||||
|
|
||||||
Le script pour réinitialiser le mot de passe adminstrateur n'est pas directement disponible, mais peut être téléchargé puis executé (à partir de l'utilisateur root) :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ wget https://raw.githubusercontent.com/YunoHost/yunohost/testing/sbin/yunohost-reset-ldap-password
|
|
||||||
$ chmod +x yunohost-reset-ldap-password
|
|
||||||
$ ./yunohost-reset-ldap-password
|
|
||||||
```
|
|
||||||
|
|
||||||
#### À partir de Yunohost 2.6
|
|
||||||
|
|
||||||
Pour réinitialiser le mot de passe administrateur de YunoHost (à partir de l'utilisateur root) :
|
Pour réinitialiser le mot de passe administrateur de YunoHost (à partir de l'utilisateur root) :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -34,10 +22,9 @@ $ yunohost-reset-ldap-password
|
||||||
Un mot de passe temporaire sera créé, que vous pouvez utiliser pour ensuite définir un nouveau mot de passe.
|
Un mot de passe temporaire sera créé, que vous pouvez utiliser pour ensuite définir un nouveau mot de passe.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Comment déplacer le dossier d’une application
|
### Comment déplacer le dossier d’une application
|
||||||
|
|
||||||
Pour changer le dossier contenant une application, seules quelques commandes sont nécessaires : déplacer le contenu créer un lien symbolique et définir les droits d’accès.
|
Pour changer le dossier contenant une application, seules quelques commandes sont nécessaires : déplacer le contenu, créer un lien symbolique et définir les droits d’accès.
|
||||||
|
|
||||||
Exemple avec WordPress :
|
Exemple avec WordPress :
|
||||||
```bash
|
```bash
|
||||||
|
|
62
admindoc.md
62
admindoc.md
|
@ -1,35 +1,37 @@
|
||||||
# Administrator documentation
|
# Administrator documentation
|
||||||
|
|
||||||
*For want of anything better, here is an index of interesting pages for the YunoHost server's administrator.*
|
* Discovering self-hosting
|
||||||
|
* [What is Self-hosting](/selfhosting)
|
||||||
* [What is Self-hosting](/selfhosting)
|
* [What is YunoHost](/whatsyunohost)
|
||||||
* [Compatible hardware](/hardware)
|
* Before installing
|
||||||
* [Installation guide](/install)
|
* [Try YunoHost](/try)
|
||||||
* [On an OLinuXino board](/install_on_olinuxino)
|
* [Choosing hardware](/hardware)
|
||||||
* [On an ARM board](/install_on_arm_board)
|
* [About the friendliness of internet service providers](/isp)
|
||||||
|
* [Installing YunoHost](/install)
|
||||||
|
* [On a regular computer](/install_iso)
|
||||||
|
* [On a dedicated or a virtual private server](/install_on_vps)
|
||||||
* [On a Raspberry Pi](/install_on_raspberry)
|
* [On a Raspberry Pi](/install_on_raspberry)
|
||||||
* [From an ISO](/install_iso)
|
* [On an ARM board](/install_on_arm_board)
|
||||||
* [On Debian](/install_on_debian)
|
* [On Debian](/install_on_debian)
|
||||||
* [On VirtualBox](/install_on_virtualbox)
|
* [On VirtualBox](/install_on_virtualbox)
|
||||||
* [On Vagrant](/vagrant)
|
* Finalizing your setup
|
||||||
* [On a dedicated or a virtual private server](/install_on_vps)
|
* [Post-installation](/postinstall)
|
||||||
* Installation steps
|
* [Configuring port forwarding](/isp_box_config)
|
||||||
* [Burn or copy iso](/burn_or_copy_iso)
|
* [Configuring DNS records](/dns_config)
|
||||||
* [Boot and graphical install](/boot_and_graphical_install)
|
* [Installing an SSL certificate](/certificate)
|
||||||
* [Copy YunoHost image on SD card](/copy_image)
|
* [Diagnose if your setup is working properly](/diagnostic)
|
||||||
* [Manual instalation](/install_manually)
|
* Getting to know YunoHost
|
||||||
* [Plug and boot your server](/plug_and_boot)
|
* [Web administration interface](/admin)
|
||||||
* [Post-instalation](/postinstall)
|
* [Connecting to your server using SSH](/ssh)
|
||||||
* [Available applications](/apps)
|
* [Command-line administration](/commandline)
|
||||||
* [Administration interface usage](/admin)
|
* [Application catalog](/apps)
|
||||||
* [Command-line interface usage](/moulinette)
|
* [Updating your server](/update) and [apps](/app_update)
|
||||||
* [List of friendly ISPs](/isp)
|
* [Backup](/backup)
|
||||||
* [Security](/security)
|
* Going further
|
||||||
* [Hide services with Tor](/torhiddenservice)
|
* [Improving security](/security)
|
||||||
* [DNS understanding](/dns)
|
* [Adding an external storage](/external_storage)
|
||||||
* [What is YunoHost](/whatsyunohost)
|
* [Migrating emails to YunoHost](/email_migration)
|
||||||
* [Unlock IP in iptables](/fail2ban)
|
* [Hide services with Tor](/torhiddenservice)
|
||||||
* [SSL certificate installation](/certificate)
|
* [Troubleshooting guide](/troubleshooting_guide)
|
||||||
* [Troubleshooting guide](/troubleshooting_guide_en)
|
* [Unlock IP in iptables](/fail2ban)
|
||||||
* [Backup](/backup)
|
* [Changing the administration password](/change_admin_password)
|
||||||
* [Update](/update)
|
|
||||||
|
|
107
admindoc_fr.md
107
admindoc_fr.md
|
@ -1,72 +1,49 @@
|
||||||
# Documentation pour les administrateurs YunoHost
|
# Documentation pour les administrateurs YunoHost
|
||||||
|
|
||||||
* [L’auto-hébergement](/selfhosting_fr)
|
* Découvrir l'auto-hébergement
|
||||||
* [Matériel compatible](/hardware_fr)
|
* [Qu'est-ce que l'auto-hébergement](/selfhosting_fr)
|
||||||
|
* [Qu'est-ce que YunoHost](/whatsyunohost_fr)
|
||||||
|
* Avant de se lancer
|
||||||
|
* [Essayer YunoHost](/try_fr)
|
||||||
|
* [Matériel compatible](/hardware_fr)
|
||||||
|
* [À propos des fournisseurs d'accès internet](/isp_fr)
|
||||||
* [Guide d’installation](/install_fr)
|
* [Guide d’installation](/install_fr)
|
||||||
* [Sur une carte OLinuXino](/install_on_olinuxino_fr)
|
* [Sur un ordinateur "standard"](/install_iso_fr)
|
||||||
* [Sur une carte ARM](/install_on_arm_board_fr)
|
* [Sur un serveur dédié ou virtuel (VPS)](/install_on_vps_fr)
|
||||||
* [Sur un Raspberry Pi](/install_on_raspberry_fr)
|
* [Sur un Raspberry Pi](/install_on_raspberry_fr)
|
||||||
* [À partir de l’ISO](/install_iso_fr)
|
* [Sur une carte ARM](/install_on_arm_board_fr)
|
||||||
* [Sur Debian](/install_on_debian_fr)
|
* [Sur Debian](/install_on_debian_fr)
|
||||||
* [Sur VirtualBox](/install_on_virtualbox_fr)
|
* [Sur VirtualBox](/install_on_virtualbox_fr)
|
||||||
* [Sur Vagrant](/vagrant_fr)
|
* Finaliser son installation
|
||||||
* [Sur un serveur dédié](/install_on_vps_fr)
|
* [Post-installation](/postinstall_fr)
|
||||||
* Étapes d’installation
|
* [Configurer les redirections de port](/isp_box_config_fr)
|
||||||
* [Graver ou copier l’ISO](/burn_or_copy_iso_fr)
|
* [Configurer les enregistrements DNS](/dns_config_fr)
|
||||||
* [Démarrage et installation graphique](/boot_and_graphical_install_fr)
|
* [Installer un certificat SSL](/certificate_fr)
|
||||||
* [Copier l’image YunoHost sur une carte SD](/copy_image_fr)
|
* [Diagnostic du bon fonctionnement du YunoHost](/diagnostic_fr)
|
||||||
* [Installation manuelle](/install_manually_fr)
|
* Apprendre à connaitre YunoHost
|
||||||
* [Brancher et démarrer votre serveur](/plug_and_boot_fr)
|
* [L'interface d'administration web](/admin_fr)
|
||||||
* [Post-installation](/postinstall_fr)
|
* [Se connecter à son serveur via SSH](/ssh_fr)
|
||||||
* [Diagnostic du bon fonctionnement du YunoHost](/diagnostic_fr)
|
* [Administrer son serveur en ligne de commande](/commandline_fr)
|
||||||
* [DNS - Système de nom de domaine](/dns_fr)
|
* [Catalogue d'applications](/apps_fr)
|
||||||
* [Bureaux d’enregistrements de nom de domaine - Registrar](registrar_fr)
|
* [Mettre à jour son serveur](/update_fr) et [les apps](/app_update_fr)
|
||||||
* [Configuration du DNS chez son registrar](/dns_config_fr)
|
* [Les sauvegardes](/backup_fr)
|
||||||
* [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr)
|
* Pour aller plus loin
|
||||||
* [Utiliser le résolveur DNS](/dns_resolver_fr)
|
* [Améliorer la sécurité](/security_fr)
|
||||||
* [Configurer un DNS dynamique avec une adresse IP dynamique](dns_dynamicip_fr)
|
* Noms de domaine
|
||||||
* [Avec OVH](/OVH_fr)
|
* [Nom de domaine en noho.st / nohost.me](/dns_nohost_me_fr)
|
||||||
* [Accéder à son domaine depuis le réseau local](/dns_local_network_fr)
|
* [Configurer un DNS dynamique avec une adresse IP dynamique](/dns_dynamicip_fr)
|
||||||
* [Nom de domaine en Nohost.me](/dns_nohost_me_fr)
|
* [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr)
|
||||||
* [Applications officielles](/apps_fr)
|
* [Utiliser le résolveur DNS local](/dns_resolver_fr)
|
||||||
* [Mettre à jour ses applications](app_update_fr)
|
* [Gérer les enregistrements DNS chez OVH](/OVH_fr)
|
||||||
* [Applications en cours](apps_in_progress_fr)
|
* Notes à propos de certains fournisseurs d'accès à Internet
|
||||||
* [Applications souhaitées](apps_wishlist_fr)
|
* [SFR](/isp_sfr_fr)
|
||||||
* [Nextcloud](app_nextcloud_fr)
|
* [Orange](/isp_orange_fr)
|
||||||
* [Fournisseurs d’accès à Internet](/isp_fr)
|
* [Free](/isp_free_fr)
|
||||||
* [Configuration générale d’une box](/isp_box_config_fr)
|
* [Ajouter un stockage externe](/external_storage_fr)
|
||||||
* [SFR](/isp_sfr_fr)
|
* [Migrer ses emails vers YunoHost](/email_migration_fr)
|
||||||
* [Orange](/isp_orange_fr)
|
* [YunoHost avec un service caché Tor](/torhiddenservice_fr)
|
||||||
* [Free](/isp_free_fr)
|
* [Utilisation de certificats autres que Let's Encrypt](/certificate_custom_fr)
|
||||||
* [Administration via l’interface en ligne](/admin_fr)
|
|
||||||
* [Administration via l’API](/admin_api_fr)
|
|
||||||
* [Sécurité](/security_fr)
|
|
||||||
* [Authentification SSH par clé](/security_fr)
|
|
||||||
* [Modifier le port SSH](/security_fr)
|
|
||||||
* [Changer l’utilisateur autorisé à se connecter par SSH](/security_fr)
|
|
||||||
* [Désactivation de l’API YunoHost](/security_fr)
|
|
||||||
* [Connexion à son serveur en ligne de commande avec SSH](/ssh_fr)
|
|
||||||
* [Guide de dépannage](/troubleshooting_guide_fr)
|
* [Guide de dépannage](/troubleshooting_guide_fr)
|
||||||
* [Notes générales](/troubleshooting_guide_fr)
|
* [Débloquer une IP dans Fail2ban](/fail2ban_fr)
|
||||||
* [Mise à jour](/troubleshooting_guide_fr)
|
* [Changer le mot de passe d’administration](/change_admin_password_fr)
|
||||||
* [Les services](/troubleshooting_guide_fr)
|
* [Formulaires pour enlever son IP des listes noires](/blacklist_forms_fr)
|
||||||
* [Journaux système](/troubleshooting_guide_fr)
|
|
||||||
* [Utilisation de la RAM](/troubleshooting_guide_fr)
|
|
||||||
* [Espace disque](/troubleshooting_guide_fr)
|
|
||||||
* [Applications](/troubleshooting_guide_fr)
|
|
||||||
* [Applications PHP](/troubleshooting_guide_fr)
|
|
||||||
* [Applications Python](/troubleshooting_guide_fr)
|
|
||||||
* [Applications Node.js](/troubleshooting_guide_fr)
|
|
||||||
* [Autres (Go, Java…)](/troubleshooting_guide_fr)
|
|
||||||
* [L’administration en ligne de commande avec la Moulinette](/moulinette_fr)
|
|
||||||
* [Changer le mot de passe d’administration](/change_admin_password_fr)
|
|
||||||
* [Courrier électronique](email_fr)
|
|
||||||
* [Formulaires pour enlever son IP des listes noires](blacklist_forms_fr)
|
|
||||||
* [La signature du serveur via DKIM](dkim_fr)
|
|
||||||
* [Gestion des certificats](/certificate_fr)
|
|
||||||
* [Régénérer un certificat](/regenerate_certificate_fr)
|
|
||||||
* [Utiliser Let's Encrypt](/certmanager_fr)
|
|
||||||
* [YunoHost avec un service caché Tor](/torhiddenservice_fr)
|
|
||||||
* [Débloquer une IP avec Fail2ban](/fail2ban_fr)
|
|
||||||
* [Les sauvegardes](/backup_fr)
|
|
||||||
* [Les mises à jour](/update_fr)
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ The user name specified is "admin" followed by the specific password choosen at
|
||||||
|
|
||||||
### Example of creating a new user:
|
### Example of creating a new user:
|
||||||
|
|
||||||
Go to the "settings" tab, select "Digest" in "WebDAV authentication type".
|
|
||||||
Add users to the "Users and resources" tab.
|
Add users to the "Users and resources" tab.
|
||||||
|
|
||||||
## CalDAV Connection
|
## CalDAV Connection
|
||||||
|
|
|
@ -43,7 +43,7 @@ Ajoutez un nouveau carnet d’adresses en allant dans Paramètres > Préférence
|
||||||
Renseigner :
|
Renseigner :
|
||||||
* Nom du carnet d’adresses : `default`
|
* Nom du carnet d’adresses : `default`
|
||||||
* Nom d’utilisateur : `username`
|
* Nom d’utilisateur : `username`
|
||||||
* Mot de passe : `leMotDePasseAssociéAUsername`
|
* Mot de passe : `leMotDePasseAssociéAUusername`
|
||||||
* URL : `https://example.com/baikal/card.php/addressbooks/username/default`
|
* URL : `https://example.com/baikal/card.php/addressbooks/username/default`
|
||||||
|
|
||||||
*En prenant soin de remplacer « example.com » par votre domaine et « username » par votre nom d’utilisateur*
|
*En prenant soin de remplacer « example.com » par votre domaine et « username » par votre nom d’utilisateur*
|
||||||
|
|
|
@ -14,4 +14,4 @@ Remplacez l’URL par la vôtre : https://mondomaine.tld/adresse/token/1.0/sync
|
||||||
Créez un compte chez Mozilla : https://accounts.firefox.com/signup
|
Créez un compte chez Mozilla : https://accounts.firefox.com/signup
|
||||||
|
|
||||||
#### Firefox mobile
|
#### Firefox mobile
|
||||||
Avec la dernière version de firefox mobile c'est identique que firefox pour le bureau.
|
Avec la dernière version de firefox mobile c'est identique à firefox pour le bureau.
|
||||||
|
|
6
app_firefly_iii.md
Normal file
6
app_firefly_iii.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Firefly III
|
||||||
|
|
||||||
|
For support and notes regarding the installation and use of Firefly III on YunoHost, please see these pages:
|
||||||
|
|
||||||
|
* [The official documentation](http://firefly-iii.readthedocs.io/en/latest/)
|
||||||
|
* [The pages on YunoHost specifically](http://firefly-iii.readthedocs.io/en/latest/installation/yunohost.html)
|
|
@ -1,6 +1,6 @@
|
||||||
#<img src="/images/limesurvey.png">LimeSurvey
|
#<img src="/images/limesurvey.png">LimeSurvey
|
||||||
|
|
||||||
LimeSurvey est un outil de création et diffusion de sondage/formulaire en ligne..
|
LimeSurvey est un outil de création et diffusion de sondage/formulaire en ligne.
|
||||||
|
|
||||||
### Comment créer un questionnaire
|
### Comment créer un questionnaire
|
||||||
Pour créer un questionnaire, il faut accéder à l'interface d'administration.
|
Pour créer un questionnaire, il faut accéder à l'interface d'administration.
|
||||||
|
|
262
app_netdata.md
Normal file
262
app_netdata.md
Normal file
|
@ -0,0 +1,262 @@
|
||||||
|
## NetData
|
||||||
|
|
||||||
|
[NetData](http://my-netdata.io/) is a system for **distributed real-time performance and health monitoring**.
|
||||||
|
It provides **unparalleled insights, in real-time**, of everything happening on the
|
||||||
|
system it runs (including applications such as web and database servers), using
|
||||||
|
**modern interactive web dashboards**.
|
||||||
|
|
||||||
|
_netdata is **fast** and **efficient**, designed to permanently run on all systems
|
||||||
|
(**physical** & **virtual** servers, **containers**, **IoT** devices), without
|
||||||
|
disrupting their core function._
|
||||||
|
|
||||||
|
[![Install Piwigo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo)
|
||||||
|
|
||||||
|
**Customization brought by the package:**
|
||||||
|
|
||||||
|
* grant MySQL statistics access via a `netdata` user
|
||||||
|
* nginx root log statistics via putting `netdata` user in the `adm` group
|
||||||
|
* Dovecot statistics via giving access to Dovecot stats stocket to `netdata` user (works only with Dovecot 2.2.16+)
|
||||||
|
|
||||||
|
**Further recommendations:**
|
||||||
|
We don't allow YunoHost packages to make sensible changes to system files. So here are further customizations you can make to allow more monitoring:
|
||||||
|
|
||||||
|
* Nginx:
|
||||||
|
* requests/connections: follow [these recommandations](https://github.com/firehol/netdata/tree/master/python.d#nginx) to enable `/stab_status` (for example by putting the `location` section in `/etc/nginx/conf.d/yunohost_admin.conf`
|
||||||
|
* weblogs: you can monitor all your nginx weblogs for errors; follow [these recommendations](https://github.com/firehol/netdata/tree/master/python.d#nginx_log)
|
||||||
|
* phpfpm: follow [these recommandations](https://github.com/firehol/netdata/tree/master/python.d#phpfpm)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://cloud.githubusercontent.com/assets/2662304/19168687/f6a567be-8c19-11e6-8561-ce8d589e8346.gif"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
- **Stunning interactive bootstrap dashboards**<br/>
|
||||||
|
mouse and touch friendly, in 2 themes: dark, light
|
||||||
|
|
||||||
|
- **Amazingly fast**<br/>
|
||||||
|
responds to all queries in less than 0.5 ms per metric,
|
||||||
|
even on low-end hardware
|
||||||
|
|
||||||
|
- **Highly efficient**<br/>
|
||||||
|
collects thousands of metrics per server per second,
|
||||||
|
with just 1% CPU utilization of a single core, a few MB of RAM and no disk I/O at all
|
||||||
|
|
||||||
|
- **Sophisticated alarming**<br/>
|
||||||
|
hundreds of alarms, **out of the box**!<br/>
|
||||||
|
supports dynamic thresholds, hysteresis, alarm templates,
|
||||||
|
multiple role-based notification methods (such as email, slack.com,
|
||||||
|
pushover.net, pushbullet.com, telegram.org, twilio.com, messagebird.com)
|
||||||
|
|
||||||
|
- **Extensible**<br/>
|
||||||
|
you can monitor anything you can get a metric for,
|
||||||
|
using its Plugin API (anything can be a netdata plugin,
|
||||||
|
BASH, python, perl, node.js, java, Go, ruby, etc)
|
||||||
|
|
||||||
|
- **Embeddable**<br/>
|
||||||
|
it can run anywhere a Linux kernel runs (even IoT)
|
||||||
|
and its charts can be embedded on your web pages too
|
||||||
|
|
||||||
|
- **Customizable**<br/>
|
||||||
|
custom dashboards can be built using simple HTML (no javascript necessary)
|
||||||
|
|
||||||
|
- **Zero configuration**<br/>
|
||||||
|
auto-detects everything, it can collect up to 5000 metrics
|
||||||
|
per server out of the box
|
||||||
|
|
||||||
|
- **Zero dependencies**<br/>
|
||||||
|
it is even its own web server, for its static web files and its web API
|
||||||
|
|
||||||
|
- **Zero maintenance**<br/>
|
||||||
|
you just run it, it does the rest
|
||||||
|
|
||||||
|
- **scales to infinity**<br/>
|
||||||
|
requiring minimal central resources
|
||||||
|
|
||||||
|
- **several operating modes**<br/>
|
||||||
|
autonomous host monitoring, headless data collector, forwarding proxy, store and forward proxy, central multi-host monitoring, in all possible configurations.
|
||||||
|
Each node may have different metrics retention policy and run with or without health monitoring.
|
||||||
|
|
||||||
|
- **time-series back-ends supported**<br/>
|
||||||
|
can archive its metrics on `graphite`, `opentsdb`, `prometheus`, json document DBs, in the same or lower detail
|
||||||
|
(lower: to prevent it from congesting these servers due to the amount of data collected)
|
||||||
|
|
||||||
|
![netdata](https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What does it monitor?
|
||||||
|
|
||||||
|
netdata collects several thousands of metrics per device.
|
||||||
|
All these metrics are collected and visualized in real-time.
|
||||||
|
|
||||||
|
> _Almost all metrics are auto-detected, without any configuration._
|
||||||
|
|
||||||
|
This is a list of what it currently monitors:
|
||||||
|
|
||||||
|
- **CPU**<br/>
|
||||||
|
usage, interrupts, softirqs, frequency, total and per core, CPU states
|
||||||
|
|
||||||
|
- **Memory**<br/>
|
||||||
|
RAM, swap and kernel memory usage, KSM (Kernel Samepage Merging), NUMA
|
||||||
|
|
||||||
|
- **Disks**<br/>
|
||||||
|
per disk: I/O, operations, backlog, utilization, space, software RAID (md)
|
||||||
|
|
||||||
|
![sda](https://cloud.githubusercontent.com/assets/2662304/14093195/c882bbf4-f554-11e5-8863-1788d643d2c0.gif)
|
||||||
|
|
||||||
|
- **Network interfaces**<br/>
|
||||||
|
per interface: bandwidth, packets, errors, drops
|
||||||
|
|
||||||
|
![dsl0](https://cloud.githubusercontent.com/assets/2662304/14093128/4d566494-f554-11e5-8ee4-5392e0ac51f0.gif)
|
||||||
|
|
||||||
|
- **IPv4 networking**<br/>
|
||||||
|
bandwidth, packets, errors, fragments,
|
||||||
|
tcp: connections, packets, errors, handshake,
|
||||||
|
udp: packets, errors,
|
||||||
|
broadcast: bandwidth, packets,
|
||||||
|
multicast: bandwidth, packets
|
||||||
|
|
||||||
|
- **IPv6 networking**<br/>
|
||||||
|
bandwidth, packets, errors, fragments, ECT,
|
||||||
|
udp: packets, errors,
|
||||||
|
udplite: packets, errors,
|
||||||
|
broadcast: bandwidth,
|
||||||
|
multicast: bandwidth, packets,
|
||||||
|
icmp: messages, errors, echos, router, neighbor, MLDv2, group membership,
|
||||||
|
break down by type
|
||||||
|
|
||||||
|
- **Interprocess Communication - IPC**<br/>
|
||||||
|
such as semaphores and semaphores arrays
|
||||||
|
|
||||||
|
- **netfilter / iptables Linux firewall**<br/>
|
||||||
|
connections, connection tracker events, errors
|
||||||
|
|
||||||
|
- **Linux DDoS protection**<br/>
|
||||||
|
SYNPROXY metrics
|
||||||
|
|
||||||
|
- **fping** latencies</br>
|
||||||
|
for any number of hosts, showing latency, packets and packet loss
|
||||||
|
|
||||||
|
![image](https://cloud.githubusercontent.com/assets/2662304/20464811/9517d2b4-af57-11e6-8361-f6cc57541cd7.png)
|
||||||
|
|
||||||
|
|
||||||
|
- **Processes**<br/>
|
||||||
|
running, blocked, forks, active
|
||||||
|
|
||||||
|
- **Entropy**<br/>
|
||||||
|
random numbers pool, using in cryptography
|
||||||
|
|
||||||
|
- **NFS file servers and clients**<br/>
|
||||||
|
NFS v2, v3, v4: I/O, cache, read ahead, RPC calls
|
||||||
|
|
||||||
|
- **Network QoS**<br/>
|
||||||
|
the only tool that visualizes network `tc` classes in realtime
|
||||||
|
|
||||||
|
![qos-tc-classes](https://cloud.githubusercontent.com/assets/2662304/14093004/68966020-f553-11e5-98fe-ffee2086fafd.gif)
|
||||||
|
|
||||||
|
- **Linux Control Groups**<br/>
|
||||||
|
containers: systemd, lxc, docker
|
||||||
|
|
||||||
|
- **Applications**<br/>
|
||||||
|
by grouping the process tree and reporting CPU, memory, disk reads,
|
||||||
|
disk writes, swap, threads, pipes, sockets - per group
|
||||||
|
|
||||||
|
![apps](https://cloud.githubusercontent.com/assets/2662304/14093565/67c4002c-f557-11e5-86bd-0154f5135def.gif)
|
||||||
|
|
||||||
|
- **Users and User Groups resource usage**<br/>
|
||||||
|
by summarizing the process tree per user and group,
|
||||||
|
reporting: CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets
|
||||||
|
|
||||||
|
- **Apache and lighttpd web servers**<br/>
|
||||||
|
`mod-status` (v2.2, v2.4) and cache log statistics, for multiple servers
|
||||||
|
|
||||||
|
- **Nginx web servers**<br/>
|
||||||
|
`stub-status`, for multiple servers
|
||||||
|
|
||||||
|
- **Tomcat**<br/>
|
||||||
|
accesses, threads, free memory, volume
|
||||||
|
|
||||||
|
- **web server log files**<br/>
|
||||||
|
extracting in real-time, web server performance metrics and applying several health checks
|
||||||
|
|
||||||
|
- **mySQL databases**<br/>
|
||||||
|
multiple servers, each showing: bandwidth, queries/s, handlers, locks, issues,
|
||||||
|
tmp operations, connections, binlog metrics, threads, innodb metrics, and more
|
||||||
|
|
||||||
|
- **Postgres databases**<br/>
|
||||||
|
multiple servers, each showing: per database statistics (connections, tuples
|
||||||
|
read - written - returned, transactions, locks), backend processes, indexes,
|
||||||
|
tables, write ahead, background writer and more
|
||||||
|
|
||||||
|
- **Redis databases**<br/>
|
||||||
|
multiple servers, each showing: operations, hit rate, memory, keys, clients, slaves
|
||||||
|
|
||||||
|
- **mongodb**<br/>
|
||||||
|
operations, clients, transactions, cursors, connections, asserts, locks, etc
|
||||||
|
|
||||||
|
- **memcached databases**<br/>
|
||||||
|
multiple servers, each showing: bandwidth, connections, items
|
||||||
|
|
||||||
|
- **elasticsearch**<br/>
|
||||||
|
search and index performance, latency, timings, cluster statistics, threads statistics, etc
|
||||||
|
|
||||||
|
- **ISC Bind name servers**<br/>
|
||||||
|
multiple servers, each showing: clients, requests, queries, updates, failures and several per view metrics
|
||||||
|
|
||||||
|
- **NSD name servers**<br/>
|
||||||
|
queries, zones, protocols, query types, transfers, etc.
|
||||||
|
|
||||||
|
- **Postfix email servers**<br/>
|
||||||
|
message queue (entries, size)
|
||||||
|
|
||||||
|
- **exim email servers**<br/>
|
||||||
|
message queue (emails queued)
|
||||||
|
|
||||||
|
- **Dovecot** POP3/IMAP servers<br/>
|
||||||
|
|
||||||
|
- **ISC dhcpd**<br/>
|
||||||
|
pools utilization, leases, etc.
|
||||||
|
|
||||||
|
- **IPFS**<br/>
|
||||||
|
bandwidth, peers
|
||||||
|
|
||||||
|
- **Squid proxy servers**<br/>
|
||||||
|
multiple servers, each showing: clients bandwidth and requests, servers bandwidth and requests
|
||||||
|
|
||||||
|
- **HAproxy**<br/>
|
||||||
|
bandwidth, sessions, backends, etc
|
||||||
|
|
||||||
|
- **varnish**<br/>
|
||||||
|
threads, sessions, hits, objects, backends, etc
|
||||||
|
|
||||||
|
- **OpenVPN**<br/>
|
||||||
|
status per tunnel
|
||||||
|
|
||||||
|
- **Hardware sensors**<br/>
|
||||||
|
`lm_sensors` and `IPMI`: temperature, voltage, fans, power, humidity
|
||||||
|
|
||||||
|
- **NUT and APC UPSes**<br/>
|
||||||
|
load, charge, battery voltage, temperature, utility metrics, output metrics
|
||||||
|
|
||||||
|
- **PHP-FPM**<br/>
|
||||||
|
multiple instances, each reporting connections, requests, performance
|
||||||
|
|
||||||
|
- **hddtemp**<br/>
|
||||||
|
disk temperatures
|
||||||
|
|
||||||
|
- **smartd**<br/>
|
||||||
|
disk S.M.A.R.T. values
|
||||||
|
|
||||||
|
- **SNMP devices**<br/>
|
||||||
|
can be monitored too (although you will need to configure these)
|
||||||
|
|
||||||
|
- **statsd**<br/>
|
||||||
|
[netdata is a fully featured statsd server](https://github.com/firehol/netdata/wiki/statsd)
|
||||||
|
|
||||||
|
And you can extend it, by writing plugins that collect data from any source, using any computer language.
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/netdata_ynh/issues
|
||||||
|
* NetData website: http://my-netdata.io/
|
|
@ -1,19 +1,143 @@
|
||||||
#Nextcloud
|
# Ajouter de l'espace de stockage
|
||||||
|
|
||||||
### Utiliser un autre support mémoire
|
La solution I) permet d'ajouter un lien vers un dossier local ou distant.
|
||||||
|
La solution II) permet de déplacer l'espace de stockage principal de nextcloud.
|
||||||
|
|
||||||
**Prérequis :** connaître les commandes d’administration Unix
|
## I) Ajouter un espace de stockage externe
|
||||||
|
|
||||||
Le répertoire des donnés de Nextcloud (contenant les fichiers) sont dans `/home/yunohost.app/nextcloud/data`
|
Paramètre => [Administration] Stockages externe.
|
||||||
|
|
||||||
Il est possible de déplacer ces données sur autre support mémoire.
|
En bas de la liste vous pouvez rajouter un dossier (Il est possible de définir un sous dossier en utilisant la convention `dossier/sousDossier`.)
|
||||||
|
Sélectionner un type de stockage et indiquez les information de connexion demandés.
|
||||||
|
Vous pouvez restreindre ce dossier à un ou plusieurs utilisateurs nextcloud avec la colonne `Disponible pour`.
|
||||||
|
Avec l'engrenage vous pouvez autoriser ou interdire la prévisualisation et le partage des fichiers.
|
||||||
|
Enfin cliquer sur la coche pour valider le dossier.
|
||||||
|
|
||||||
Pour cela, il faut spécifier le nouveau chemin dans le fichier `/var/www/nextcloud/config/config.php` à la ligne `datadirectory`
|
## II) Migrer les données de Nextcloud dans une partition plus grosse
|
||||||
|
|
||||||
Il faut également s’assurer de donner les droits à Nextcloud sur ce répertoire
|
**Remarque** : Ce qui suit suppose que vous avez un disque dur monté sur `/media/stockage`. Référez-vous à [cet article](/external_storage_fr) pour préparer votre système.
|
||||||
|
|
||||||
|
**Remarque** : Remplacez `nextcloud` par le nom de son instance, si vous avez plusieurs apps Nextcloud installées.
|
||||||
|
|
||||||
|
Commencez par éteindre le serveur web avec la commande:
|
||||||
```bash
|
```bash
|
||||||
chown -R nextcloud /le/chemin
|
systemctl stop nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Il faut également que ce support mémoire soit automatiquement monté au démarrage de YunoHost.
|
### Choix de l'emplacement
|
||||||
|
|
||||||
|
#### Cas A : Stockage vierge, exclusif à Nextcloud
|
||||||
|
|
||||||
|
Pour l'instant seul root peut y écrire dans `/media/stockage`; ce qui signifie que nginx et nextcloud ne pourront donc pas l'utiliser.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chown -R nextcloud:www-data /media/stockage
|
||||||
|
chmod 775 -R /media/stockage
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Cas B : Stockage partagé, données déjà présentes, données Nextcloud dans un sous-dossier
|
||||||
|
|
||||||
|
Si vous souhaitez utiliser ce disque pour d'autres applications, vous pouvez créer un sous-dossier appartenant à Nextcloud.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /media/stockage/nextcloud_data
|
||||||
|
chown -R nextcloud /media/stockage/nextcloud_data
|
||||||
|
chmod 775 -R /media/stockage/nextcloud_data
|
||||||
|
```
|
||||||
|
|
||||||
|
### Migrer les données
|
||||||
|
|
||||||
|
Migrez vos données vers le nouveau disque. Pour ce faire *(soyez patient, cela peut être long)* :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Cas A : cp -ir /home/yunohost.app/nextcloud /media/stockage
|
||||||
|
Cas B : cp -ir /home/yunohost.app/nextcloud /media/stockage/nextcloud_data
|
||||||
|
```
|
||||||
|
|
||||||
|
L'option `i` permet de vous demander quoi faire en cas de conflit de fichier, notamment si vous écrasez un ancien dossier de données Owncloud ou Nextcloud.
|
||||||
|
|
||||||
|
Pour vérifier que tout s'est bien passé, comparer ce qu'affichent ces deux commandes (le contenu doit être identique):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -la /home/yunohost.app/nextcloud
|
||||||
|
|
||||||
|
Cas A : ls -al /media/stockage
|
||||||
|
Cas B : ls -al /media/stockage/nextcloud_data
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configurer Nextcloud
|
||||||
|
|
||||||
|
Pour informer Nextcloud de son nouveau répertoire, modifiez le fichier `/var/www/nextcloud/config/config.php` avec la commande:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nano /var/www/nextcloud/config/config.php
|
||||||
|
```
|
||||||
|
|
||||||
|
Cherchez la ligne:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
'datadirectory' => '/home/yunohost.app/nextcloud/data',
|
||||||
|
```
|
||||||
|
|
||||||
|
Que vous modifiez :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
CAS A : 'datadirectory' => '/media/stockage',
|
||||||
|
CAS B : 'datadirectory' => '/media/stockage/nextcloud_data',
|
||||||
|
```
|
||||||
|
|
||||||
|
Sauvegardez avec `ctrl+x` puis `y` ou `o` (dépend de la locale de votre serveur).
|
||||||
|
|
||||||
|
Relancez le serveur web :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl start nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Ajouter le fichier .ocdata
|
||||||
|
```bash
|
||||||
|
CAS A : nano /media/stockage/.ocdata
|
||||||
|
CAS B : nano /media/stockage/nextcloud_data/.ocdata
|
||||||
|
```
|
||||||
|
Ajouter un espace au fichier pour pouvoir le sauvegarder
|
||||||
|
|
||||||
|
Sauvegardez avec `ctrl+x` puis `y` ou `o` (dépend de la locale de votre serveur).
|
||||||
|
|
||||||
|
Lancez un scan du nouveau répertoire par Nextcloud:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/nextcloud
|
||||||
|
sudo -u nextcloud php occ files:scan --all
|
||||||
|
```
|
||||||
|
|
||||||
|
C'est terminé. À présent testez si tout va bien, essayez de vous connecter à votre instance Nextcloud, envoyer un fichier, vérifiez sa bonne synchronisation.
|
||||||
|
|
||||||
|
# L'application KeeWeb
|
||||||
|
|
||||||
|
L'application KeeWeb est un gestionnaire de mots de passe incorporé à Nextcloud. Elle permet par exemple de lire un fichier de type KeePass (*.kdbx*) stocké sur votre instance Nextcloud.
|
||||||
|
Mais il arrive parfois que Nextcloud ne laisse pas l'application prendre en charge ces fichiers, ce qui rend alors impossible leur lecture de KeeWeb. Pour remédier à cela,
|
||||||
|
[une solution](https://github.com/jhass/nextcloud-keeweb/issues/34) existe.
|
||||||
|
|
||||||
|
Ce rendre dans le répertoire de configuration de Nextcloud :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/nextcloud/config/
|
||||||
|
```
|
||||||
|
|
||||||
|
S'il n'existe pas, créer le fichier *mimetypemapping.json* dont le propriétaire est l'utilisateur *nextcloud* :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo su nextcloud -c "nano mimetypemapping.json"
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis ajouter dans ce fichier le texte suivent :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
{
|
||||||
|
"kdbx": ["x-application/kdbx"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Enregistrer le fichier (**CTRL** + **o**) et quitter nano (**CTRL** + **c**).
|
||||||
|
|
||||||
|
A présent, le problème est corrigé.
|
||||||
|
|
14
app_noalyss_fr.md
Normal file
14
app_noalyss_fr.md
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Noalyss
|
||||||
|
|
||||||
|
Logiciel de comptabilité open source développé en PHP.
|
||||||
|
|
||||||
|
Toute les infos sur ce logiciel sont disponible sur le [site du projet](http://www.noalyss.eu)
|
||||||
|
|
||||||
|
Pour apprendre à l'utiliser je vous invite à lire le [wiki du projet](http://www.noalyss.eu/?page_id=46&lang=fr_FR)
|
||||||
|
|
||||||
|
Le github du module Yunohost est [ici](https://github.com/YunoHost-Apps/noalyss_ynh)
|
||||||
|
|
||||||
|
Vous pouvez essayer le projet [ici](http://demo.noalyss.eu/index.php) avec les identifiants : demo /demo
|
||||||
|
|
||||||
|
Enfin pour ne pas galérer comme moi. Les identifiants et mot de passe administrateur lors de la première connexion sont : phpcompta / phpcompta
|
||||||
|
|
32
app_piwigo.md
Normal file
32
app_piwigo.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
## <img src="https://yunohost.org/images/piwigo.png">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Piwigo](http://piwigo.org) is a photo gallery software for the web, built by an active community of users and developers.
|
||||||
|
|
||||||
|
Extensions make Piwigo easily customizable. Icing on the cake, Piwigo is free and opensource.
|
||||||
|
|
||||||
|
[![Install Piwigo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo)
|
||||||
|
|
||||||
|
![](http://piwigo.org/screenshots/homepage/piwigo-batch-manager.png)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
In addition to Piwigo [core features](http://piwigo.org/basics/features), the following are made available with
|
||||||
|
this package:
|
||||||
|
|
||||||
|
* Integrate with YunoHost users and SSO:
|
||||||
|
* private mode: limit access to Yunohost users
|
||||||
|
* public mode:
|
||||||
|
* SSO for YunoHost users
|
||||||
|
* allow other users management, and guest mode
|
||||||
|
* Allow one YunoHost user to be the administrator (set at the installation)
|
||||||
|
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/piwigo_ynh/issues
|
||||||
|
* Piwigo website: http://piwigo.org/
|
||||||
|
|
||||||
|
|
30
app_piwigo_fr.md
Normal file
30
app_piwigo_fr.md
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
## <img src="https://yunohost.org/images/piwigo.png">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Piwigo](http://piwigo.org) est un logiciel de galerie photo pour le web, bâti par une communauté active d'utilisateurs et de développeurs.
|
||||||
|
|
||||||
|
Les extensions rendent Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et gratuit.
|
||||||
|
|
||||||
|
[![Installer Piwigo avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo)
|
||||||
|
|
||||||
|
![](http://piwigo.org/screenshots/homepage/piwigo-batch-manager.png)
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
En plus des [fonctionnalités principales](Piwigo) de Piwigo, ce paquet propose également:
|
||||||
|
|
||||||
|
* une intégration avec le système de gestion des utilisateurs et le SSO de Yunohost :
|
||||||
|
* installation privée : limitée aux utilisateurs de YunoHost
|
||||||
|
* installation publique :
|
||||||
|
* SSO pour les utilisateurs YunoHost
|
||||||
|
* permet de gérer l'accès à d'autres utilisateurs, et mode invité possible
|
||||||
|
* de permettre à un utilisateur d'être administrateur (réglage lors de l'installation)
|
||||||
|
|
||||||
|
## Liens
|
||||||
|
|
||||||
|
* Rapport de bug: https://github.com/YunoHost-Apps/piwigo_ynh/issues
|
||||||
|
* Site web Piwigo : http://piwigo.org/
|
||||||
|
|
||||||
|
|
19
app_rainloop.md
Normal file
19
app_rainloop.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Rainloop
|
||||||
|
|
||||||
|
Rainloop is a lightweight webmail.
|
||||||
|
|
||||||
|
To configure it, go to http://DOMAIN.TLD/rainloop/app/?admin
|
||||||
|
|
||||||
|
- The default login is : admin
|
||||||
|
- The default password is : Password chosen during install
|
||||||
|
- If you lost the admin password, you can retrieve it using ``sudo yunohost app settings rainloop password``
|
||||||
|
|
||||||
|
Each user can add a remote carddav server from their own parameters interface.
|
||||||
|
|
||||||
|
- If you use baikal, the CardDav address is: https://DOMAIN.TLD/baikal/card.php/addressbooks/USER/default/
|
||||||
|
- If you use NextCloud, the CardDav address is: https://DOMAIN.TLD/nextcloud/remote.php/carddav/addressbooks/USER/contacts
|
||||||
|
|
||||||
|
Rainloop saves your PGP private keys in the browser storage. This means that you will loose your private keys if you clear your browser storage (e.g., private browsing, different computer...). This packages integrates [PGPback by chtixof](https://github.com/chtixof/pgpback_ynh) so you can store your PGP private keys on the server securely. Go to **http://DOMAIN.TLD/rainloop/pgpback** to backup your PGP keys on the server or restore them.
|
||||||
|
|
||||||
|
To upgrade the app once a new rainloop version is available, simply run in a local shell via ssh or otherwise :
|
||||||
|
``sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/rainloop_ynh rainloop``
|
19
app_rainloop_fr.md
Normal file
19
app_rainloop_fr.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Rainloop
|
||||||
|
|
||||||
|
Rainloop est un webmail simple et léger.
|
||||||
|
|
||||||
|
Pour le configurer après l'installation, veuillez vous rendre sur http://DOMAIN.TLD/rainloop/app/?admin
|
||||||
|
|
||||||
|
- Le nom d'utilisateur admin par défaut est : admin
|
||||||
|
- Le mot de passe admin par défaut est : Mot de passe choisi lors de l'installation
|
||||||
|
- Si vous avez oublié votre mot de passe, vous pouvez le retrouver avec ``sudo yunohost app settings rainloop password``
|
||||||
|
|
||||||
|
Chaque utilisateur peut ajouter un carnet d'adresse distant CardDav via leur propre paramètres.
|
||||||
|
|
||||||
|
- Si vous utilisez Baikal, l'adresse à renseigner est du type : https://DOMAIN.TLD/baikal/card.php/addressbooks/UTILISATEUR/default/
|
||||||
|
- Si vous utilisez NextCloud, l'adresse à renseigner est du type : https://DOMAIN.TLD/nextcloud/remote.php/carddav/addressbooks/USER/contacts
|
||||||
|
|
||||||
|
Rainloop stocke les clés PGP privées dans le stockage de navigateur. Cela implique que vos clés seront perdues quand vous videz le stockage de navigateur (navigation incognito, changement d'ordinateur, ...). Ce paquet intègre [PGPback de chtixof](https://github.com/chtixof/pgpback_ynh) pour que vous puissiez stocker vos clés privées PGP de manière sécurisée sur le serveur. Rendez-vous **http://DOMAIN.TLD/rainloop/pgpback** pour stocker vos clés privées PGP sur le serveur ou les restaurer dans un nouveau navigateur.
|
||||||
|
|
||||||
|
Pour mettre à jour rainloop lorsqu'une nouvelle version est disponible, lancez en console locale (ssh ou autre) :
|
||||||
|
``sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/rainloop_ynh rainloop
|
|
@ -1,4 +1,4 @@
|
||||||
#<img src="/images/ttrss.png">Tiny Tiny RSS
|
# <img src="/images/ttrss.png">Tiny Tiny RSS
|
||||||
|
|
||||||
Tiny Tiny RSS is a news feed reader using RSS and atom protocols.
|
Tiny Tiny RSS is a news feed reader using RSS and atom protocols.
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@ In order to do so, go to Actions -> Configuration -> feed tab -> OPML section ->
|
||||||
|
|
||||||
You can read your feeds on Android using ttrss-reader application:
|
You can read your feeds on Android using ttrss-reader application:
|
||||||
|
|
||||||
**[ttrss-reader](https://f-droid.org/repository/browse/?fdfilter=rss&fdid=org.ttrssreader)**
|
**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
|
||||||
|
|
||||||
To use it, you need to go to Actions -> Configuration, in TTRSS web interface and select "Activate API".
|
To use it, you need to go to Actions -> Configuration, in TTRSS web interface and select "Activate API".
|
||||||
Then, in your android ttrss-reader, fill the TTRSS server adress: "https://yourdomain.org/ttrss", username, password (no need to use HTTP authentification).
|
Then, in your android ttrss-reader, fill the TTRSS server adress: "https://yourdomain.org/ttrss", username, password (no need to use HTTP authentification).
|
||||||
|
|
||||||
**Note** : you may need to uninstall and reinstall the TTRSS application through the Yunohost admin panel in order to be able to connect.
|
**Note** : you may need to uninstall and reinstall the TTRSS application through the Yunohost admin panel in order to be able to connect.
|
||||||
|
|
||||||
* [Tiny Tiny RSS Website](http://tt-rss.org/redmine/projects/tt-rss/wiki)
|
* [Tiny Tiny RSS Website](https://git.tt-rss.org/git/tt-rss/wiki)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#<img src="/images/ttrss.png">Tiny Tiny RSS
|
# <img src="/images/ttrss.png">Tiny Tiny RSS
|
||||||
|
|
||||||
Tiny Tiny RSS est un lecteur de flux d’actualité utilisant les protocoles RSS et atom.
|
Tiny Tiny RSS est un lecteur de flux d’actualité utilisant les protocoles RSS et atom.
|
||||||
|
|
||||||
|
@ -11,11 +11,11 @@ Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitr
|
||||||
|
|
||||||
Il est possible d’utiliser le client Android ttrss-reader pour consulter ces flux :
|
Il est possible d’utiliser le client Android ttrss-reader pour consulter ces flux :
|
||||||
|
|
||||||
**[ttrss-reader](https://f-droid.org/repository/browse/?fdfilter=rss&fdid=org.ttrssreader)**
|
**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
|
||||||
|
|
||||||
Sur l’interface web, dans Actions -> Configuration, cochez « Activer l’accès par API »
|
Sur l’interface web, dans Actions -> Configuration, cochez « Activer l’accès par API »
|
||||||
puis dans ttrss-reader sur Android, l’adresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom d’utilisateur, mot de passe. (pas besoin d’utiliser l’authentification HTTP)
|
puis dans ttrss-reader sur Android, l’adresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom d’utilisateur, mot de passe. (pas besoin d’utiliser l’authentification HTTP)
|
||||||
|
|
||||||
**Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement l’app ttrss via l’administration de YunoHost pour que la connexion puisse se faire.
|
**Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement l’app ttrss via l’administration de YunoHost pour que la connexion puisse se faire.
|
||||||
|
|
||||||
* [Site de Tiny Tiny RSS](http://tt-rss.org/redmine/projects/tt-rss/wiki)
|
* [Site de Tiny Tiny RSS](https://git.tt-rss.org/git/tt-rss/wiki)
|
||||||
|
|
|
@ -1,29 +1,30 @@
|
||||||
#Mettre à jour ses applications
|
#Mettre à jour ses applications
|
||||||
|
|
||||||
Une fois que vous avez installé des applications, il est nécessaire de les mettre à jour.
|
Une fois que vous avez installé des applications, il est nécessaire de les mettre à jour. Plusieurs méthodes existent et sont détaillées ci-dessous.
|
||||||
|
|
||||||
** Attention : ** il est recommandé de faire une sauvegarde de la base de données (par exemple via l’application phpmyadmin) ainsi que des fichiers avant une opération de mise à jour.
|
** Attention : ** il est recommandé de faire une sauvegarde de la base de données (par exemple via l’application [phpmyadmin](https://github.com/YunoHost-apps/phpmyadmin_ynh) ([installer](https://install-app.yunohost.org/?app=phpmyadmin))) ainsi que des fichiers avant une opération de mise à jour.
|
||||||
|
|
||||||
### Mise à jour par l’interface web
|
### Mise à jour par l’interface web
|
||||||
Pour cela, il faut aller dans Outils > Mettre à jour le système.
|
Pour cela, il faut aller dans l’onglet "Mettre à jour le système".
|
||||||
|
|
||||||
|
Une fois la liste des paquets et des applications rafraîchie, il sera proposé de mettre à jour les applications et paquets qui peuvent l’être.
|
||||||
|
|
||||||
Une fois la liste des paquets d’applications récupérée la page proposera de mettre à jour les applications officielles qui ont une mise à jour en attente.
|
|
||||||
|
|
||||||
### Mise à jour en ligne de commande
|
### Mise à jour en ligne de commande
|
||||||
Il faut d’abord se connecter sur le serveur en ssh, puis taper cette commande (dans le cas d’une mise à jour WordPress).
|
Il faut d’abord se connecter sur le serveur en ssh, puis entrer la commande suivante (dans le cas d’une mise à jour WordPress) :
|
||||||
```bash
|
```bash
|
||||||
yunohost app upgrade wordpress
|
yunohost app upgrade wordpress
|
||||||
```
|
```
|
||||||
** Note : ** dans le cas où plusieurs applications du même type (ex : deux WordPress) sont installés, il est nécessaire de spécifier le nom d’instance (ex : wordpress ou wordpress__2).
|
** Note : ** dans le cas où plusieurs applications du même type (ex : deux WordPress) sont installées sur le serveur, il est nécessaire de spécifier le nom d’instance (ex : wordpress ou wordpress__2).
|
||||||
|
|
||||||
#### Mise à jour d’une application non officielle
|
#### Mise à jour d’une application non officielle
|
||||||
Il faut pour cela indiquer le dépôt git qui contient la mise à jour.
|
Il faut pour cela indiquer le dépôt git qui contient la mise à jour.
|
||||||
|
|
||||||
Par exemple pour mettre à jour LimeSurvey :
|
Par exemple, pour mettre à jour LimeSurvey, entrer :
|
||||||
```bash
|
```bash
|
||||||
yunohost app upgrade limesurvey -u https://github.com/zamentur/limesurvey_ynh
|
yunohost app upgrade limesurvey -u https://github.com/zamentur/limesurvey_ynh
|
||||||
```
|
```
|
||||||
|
|
||||||
** Note : ** faites attention aux applications/mises à jour non officielles que vous installez. Assurez-vous que ces mises à jour sont stables et ne constituent pas une étape de développement. Si une application ou une mise à jour n’est pas intégrée au dépôt officiel, il y a peut-être une raison.
|
** Note : ** faites attention aux applications/mises à jour non officielles que vous installez. Assurez-vous que ces mises à jour sont stables et ne constituent pas une étape de développement. Si une application ou une mise à jour n’est pas intégrée au dépôt officiel, il y a sûrement une raison.
|
||||||
|
|
||||||
** Attention : ** assurez-vous du contenu de cette mise à jour ; l’installation ou la mise à jour d’une application non officielle permet à cette application d’exécuter des scripts avec les privilèges les plus élevés.
|
** Attention : ** assurez-vous du contenu de cette mise à jour ; l’installation ou la mise à jour d’une application non officielle permet à cette dernière d’exécuter des scripts avec les privilèges les plus élevés. Si le script est malicieux, il pourrait nuire à votre vie privée en communiquant à des tiers toute donnée présente sur le serveur, ou bien les détruire irrémédiablement.
|
||||||
|
|
33
app_wallabag2.md
Normal file
33
app_wallabag2.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
## <img src="https://yunohost.org/images/Logo-wallabag-svg.svg">
|
||||||
|
|
||||||
|
[Wallabag](https://www.wallabag.org/) is a self hostable Read-It-Later application allowing
|
||||||
|
you to not miss any content anymore. Click, save, read it when you can.
|
||||||
|
It extracts content so that you can read it when you have time.
|
||||||
|
|
||||||
|
[![Install Wallabag v2 with
|
||||||
|
YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=wallabag2)
|
||||||
|
|
||||||
|
It provides a web interface, browser (Firefox / Chrome / Opera) add-ons, mobile apps (Android / iOS / Windows Phone) and even on e-reader (PocketBook / Kobo)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
In addition to Wallabag core features, the following are made available with
|
||||||
|
this package:
|
||||||
|
|
||||||
|
* Integrate with YunoHost users and SSO - i.e. logout button
|
||||||
|
* Allow one user to be the administrator (set at the installation)
|
||||||
|
* Asynchronous import using Redis (need to be enabled in the *Internal Settings*). RabbitMQ import not supported (yet ?)
|
||||||
|
|
||||||
|
### Links
|
||||||
|
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/wallabag2_ynh/issues
|
||||||
|
* Wallabag website: https://www.wallabag.org/
|
||||||
|
* Wallabag documentation: https://doc.wallabag.org/ (fr/en/it/de)
|
||||||
|
* [Video demo](https://vimeo.com/video/167435064)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### Upgrade from v1.x
|
||||||
|
|
||||||
|
No automatic upgrade process is available. You need a manual (but simple) migration from [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh).
|
||||||
|
Please take a look at the [official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
|
30
app_wallabag2_fr.md
Normal file
30
app_wallabag2_fr.md
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
## <img src="https://yunohost.org/images/Logo-wallabag-svg.svg">
|
||||||
|
|
||||||
|
|
||||||
|
[Wallabag](https://www.wallabag.org/) est une application de lecture différée : elle permet simplement d’archiver une page web en ne conservant que le contenu. Les éléments superflus (menus, publicités, etc.) sont supprimés.
|
||||||
|
|
||||||
|
Sont disponibles: une interface web, des add-ons pour navigateurs (Firefox / Chrome / Opera), des applications pour mobile (Android / iOS / Windows Phone) et même sur liseuse (PocketBook / Kobo).
|
||||||
|
|
||||||
|
[![Installer avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=wallabag2)
|
||||||
|
|
||||||
|
### Fonctionnalités
|
||||||
|
|
||||||
|
En plus des fonctionnalités principales de Wallabag, ce paquet propose également:
|
||||||
|
|
||||||
|
* Une intégration avec le système de gestion des utilisateurs et le SSO de Yunohost - e.g. un bouton de déconnexion
|
||||||
|
* De permettre à un utilisateur d'être administrateur (réglage lors de l'installation)
|
||||||
|
* Un import asynchrone utilisant Redis (à activer dans les *Paramètres Internes*). L'import via RabbitMQ n'est pas (encore ?) supporté.
|
||||||
|
|
||||||
|
### Liens
|
||||||
|
|
||||||
|
* Rapport de bug: https://github.com/YunoHost-Apps/wallabag2_ynh/issues
|
||||||
|
* Site web de Wallabag: https://www.wallabag.org/
|
||||||
|
* Documentation de Wallabag: https://doc.wallabag.org/ (fr/en/it/de)
|
||||||
|
* [Demo vidéo](https://player.vimeo.com/video/167435064)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### Mettre à niveau depuis la v1.x
|
||||||
|
|
||||||
|
La mise à niveau depuis le paquet Yunohost de [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) demande une opération manuelle, c'est pourquoi un nouveau paquet est fournit.
|
||||||
|
Pour le processus de migration, merci de vous référer à [la documentation officiel de Wallabag](https://doc.wallabag.org/fr/user/import/wallabagv1.html).
|
336
apps.md
336
apps.md
|
@ -1,44 +1,142 @@
|
||||||
#Official apps
|
# Apps
|
||||||
|
|
||||||
<img src="/images/roundcube.png" width=50>
|
<div class="input-group">
|
||||||
<img src="/images/ttrss.png" width=50>
|
<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search"></span></span>
|
||||||
<img src="/images/wordpress.png" width=50>
|
<input type="text" id="filter-app-cards" class="form-control" placeholder="Search for apps..." aria-describedby="basic-addon1"/>
|
||||||
<img src="/images/transmission.png" width=50>
|
<div class="input-group-btn">
|
||||||
<img src="/images/logo-jirafeau.jpeg" width=50>
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<img src="/images/Logo-wallabag-svg.svg" width=50>
|
<span id="app-cards-list-filter-text">Only official apps</span> <span class="caret"></span>
|
||||||
<img src="/images/Searx_logo.svg" width=50>
|
</button>
|
||||||
<img src="/images/rainloop_logo.png" width=40>
|
<ul class="dropdown-menu">
|
||||||
<img src="/images/Nextcloud_Logo.svg" width=70>
|
<li><a href="#" id="app-cards-list-validated">Only official apps</a></li>
|
||||||
<img src="/images/privatebin_icon.svg" width=40>
|
<li><a href="#" id="app-cards-list-working">Only working apps</a></li>
|
||||||
|
<li><a href="#" id="app-cards-list-working-inprogress">In progress/not working apps</a></li>
|
||||||
<a class="btn btn-lg btn-default disabled" href="/apps_en">Official apps</a> <a class="btn btn-lg btn-default" href="/apps_in_progress_en">Apps in progress</a> <a class="btn btn-lg btn-default" href="/apps_wishlist_en">Apps wishlist</a>
|
<li><a href="#" id="app-cards-list-all-apps">All apps</a></li>
|
||||||
|
</ul>
|
||||||
<div class="clearfix" style="margin-bottom: 1em;">
|
</div>
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion .collapse">View all</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion"></div>
|
|
||||||
|
|
||||||
<script type="text/template" id="app-template">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="panel-title">
|
|
||||||
<a data-toggle="collapse" data-parent="#app-accordion" href="apps_en/#app_{app_id}">{app_name} <em><small>({app_id})</small></em></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel-collapse collapse app_{app_id}">
|
|
||||||
<div class="panel-body">
|
|
||||||
<p><strong>Description</strong>: {app_description}</p>
|
|
||||||
<p><strong>Last update (UTC)</strong>: {app_update}</p>
|
|
||||||
<p><strong>Level</strong>: {app_level}</p>
|
|
||||||
<p><strong>Maintainer</strong>: {app_maintainer} <small class="text-muted">({app_mail})</small></p>
|
|
||||||
<p><strong>Git repository</strong>: <a href="{app_git}" target="_blank">{app_git}</a> <small class="text-muted">({app_branch})</small></p>
|
|
||||||
<a href="#/app_{app_id}" target="_blank" class="btn btn-default">Documentation</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
<br />
|
<br />
|
||||||
<div class="alert alert-info">All official applications are under free licenses.</div>
|
<div id="community-app-list-warrant" class="alert alert-danger">
|
||||||
|
<p>Only apps tagged <span class="label label-success label-as-badge">validated</span> are officially supported by the package team. </p>
|
||||||
|
|
||||||
|
<p>Apps tagged <span class="label label-success label-as-badge">working</span>, <span class="label label-warning label-as-badge">inprogress</span>, <span class="label label-danger label-as-badge">notworking</span> are from community repository, you can test and use them **at your own risk**.</p>
|
||||||
|
|
||||||
|
<p>Important: it's the application maintaineur that qualify his application as working, not the YunoHost core team. Install it at your own risks. We won't provide support for it.</p>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info">The packagers will appreciate your remarks. If you install them and find issues, or ideas for improvement, do not hesitate to file issues directly on their repositories project page.</div>
|
||||||
|
|
||||||
|
<div class="app-cards-list" id="app-cards-list"></div>
|
||||||
|
|
||||||
|
<div class="alert alert-warning">If you don't find the app you are searching for, you can search it in community app repository (working, inprogress and not working apps) or fill the <a href="/apps_wishlist_en">apps wishlist</a>.</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*=================================================
|
||||||
|
Search bar
|
||||||
|
=================================================*/
|
||||||
|
#filter-app-cards, #app-cards-list {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
Force return space after card list
|
||||||
|
=================================================*/
|
||||||
|
#app-cards-list:after {
|
||||||
|
content:'';
|
||||||
|
display:block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card
|
||||||
|
=================================================*/
|
||||||
|
.app-card {
|
||||||
|
margin-bottom:20px;
|
||||||
|
width:270px;
|
||||||
|
float:left;
|
||||||
|
min-height: 1px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card body
|
||||||
|
=================================================*/
|
||||||
|
.app-card .panel-body > h3 {
|
||||||
|
margin-top:0;
|
||||||
|
margin-bottom:5px;
|
||||||
|
font-size:1.2em;
|
||||||
|
}
|
||||||
|
.app-card .category {
|
||||||
|
height:35px;
|
||||||
|
}
|
||||||
|
.app-card .category .label, .app-card-date-maintainer {
|
||||||
|
font-size:0.7em;
|
||||||
|
}
|
||||||
|
.app-card-date-maintainer {
|
||||||
|
text-align:right;
|
||||||
|
max-height: 18px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 7px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-card .unmaintained {
|
||||||
|
color: #e0aa33;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-card-desc {
|
||||||
|
height:100px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card footer
|
||||||
|
=================================================*/
|
||||||
|
.app-card .btn-group {
|
||||||
|
width:100%;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn{
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:first-child {
|
||||||
|
border-left:0;
|
||||||
|
border-top-left-radius:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:last-child {
|
||||||
|
border-right:0;
|
||||||
|
border-top-right-radius:0;
|
||||||
|
margin-left: 0px;
|
||||||
|
width: 33.6%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/template" id="app-template2">
|
||||||
|
<div class="app-card_{app_id} app-card panel panel-default">
|
||||||
|
|
||||||
|
<div class="panel-body">
|
||||||
|
<h3>{app_name}</h3>
|
||||||
|
<div class="category"></div>
|
||||||
|
|
||||||
|
<div class="app-card-desc">{app_description}</div>
|
||||||
|
</div>
|
||||||
|
<div class="app-card-date-maintainer">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span> {app_update} -
|
||||||
|
<span title="{maintained_help}" class="{maintained_state}"><span class="glyphicon glyphicon-{maintained_icon}"></span> {app_maintainer}</span>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<a href="{app_git}" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Code</a>
|
||||||
|
<a href="#/app_{app_id}_en" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-book" aria-hidden="true"></span> Doc</a>
|
||||||
|
<a href="https://install-app.yunohost.org/?app={app_id}" target="_BLANK" type="button" class="btn btn-{app_install_bootstrap} col-sm-4 active"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Install</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function timeConverter(UNIX_timestamp) {
|
function timeConverter(UNIX_timestamp) {
|
||||||
|
@ -51,46 +149,156 @@ function timeConverter(UNIX_timestamp) {
|
||||||
var min = a.getMinutes();
|
var min = a.getMinutes();
|
||||||
if (hour < 10) { hour = '0' + hour; }
|
if (hour < 10) { hour = '0' + hour; }
|
||||||
if (min < 10) { min = '0' + min; }
|
if (min < 10) { min = '0' + min; }
|
||||||
var time = date+' '+month+' '+year+' at '+hour+':'+min;
|
var time = date+' '+month+' '+year;//+' at '+hour+':'+min
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$.getJSON('https://app.yunohost.org/official.json', function(app_list) {
|
// Hide warrant about community list
|
||||||
// Cast as array
|
$('#community-app-list-warrant').hide();
|
||||||
var app_list = $.map(app_list, function(el) { return el; });
|
var filters = ["validated"];
|
||||||
// Sort alpha
|
|
||||||
app_list.sort(function(a, b){
|
function filter(){
|
||||||
if (a.manifest.id > b.manifest.id) {return 1;}
|
var filters_text = filters.map(function(el) { return '.app-' + el;}).join(', ');
|
||||||
else if (a.manifest.id < b.manifest.id) {return -1;}
|
var valThis = $('#filter-app-cards').val().toLowerCase();
|
||||||
return 0;
|
$('.app-card').each(function(){
|
||||||
|
var text = $(this).find('h3').text().toLowerCase();
|
||||||
|
(text.indexOf(valThis) == 0 && $(this).find(filters_text).length > 0) ? $(this).show() : $(this).hide();
|
||||||
|
});
|
||||||
|
(filters.indexOf("working") == -1) ?$('#community-app-list-warrant').hide():$('#community-app-list-warrant').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Search & filter bar event
|
||||||
|
//=================================================
|
||||||
|
$('#filter-app-cards').keyup(filter);
|
||||||
|
|
||||||
|
$('#app-cards-list-validated').click(function(){
|
||||||
|
filters = ["validated"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-validated').text());
|
||||||
|
filter();
|
||||||
});
|
});
|
||||||
$.each(app_list, function(k, infos) {
|
|
||||||
app_id = infos.manifest.id;
|
$('#app-cards-list-working').click(function(){
|
||||||
html = $('#app-template').html()
|
filters = ["validated", "working"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-working-inprogress').click(function(){
|
||||||
|
filters = ["notworking", "inprogress"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working-inprogress').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-all-apps').click(function(){
|
||||||
|
filters = ["validated", "working", "inprogress", "notworking"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-all-apps').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
//=================================================
|
||||||
|
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Upload apps lists
|
||||||
|
//=================================================
|
||||||
|
var app_list={};
|
||||||
|
$.when(
|
||||||
|
$.getJSON('https://app.yunohost.org/community.json', {}, function(community) {
|
||||||
|
app_list.community = $.map(community, function(el) { return el; });
|
||||||
|
}),
|
||||||
|
$.getJSON('https://app.yunohost.org/official.json', {}, function(official) {
|
||||||
|
app_list.official = $.map(official, function(el) { return el; });
|
||||||
|
})
|
||||||
|
).then(function() {
|
||||||
|
app_list = app_list.official.concat(app_list.community);
|
||||||
|
|
||||||
|
// Sort alpha
|
||||||
|
app_list.sort(function(a, b){
|
||||||
|
a_state = (a.state == "validated")?4:(a.state == "working")?3:(a.state == "inprogress")?2:1;
|
||||||
|
b_state = (b.state == "validated")?4:(b.state == "working")?3:(b.state == "inprogress")?2:1;
|
||||||
|
if (a_state < b_state || a_state == b_state && a.level < b.level || a_state == b_state && a.level == b.level && a.manifest.id > b.manifest.id) {return 1;}
|
||||||
|
else if (a.manifest.id == b.manifest.id) {return 0;}
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
$.each(app_list, function(k, infos) {
|
||||||
|
app_id = infos.manifest.id;
|
||||||
|
app_install_bootstrap = "success";
|
||||||
|
if (infos.state === "validated") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "working") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "inprogress") {
|
||||||
|
app_state_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.state === "notworking") {
|
||||||
|
app_state_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
}
|
||||||
|
if (infos.level == null ) {
|
||||||
|
infos.level = '?';
|
||||||
|
}
|
||||||
|
if (infos.level == 0 ) {
|
||||||
|
app_level_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level <= 2) {
|
||||||
|
app_level_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level >= 7) {
|
||||||
|
app_level_bootstrap = "success";
|
||||||
|
} else {
|
||||||
|
app_level_bootstrap = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the template
|
||||||
|
html = $('#app-template2').html()
|
||||||
.replace(/{app_id}/g, app_id)
|
.replace(/{app_id}/g, app_id)
|
||||||
.replace(/{app_name}/g, infos.manifest.name)
|
.replace(/{app_name}/g, infos.manifest.name)
|
||||||
.replace('{app_description}', infos.manifest.description.en)
|
.replace('{app_description}', infos.manifest.description.en)
|
||||||
.replace(/{app_git}/g, infos.git.url)
|
.replace(/{app_git}/g, infos.git.url)
|
||||||
.replace('{app_branch}', infos.git.branch)
|
.replace('{app_branch}', infos.git.branch)
|
||||||
.replace('{app_level}', infos.level)
|
.replace('{app_level}', infos.level)
|
||||||
.replace('{app_update}', timeConverter(infos.lastUpdate));
|
.replace('{app_update}', timeConverter(infos.lastUpdate))
|
||||||
|
.replace('{app_state_bootstrap}', app_state_bootstrap)
|
||||||
|
.replace('{app_install_bootstrap}', app_install_bootstrap);
|
||||||
|
|
||||||
if (infos.manifest.developer) {
|
if (infos.maintained == false)
|
||||||
html = html
|
{
|
||||||
.replace('{app_maintainer}', infos.manifest.developer.name)
|
html = html
|
||||||
.replace('{app_mail}', infos.manifest.developer.email);
|
.replace('{maintained_state}', 'unmaintained')
|
||||||
}
|
.replace('{maintained_icon}', 'warning-sign')
|
||||||
|
.replace('{app_maintainer}', "Unmaintained")
|
||||||
|
.replace('{maintained_help}', "This package is currently unmaintained. Feel free to propose yourself as the new maintainer !");
|
||||||
|
} else {
|
||||||
|
if (infos.manifest.developer) {
|
||||||
|
html = html
|
||||||
|
.replace('{maintained_state}', 'maintained')
|
||||||
|
.replace('{maintained_icon}', 'user')
|
||||||
|
.replace('{app_maintainer}', infos.manifest.developer.name)
|
||||||
|
.replace('{maintained_help}', "Current maintainer of this package");
|
||||||
|
}
|
||||||
|
if (infos.manifest.maintainer) {
|
||||||
|
html = html
|
||||||
|
.replace('{maintained_state}', 'maintained')
|
||||||
|
.replace('{maintained_icon}', 'user')
|
||||||
|
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
||||||
|
.replace('{maintained_help}', "Current maintainer of this package");;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (infos.manifest.maintainer) {
|
|
||||||
html = html
|
|
||||||
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
|
||||||
.replace('{app_mail}', infos.manifest.maintainer.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#app-accordion').append(html);
|
// Fill the template
|
||||||
$('.app_'+ app_id).attr('id', 'app_'+ app_id);
|
$('#app-cards-list').append(html);
|
||||||
|
$('.app-card_'+ app_id).attr('id', 'app-card_'+ app_id);
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_level_bootstrap+' label-as-badge">'+infos.level+'</span>');
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_state_bootstrap+' label-as-badge app-'+infos.state+'">'+infos.state+'</span>');
|
||||||
|
if (infos.manifest.license && infos.manifest.license != 'free') {
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-default">'+infos.manifest.license+'</span>');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
filter();
|
||||||
});
|
});
|
||||||
});
|
//=================================================
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
289
apps_ar.md
Normal file
289
apps_ar.md
Normal file
|
@ -0,0 +1,289 @@
|
||||||
|
# <div dir="rtl">التطبيقات</div>
|
||||||
|
|
||||||
|
<div dir="rtl" class="input-group">
|
||||||
|
<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search"></span></span>
|
||||||
|
<input type="text" id="filter-app-cards" class="form-control" placeholder="البحث عن تطبيقات ..." aria-describedby="basic-addon1"/>
|
||||||
|
<div dir="rtl" class="input-group-btn">
|
||||||
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
<span id="app-cards-list-filter-text">التطبيقات الرسمية فقط</span> <span class="caret"></span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a href="#" id="app-cards-list-validated">التطبيقات الرسمية فقط</a></li>
|
||||||
|
<li><a href="#" id="app-cards-list-working">التطبيقات "التي تعمل" فقط</a></li>
|
||||||
|
<li><a href="#" id="app-cards-list-working-inprogress">التطبيقات "الجاري العمل عليها"/"و التي لاتعمل"</a></li>
|
||||||
|
<li><a href="#" id="app-cards-list-all-apps">كافة التطبيقات</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div dir="rtl" id="community-app-list-warrant" class="alert alert-danger">
|
||||||
|
<p>إلّا التطبيقات المحددة بعلامة <span class="label label-success label-as-badge">validated</span> تعتبر مدعومة رسميا من طرف فريق التحزيم. </p>
|
||||||
|
|
||||||
|
<p>Les apps marquées <span class="label label-success label-as-badge">working</span>, <span class="label label-warning label-as-badge">inprogress</span>, <span class="label label-danger label-as-badge">notworking</span> sont des applications non officielles maintenues par la communauté, vous pouvez les tester et les utiliser **à vos risques et périls**.</p>
|
||||||
|
|
||||||
|
<p>Important: c'est le mainteneur de l'application qui définit son application comme "working" et non pas l'équipe d'empaquetage de Yunohost. Installez ces apps à vos risques et périls. Nous ne fournissons pas de support pour elles.</p>
|
||||||
|
</div>
|
||||||
|
<div dir="rtl"class="alert alert-info">إنّ فريق التحزيم سوف يأخذ بعين الإعتبار ملاحظاتكم. مثال، إن قمتم بتنصيب تطبيقاتهم و عارضتكم مشاكل أو إن كلمة عندكم أفكارا لتحسين التطبيقات، فلا تبخلوا التحو تذكرة مباشرة على صفحات مستودعات المشاريع نفسها</div>
|
||||||
|
|
||||||
|
<div class="app-cards-list" id="app-cards-list"></div>
|
||||||
|
|
||||||
|
<div dir="rtl" class="alert alert-warning">إن لم تتمكنوا من العثور على التطبيق الذي تبحثون عنه هنا، يمكنكم البحث كذلك في مستودع تطبيقات المجتمع (التي تعمل، الجاري العمل عليها و التي لا تعمل) أو قوموا بإضافتها إلى <a href="/apps_wishlist_fr">قائمة التطبيقات المرغوب فيها</a>.</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*=================================================
|
||||||
|
Search bar
|
||||||
|
=================================================*/
|
||||||
|
#filter-app-cards, #app-cards-list {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
Force return space after card list
|
||||||
|
=================================================*/
|
||||||
|
#app-cards-list:after {
|
||||||
|
content:'';
|
||||||
|
display:block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card
|
||||||
|
=================================================*/
|
||||||
|
.app-card {
|
||||||
|
margin-bottom:20px;
|
||||||
|
width:270px;
|
||||||
|
float:left;
|
||||||
|
min-height: 1px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card body
|
||||||
|
=================================================*/
|
||||||
|
.app-card .panel-body > h3 {
|
||||||
|
margin-top:0;
|
||||||
|
margin-bottom:5px;
|
||||||
|
font-size:1.2em;
|
||||||
|
}
|
||||||
|
.app-card .category {
|
||||||
|
height:35px;
|
||||||
|
}
|
||||||
|
.app-card .category .label, .app-card-date-maintainer {
|
||||||
|
font-size:0.7em;
|
||||||
|
}
|
||||||
|
.app-card-date-maintainer {
|
||||||
|
text-align:right;
|
||||||
|
max-height: 18px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 7px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-card-desc {
|
||||||
|
height:100px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card footer
|
||||||
|
=================================================*/
|
||||||
|
.app-card .btn-group {
|
||||||
|
width:100%;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn{
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:first-child {
|
||||||
|
border-left:0;
|
||||||
|
border-top-left-radius:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:last-child {
|
||||||
|
border-right:0;
|
||||||
|
border-top-right-radius:0;
|
||||||
|
margin-left: 0px;
|
||||||
|
width: 33.6%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/template" id="app-template2">
|
||||||
|
<div class="app-card_{app_id} app-card panel panel-default">
|
||||||
|
|
||||||
|
<div class="panel-body">
|
||||||
|
<h3>{app_name}</h3>
|
||||||
|
<div class="category"></div>
|
||||||
|
|
||||||
|
<div class="app-card-desc">{app_description}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="app-card-date-maintainer">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span> {app_update} -
|
||||||
|
<span class="glyphicon glyphicon-user"></span> {app_maintainer}
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<a href="{app_git}" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> الشفرة</a>
|
||||||
|
<a href="#/app_{app_id}_fr" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-book" aria-hidden="true"></span> الدليل</a>
|
||||||
|
<a href="https://install-app.yunohost.org/?app={app_id}" target="_BLANK" type="button" class="btn btn-{app_install_bootstrap} col-sm-4 active">تنصيب</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function timeConverter(UNIX_timestamp) {
|
||||||
|
var a = new Date(UNIX_timestamp*1000);
|
||||||
|
var months = ['جانفي','فيفري','مارس','أفريل','ماي','جوان','جويلية','أوت','سبتمبر','أكتوبر','نوفمبر','ديسمبر'];
|
||||||
|
var year = a.getFullYear();
|
||||||
|
var month = months[a.getMonth()];
|
||||||
|
var date = a.getDate();
|
||||||
|
var hour = a.getHours();
|
||||||
|
var min = a.getMinutes();
|
||||||
|
if (hour < 10) { hour = '0' + hour; }
|
||||||
|
if (min < 10) { min = '0' + min; }
|
||||||
|
var time = date+' '+month+' '+year;//+' at '+hour+':'+min
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
// Hide warrant about community list
|
||||||
|
$('#community-app-list-warrant').hide();
|
||||||
|
var filters = ["validated"];
|
||||||
|
|
||||||
|
function filter(){
|
||||||
|
var filters_text = filters.map(function(el) { return '.app-' + el;}).join(', ');
|
||||||
|
var valThis = $('#filter-app-cards').val().toLowerCase();
|
||||||
|
$('.app-card').each(function(){
|
||||||
|
var text = $(this).find('h3').text().toLowerCase();
|
||||||
|
(text.indexOf(valThis) == 0 && $(this).find(filters_text).length > 0) ? $(this).show() : $(this).hide();
|
||||||
|
});
|
||||||
|
(filters.indexOf("working") == -1) ?$('#community-app-list-warrant').hide():$('#community-app-list-warrant').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Search & filter bar event
|
||||||
|
//=================================================
|
||||||
|
$('#filter-app-cards').keyup(filter);
|
||||||
|
|
||||||
|
$('#app-cards-list-validated').click(function(){
|
||||||
|
filters = ["validated"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-validated').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-working').click(function(){
|
||||||
|
filters = ["validated", "working"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-working-inprogress').click(function(){
|
||||||
|
filters = ["notworking", "inprogress"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working-inprogress').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-all-apps').click(function(){
|
||||||
|
filters = ["validated", "working", "inprogress", "notworking"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-all-apps').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
//=================================================
|
||||||
|
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Upload apps lists
|
||||||
|
//=================================================
|
||||||
|
var app_list={};
|
||||||
|
$.when(
|
||||||
|
$.getJSON('https://app.yunohost.org/community.json', {}, function(community) {
|
||||||
|
app_list.community = $.map(community, function(el) { return el; });
|
||||||
|
}),
|
||||||
|
$.getJSON('https://app.yunohost.org/official.json', {}, function(official) {
|
||||||
|
app_list.official = $.map(official, function(el) { return el; });
|
||||||
|
})
|
||||||
|
).then(function() {
|
||||||
|
app_list = app_list.official.concat(app_list.community);
|
||||||
|
|
||||||
|
// Sort alpha
|
||||||
|
app_list.sort(function(a, b){
|
||||||
|
a_state = (a.state == "validated")?4:(a.state == "working")?3:(a.state == "inprogress")?2:1;
|
||||||
|
b_state = (b.state == "validated")?4:(b.state == "working")?3:(b.state == "inprogress")?2:1;
|
||||||
|
if (a_state < b_state || a_state == b_state && a.level < b.level || a_state == b_state && a.level == b.level && a.manifest.id > b.manifest.id) {return 1;}
|
||||||
|
else if (a.manifest.id == b.manifest.id) {return 0;}
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
$.each(app_list, function(k, infos) {
|
||||||
|
app_id = infos.manifest.id;
|
||||||
|
app_install_bootstrap = "success";
|
||||||
|
if (infos.state === "validated") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "working") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "inprogress") {
|
||||||
|
app_state_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.state === "notworking") {
|
||||||
|
app_state_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
}
|
||||||
|
if (infos.level == null ) {
|
||||||
|
infos.level = '?';
|
||||||
|
}
|
||||||
|
if (infos.level == 0 ) {
|
||||||
|
app_level_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level <= 2) {
|
||||||
|
app_level_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level >= 7) {
|
||||||
|
app_level_bootstrap = "success";
|
||||||
|
} else {
|
||||||
|
app_level_bootstrap = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the template
|
||||||
|
html = $('#app-template2').html()
|
||||||
|
.replace(/{app_id}/g, app_id)
|
||||||
|
.replace(/{app_name}/g, infos.manifest.name)
|
||||||
|
.replace('{app_description}', infos.manifest.description.fr)
|
||||||
|
.replace(/{app_git}/g, infos.git.url)
|
||||||
|
.replace('{app_branch}', infos.git.branch)
|
||||||
|
.replace('{app_level}', infos.level)
|
||||||
|
.replace('{app_update}', timeConverter(infos.lastUpdate))
|
||||||
|
.replace('{app_state_bootstrap}', app_state_bootstrap)
|
||||||
|
.replace('{app_install_bootstrap}', app_install_bootstrap);
|
||||||
|
|
||||||
|
if (infos.manifest.developer) {
|
||||||
|
html = html
|
||||||
|
.replace('{app_maintainer}', infos.manifest.developer.name)
|
||||||
|
.replace('{app_mail}', infos.manifest.developer.email);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.manifest.maintainer) {
|
||||||
|
html = html
|
||||||
|
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
||||||
|
.replace('{app_mail}', infos.manifest.maintainer.email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the template
|
||||||
|
$('#app-cards-list').append(html);
|
||||||
|
$('.app-card_'+ app_id).attr('id', 'app-card_'+ app_id);
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_level_bootstrap+' label-as-badge">'+infos.level+'</span>');
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_state_bootstrap+' label-as-badge app-'+infos.state+'">'+infos.state+'</span>');
|
||||||
|
if (infos.manifest.license && infos.manifest.license != 'free') {
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-default">'+infos.manifest.license+'</span>');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
//=================================================
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
326
apps_fr.md
326
apps_fr.md
|
@ -1,49 +1,144 @@
|
||||||
#Apps officielles
|
# Apps
|
||||||
|
|
||||||
<img src="/images/roundcube.png" width=50>
|
<div class="input-group">
|
||||||
<img src="/images/ttrss.png" width=50>
|
<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search"></span></span>
|
||||||
<img src="/images/wordpress.png" width=50>
|
<input type="text" id="filter-app-cards" class="form-control" placeholder="Rechercher des apps..." aria-describedby="basic-addon1"/>
|
||||||
<img src="/images/transmission.png" width=50>
|
<div class="input-group-btn">
|
||||||
<img src="/images/logo-jirafeau.jpeg" width=50>
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<img src="/images/Logo-wallabag-svg.svg" width=50>
|
<span id="app-cards-list-filter-text">Apps officielles seulement</span> <span class="caret"></span>
|
||||||
<img src="/images/Searx_logo.svg" width=50>
|
</button>
|
||||||
<img src="/images/rainloop_logo.png" width=40>
|
<ul class="dropdown-menu">
|
||||||
<img src="/images/Nextcloud_Logo.svg" width=70>
|
<li><a href="#" id="app-cards-list-validated">Apps officielles seulement</a></li>
|
||||||
<img src="/images/privatebin_icon.svg" width=40>
|
<li><a href="#" id="app-cards-list-working">Apps "working" seulement</a></li>
|
||||||
|
<li><a href="#" id="app-cards-list-working-inprogress">Apps "in progress"/"not working"</a></li>
|
||||||
<a class="btn btn-lg btn-default" href="/apps_fr" disabled>Apps officielles</a> <a class="btn btn-lg btn-default" href="/apps_in_progress_fr">Apps en cours</a> <a class="btn btn-lg btn-default" href="/apps_wishlist_fr">Apps souhaitées</a>
|
<li><a href="#" id="app-cards-list-all-apps">Toutes les apps</a></li>
|
||||||
|
</ul>
|
||||||
<div class="clearfix" style="margin-bottom: 1em;">
|
</div>
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion .collapse">Tout déplier</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion"></div>
|
|
||||||
|
|
||||||
<script type="text/template" id="app-template">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="panel-title">
|
|
||||||
<a data-toggle="collapse" data-parent="#app-accordion" href="#app_{app_id}">{app_name} <em><small>({app_id})</small></em></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel-collapse collapse app_{app_id}">
|
|
||||||
<div class="panel-body">
|
|
||||||
<p><strong>Description</strong> : {app_description}</p>
|
|
||||||
<p><strong>Dernière mise à jour (UTC)</strong> : {app_update}</p>
|
|
||||||
<p><strong>Niveau</strong>: {app_level}</p>
|
|
||||||
<p><strong>Mainteneur</strong> : {app_maintainer} <small class="text-muted">({app_mail})</small></p>
|
|
||||||
<p><strong>Dépôt git</strong> : <a href="{app_git}" target="_blank">{app_git}</a> <small class="text-muted">({app_branch})</small></p>
|
|
||||||
<a href="#/app_{app_id}_fr" target="_blank" class="btn btn-default">Documentation</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
<br />
|
<br />
|
||||||
<div class="alert alert-info">Toutes les applications officielles sont sous licences libres.</div>
|
<div id="community-app-list-warrant" class="alert alert-danger">
|
||||||
|
<p>Seules les apps marquées <span class="label label-success label-as-badge">validated</span> sont officiellement supportées par l'équipe de développement d'applications. </p>
|
||||||
|
|
||||||
|
<p>Les apps marquées <span class="label label-success label-as-badge">working</span>, <span class="label label-warning label-as-badge">inprogress</span>, <span class="label label-danger label-as-badge">notworking</span> sont des applications non officielles maintenues par la communauté, vous pouvez les tester et les utiliser **à vos risques et périls**.</p>
|
||||||
|
|
||||||
|
<p>Important: c'est le mainteneur de l'application qui définit son application comme "working" et non pas l'équipe de développement d'applications de Yunohost. Installez ces apps à vos risques et périls. Nous ne fournissons pas de support pour elles.</p>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info">Les développeurs d'applications apprécieront vos remarques. Si vous installez leurs apps et trouvez des dysfonctionnement, ou si vous avez des idées d'amélioration, n'hésitez pas à créer des tickets directement sur les pages de dépots des projets.</div>
|
||||||
|
|
||||||
|
<div class="app-cards-list" id="app-cards-list"></div>
|
||||||
|
|
||||||
|
<div class="alert alert-warning">Si vous ne trouvez pas l'application que vous recherchez, vous pouvez la rechercher dans les apps communautaires (working, inprogress et notworking) ou remplir la <a href="/apps_wishlist_fr">liste d'apps souhaitées</a>.</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*=================================================
|
||||||
|
Search bar
|
||||||
|
=================================================*/
|
||||||
|
#filter-app-cards, #app-cards-list {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
Force return space after card list
|
||||||
|
=================================================*/
|
||||||
|
#app-cards-list:after {
|
||||||
|
content:'';
|
||||||
|
display:block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card
|
||||||
|
=================================================*/
|
||||||
|
.app-card {
|
||||||
|
margin-bottom:20px;
|
||||||
|
width:270px;
|
||||||
|
float:left;
|
||||||
|
min-height: 1px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card body
|
||||||
|
=================================================*/
|
||||||
|
.app-card .panel-body > h3 {
|
||||||
|
margin-top:0;
|
||||||
|
margin-bottom:5px;
|
||||||
|
font-size:1.2em;
|
||||||
|
}
|
||||||
|
.app-card .category {
|
||||||
|
height:35px;
|
||||||
|
}
|
||||||
|
.app-card .category .label, .app-card-date-maintainer {
|
||||||
|
font-size:0.7em;
|
||||||
|
}
|
||||||
|
.app-card-date-maintainer {
|
||||||
|
text-align:right;
|
||||||
|
max-height: 18px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 7px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-card-desc {
|
||||||
|
height:100px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
|
||||||
|
/*=================================================
|
||||||
|
App card footer
|
||||||
|
=================================================*/
|
||||||
|
.app-card .btn-group {
|
||||||
|
width:100%;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn{
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:first-child {
|
||||||
|
border-left:0;
|
||||||
|
border-top-left-radius:0;
|
||||||
|
}
|
||||||
|
.app-card > .btn-group > .btn:last-child {
|
||||||
|
border-right:0;
|
||||||
|
border-top-right-radius:0;
|
||||||
|
margin-left: 0px;
|
||||||
|
width: 33.6%;
|
||||||
|
}
|
||||||
|
/*===============================================*/
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/template" id="app-template2">
|
||||||
|
<div class="app-card_{app_id} app-card panel panel-default">
|
||||||
|
|
||||||
|
<div class="panel-body">
|
||||||
|
<h3>{app_name}</h3>
|
||||||
|
<div class="category"></div>
|
||||||
|
|
||||||
|
<div class="app-card-desc">{app_description}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="app-card-date-maintainer">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span> {app_update} -
|
||||||
|
<span class="glyphicon glyphicon-user"></span> {app_maintainer}
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<a href="{app_git}" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Code</a>
|
||||||
|
<a href="#/app_{app_id}_fr" target="_BLANK" type="button" class="btn btn-default col-sm-4"><span class="glyphicon glyphicon-book" aria-hidden="true"></span> Doc</a>
|
||||||
|
<a href="https://install-app.yunohost.org/?app={app_id}" target="_BLANK" type="button" class="btn btn-{app_install_bootstrap} col-sm-4 active">Installer</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function timeConverter(UNIX_timestamp) {
|
function timeConverter(UNIX_timestamp) {
|
||||||
var a = new Date(UNIX_timestamp*1000);
|
var a = new Date(UNIX_timestamp*1000);
|
||||||
var months = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'];
|
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
|
||||||
var year = a.getFullYear();
|
var year = a.getFullYear();
|
||||||
var month = months[a.getMonth()];
|
var month = months[a.getMonth()];
|
||||||
var date = a.getDate();
|
var date = a.getDate();
|
||||||
|
@ -51,49 +146,144 @@ function timeConverter(UNIX_timestamp) {
|
||||||
var min = a.getMinutes();
|
var min = a.getMinutes();
|
||||||
if (hour < 10) { hour = '0' + hour; }
|
if (hour < 10) { hour = '0' + hour; }
|
||||||
if (min < 10) { min = '0' + min; }
|
if (min < 10) { min = '0' + min; }
|
||||||
var time = date+' '+month+' '+year+' à '+hour+':'+min;
|
var time = date+' '+month+' '+year;//+' at '+hour+':'+min
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$.getJSON('https://app.yunohost.org/official.json', function(app_list) {
|
// Hide warrant about community list
|
||||||
// Cast as array
|
$('#community-app-list-warrant').hide();
|
||||||
var app_list = $.map(app_list, function(el) { return el; });
|
var filters = ["validated"];
|
||||||
// Sort alpha
|
|
||||||
app_list.sort(function(a, b){
|
function filter(){
|
||||||
if (a.manifest.id > b.manifest.id) {return 1;}
|
var filters_text = filters.map(function(el) { return '.app-' + el;}).join(', ');
|
||||||
else if (a.manifest.id < b.manifest.id) {return -1;}
|
var valThis = $('#filter-app-cards').val().toLowerCase();
|
||||||
return 0;
|
$('.app-card').each(function(){
|
||||||
|
var text = $(this).find('h3').text().toLowerCase();
|
||||||
|
(text.indexOf(valThis) == 0 && $(this).find(filters_text).length > 0) ? $(this).show() : $(this).hide();
|
||||||
|
});
|
||||||
|
(filters.indexOf("working") == -1) ?$('#community-app-list-warrant').hide():$('#community-app-list-warrant').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Search & filter bar event
|
||||||
|
//=================================================
|
||||||
|
$('#filter-app-cards').keyup(filter);
|
||||||
|
|
||||||
|
$('#app-cards-list-validated').click(function(){
|
||||||
|
filters = ["validated"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-validated').text());
|
||||||
|
filter();
|
||||||
});
|
});
|
||||||
$.each(app_list, function(k, infos) {
|
|
||||||
app_id = infos.manifest.id;
|
$('#app-cards-list-working').click(function(){
|
||||||
if (typeof infos.manifest.description.fr === 'undefined') {
|
filters = ["validated", "working"];
|
||||||
infos.manifest.description.fr = infos.manifest.description.en;
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working').text());
|
||||||
}
|
filter();
|
||||||
html = $('#app-template').html()
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-working-inprogress').click(function(){
|
||||||
|
filters = ["notworking", "inprogress"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-working-inprogress').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#app-cards-list-all-apps').click(function(){
|
||||||
|
filters = ["validated", "working", "inprogress", "notworking"];
|
||||||
|
$('#app-cards-list-filter-text').text($('#app-cards-list-all-apps').text());
|
||||||
|
filter();
|
||||||
|
});
|
||||||
|
//=================================================
|
||||||
|
|
||||||
|
|
||||||
|
//=================================================
|
||||||
|
// Upload apps lists
|
||||||
|
//=================================================
|
||||||
|
var app_list={};
|
||||||
|
$.when(
|
||||||
|
$.getJSON('https://app.yunohost.org/community.json', {}, function(community) {
|
||||||
|
app_list.community = $.map(community, function(el) { return el; });
|
||||||
|
}),
|
||||||
|
$.getJSON('https://app.yunohost.org/official.json', {}, function(official) {
|
||||||
|
app_list.official = $.map(official, function(el) { return el; });
|
||||||
|
})
|
||||||
|
).then(function() {
|
||||||
|
app_list = app_list.official.concat(app_list.community);
|
||||||
|
|
||||||
|
// Sort alpha
|
||||||
|
app_list.sort(function(a, b){
|
||||||
|
a_state = (a.state == "validated")?4:(a.state == "working")?3:(a.state == "inprogress")?2:1;
|
||||||
|
b_state = (b.state == "validated")?4:(b.state == "working")?3:(b.state == "inprogress")?2:1;
|
||||||
|
if (a_state < b_state || a_state == b_state && a.level < b.level || a_state == b_state && a.level == b.level && a.manifest.id > b.manifest.id) {return 1;}
|
||||||
|
else if (a.manifest.id == b.manifest.id) {return 0;}
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
$.each(app_list, function(k, infos) {
|
||||||
|
app_id = infos.manifest.id;
|
||||||
|
app_install_bootstrap = "success";
|
||||||
|
if (infos.state === "validated") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "working") {
|
||||||
|
app_state_bootstrap = "success";
|
||||||
|
} else if (infos.state === "inprogress") {
|
||||||
|
app_state_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.state === "notworking") {
|
||||||
|
app_state_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
}
|
||||||
|
if (infos.level == null ) {
|
||||||
|
infos.level = '?';
|
||||||
|
}
|
||||||
|
if (infos.level == 0 ) {
|
||||||
|
app_level_bootstrap = "danger";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level <= 2) {
|
||||||
|
app_level_bootstrap = "warning";
|
||||||
|
app_install_bootstrap = "danger";
|
||||||
|
} else if (infos.level >= 7) {
|
||||||
|
app_level_bootstrap = "success";
|
||||||
|
} else {
|
||||||
|
app_level_bootstrap = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the template
|
||||||
|
html = $('#app-template2').html()
|
||||||
.replace(/{app_id}/g, app_id)
|
.replace(/{app_id}/g, app_id)
|
||||||
.replace(/{app_name}/g, infos.manifest.name)
|
.replace(/{app_name}/g, infos.manifest.name)
|
||||||
.replace('{app_description}', infos.manifest.description.fr)
|
.replace('{app_description}', infos.manifest.description.fr)
|
||||||
.replace(/{app_git}/g, infos.git.url)
|
.replace(/{app_git}/g, infos.git.url)
|
||||||
.replace('{app_branch}', infos.git.branch)
|
.replace('{app_branch}', infos.git.branch)
|
||||||
.replace('{app_level}', infos.level)
|
.replace('{app_level}', infos.level)
|
||||||
.replace('{app_update}', timeConverter(infos.lastUpdate));
|
.replace('{app_update}', timeConverter(infos.lastUpdate))
|
||||||
|
.replace('{app_state_bootstrap}', app_state_bootstrap)
|
||||||
|
.replace('{app_install_bootstrap}', app_install_bootstrap);
|
||||||
|
|
||||||
if (infos.manifest.developer) {
|
if (infos.manifest.developer) {
|
||||||
html = html
|
html = html
|
||||||
.replace('{app_maintainer}', infos.manifest.developer.name)
|
.replace('{app_maintainer}', infos.manifest.developer.name)
|
||||||
.replace('{app_mail}', infos.manifest.developer.email);
|
.replace('{app_mail}', infos.manifest.developer.email);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (infos.manifest.maintainer) {
|
if (infos.manifest.maintainer) {
|
||||||
html = html
|
html = html
|
||||||
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
||||||
.replace('{app_mail}', infos.manifest.maintainer.email);
|
.replace('{app_mail}', infos.manifest.maintainer.email);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#app-accordion').append(html);
|
// Fill the template
|
||||||
$('.app_'+ app_id).attr('id', 'app_'+ app_id);
|
$('#app-cards-list').append(html);
|
||||||
|
$('.app-card_'+ app_id).attr('id', 'app-card_'+ app_id);
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_level_bootstrap+' label-as-badge">'+infos.level+'</span>');
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-'+app_state_bootstrap+' label-as-badge app-'+infos.state+'">'+infos.state+'</span>');
|
||||||
|
if (infos.manifest.license && infos.manifest.license != 'free') {
|
||||||
|
$('.app-card_'+ app_id + ' .category').append(' <span class="label label-default">'+infos.manifest.license+'</span>');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
filter();
|
||||||
});
|
});
|
||||||
});
|
//=================================================
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
43
apps_framasoft.md
Normal file
43
apps_framasoft.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Équivalence avec les applications Framasoft
|
||||||
|
|
||||||
|
| App Framasoft | Équivalent | Package | Status |
|
||||||
|
| :---: | :---: | :---: | :---: |
|
||||||
|
| Framapad | Etherpad + mypads | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/etherpad_mypads_ynh) | ![](https://dash.yunohost.org/integration/etherpad_mypads.svg) |
|
||||||
|
| Framadrive | Nextcloud | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-apps/nextcloud_ynh) | ![](https://dash.yunohost.org/integration/nextcloud.svg) |
|
||||||
|
| Framagit | GitLab | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/gitlab_ynh) | ![](https://dash.yunohost.org/integration/gitlab.svg) |
|
||||||
|
| | Gogs | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/gogs_ynh) | ![](https://dash.yunohost.org/integration/gogs.svg) |
|
||||||
|
| Framadrop | Lufi | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/lufi_ynh) | ![](https://dash.yunohost.org/integration/lufi.svg) |
|
||||||
|
| Framapiaf | Mastodon | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/mastodon_ynh) | ![](https://dash.yunohost.org/integration/mastodon.svg) |
|
||||||
|
| Framapic | Lutim | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/lutim_ynh) | ![](https://dash.yunohost.org/integration/lutim.svg) |
|
||||||
|
| Framabin | PrivateBin | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-apps/zerobin_ynh) | ![](https://dash.yunohost.org/integration/zerobin.svg) |
|
||||||
|
| Frama.link | Lstu | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/lstu_ynh) | ![](https://dash.yunohost.org/integration/lstu.svg) |
|
||||||
|
| Framatube | Mediadrop | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/mediadrop_ynh) | ![](https://dash.yunohost.org/integration/mediadrop.svg) |
|
||||||
|
| Framanews | TinyTinyRSS | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-apps/ttrss_ynh) | ![](https://dash.yunohost.org/integration/ttrss.svg) |
|
||||||
|
| Framabee | Searx | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/searx_ynh) | ![](https://dash.yunohost.org/integration/searx.svg) |
|
||||||
|
| Framabag | Wallabag | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/wallabag_ynh) | ![](https://dash.yunohost.org/integration/wallabag.svg) |
|
||||||
|
| Framacalc | Ethercalc | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/ethercalc_ynh) | ![](https://dash.yunohost.org/integration/ethercalc.svg) |
|
||||||
|
| Framaboard | Kanboard | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/kanboard_ynh) | ![](https://dash.yunohost.org/integration/kanboard.svg) |
|
||||||
|
| Framadate | OpenSondage | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/opensondage_ynh) | ![](https://dash.yunohost.org/integration/opensondage.svg) |
|
||||||
|
| Framasphère | Diaspora* | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/aymhce/diaspora_ynh) | ![](https://dash.yunohost.org/integration/diaspora.svg) |
|
||||||
|
| Framabookin | BicBucStriim | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/BicBucStriim_ynh) | ![](https://dash.yunohost.org/integration/BicBucStriim.svg) |
|
||||||
|
| Framanotes | Turtl | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/Turtl_ynh) | ![](https://dash.yunohost.org/integration/Turtl.svg) |
|
||||||
|
| Framemo | Scrumblr | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/scrumblr_ynh) | ![](https://dash.yunohost.org/integration/scumblr.svg) |
|
||||||
|
| Framinetest | Minetest | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/minetest_ynh) | ![](https://dash.yunohost.org/integration/minetest.svg) |
|
||||||
|
| Framatalk | Jitsi Meet | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/jitsi_ynh) | ![](https://dash.yunohost.org/integration/jitsi.svg) |
|
||||||
|
| Framalistes | Mailman | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/YunoHost-Apps/mailman_ynh) | ![](https://dash.yunohost.org/integration/mailman.svg) |
|
||||||
|
| | Sympa | [<span class="glyphicon glyphicon-gift"></span>](https://github.com/alexAubin/sympa_ynh) | ![](https://dash.yunohost.org/integration/sympa.svg) |
|
||||||
|
| Framindmap | Wisemapping | Non packagé | |
|
||||||
|
| Framavectoriel | SVG-Edit | Non packagé | |
|
||||||
|
| Framacarte | uMap | Non packagé | |
|
||||||
|
| Framaforms | WebForms? | Non packagé | |
|
||||||
|
| Framaestro | Framaestro | Non packagé | |
|
||||||
|
| Framavox | ? | Non packagé | |
|
||||||
|
| Framagenda | (Agenda Nextcloud) | Non packagé | |
|
||||||
|
| Framagames | ? | Non packagé | |
|
||||||
|
| MyFrama | ? | Non packagé | |
|
||||||
|
|
||||||
|
### Voir aussi
|
||||||
|
|
||||||
|
- [Liste complète des applications packagées](/apps)
|
||||||
|
- [La roadmap 'Dégooglisons'](https://github.com/YunoHost/issues/milestone/13)
|
||||||
|
|
46
apps_group_PR_model.md
Normal file
46
apps_group_PR_model.md
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
## Problem
|
||||||
|
- *Description of why you made this PR*
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
- *And how you fix that*
|
||||||
|
|
||||||
|
## PR Status
|
||||||
|
*Obviously, you should really check these affirmations*
|
||||||
|
Work finished. Package_check, basic tests and upgrade from last version OK.
|
||||||
|
Could be reviewed and tested.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
---
|
||||||
|
*Minor decision*
|
||||||
|
- [ ] **Upgrade previous version** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link*
|
||||||
|
When the PR is mark as ready to merge, you have to wait for 3 days before really merge it.
|
||||||
|
|
||||||
|
*Medium decision*
|
||||||
|
- [ ] **Complete test** :
|
||||||
|
- [ ] **Upgrade previous version** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link*
|
||||||
|
When the PR is mark as ready to merge, you have to wait for 7 days before really merge it.
|
||||||
|
|
||||||
|
*Major decision*
|
||||||
|
- [ ] **Complete test** :
|
||||||
|
- [ ] **Complete test** :
|
||||||
|
- [ ] **Upgrade previous version** :
|
||||||
|
- [ ] **Upgrade previous version** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Code review** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **Approval (LGTM)** :
|
||||||
|
- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link*
|
||||||
|
When the PR is mark as ready to merge, you have to wait for 7 days before really merge it.
|
|
@ -1,134 +0,0 @@
|
||||||
# Apps in progress
|
|
||||||
|
|
||||||
<img src="/images/freshrss_logo.png" width=40>
|
|
||||||
<img src="/images/Icons_mumble.svg" width=40>
|
|
||||||
<img src="/images/Lutim_small.png" width=30>
|
|
||||||
<img src="/images/PluXml-logo_transparent.png" width=60>
|
|
||||||
<img src="/images/Etherpad.svg" width=40>
|
|
||||||
<img src="/images/gogs.svg" width=40>
|
|
||||||
<img src="/images/movim_logo.png" width=40>
|
|
||||||
<img src="/images/duniter-logo.svg" width=40>
|
|
||||||
<img src="/images/Zeronet_logo.png" width=40>
|
|
||||||
<img src="/images/jappix.png" width=50>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_en">Official apps</a>
|
|
||||||
<a class="btn btn-lg btn-default disabled" href="/apps_in_progress_en">Apps in progress</a>
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_wishlist_en">Apps wishlist</a>
|
|
||||||
|
|
||||||
The following applications are being packaged on by a growing number of packagers.
|
|
||||||
<div class="alert alert-danger">They are **NOT** validated by the packaging team, and as such, **no official support is provided** for them.<br>
|
|
||||||
You can test and use them **at your own risk**.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
You can install them through the [administration web interface](/admin) by choosing "Install custom app", or using the [moulinette](/moulinette):
|
|
||||||
```bash
|
|
||||||
yunohost app install https://github.com/<packager>/<app_repository>
|
|
||||||
```
|
|
||||||
|
|
||||||
The packagers will appreciate your remarks. If you test them and find issues, or ideas for improvement, do not hesitate to file issues directly on their repositories project page.
|
|
||||||
|
|
||||||
<div class="clearfix" style="margin-bottom: 1em;">
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-notworking .collapse">Collapse broken</div>
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-inprogress .collapse">Collapse in progress</div>
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-working .collapse">Collapse working</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2>Declared as working applications</h2>
|
|
||||||
<p><b style="color: red">Important: it's the application maintaineur that qualify his application as working, not the YunoHost core team. Install it at your own risks. We won't provide support for it.</b></p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-working"></div>
|
|
||||||
|
|
||||||
<h2>Work in progress applications</h2>
|
|
||||||
<p>Those are <b>not yet finished</b> applications, we <b>strongly advise against installing them</b> except if you know what you are doing.</p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-inprogress"></div>
|
|
||||||
|
|
||||||
<h2>Broken applications</h2>
|
|
||||||
<p>Do <b>NOT</b> install them, they are here as reference while they aren't fixed.</p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-notworking"></div>
|
|
||||||
|
|
||||||
<script type="text/template" id="app-template2">
|
|
||||||
<div class="panel panel-default panel-{app_state_bootstrap}">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="panel-title">
|
|
||||||
<a data-toggle="collapse" data-parent="#app-accordion" href="apps_in_progress/#app_{app_id}">{app_name} <em><small>({app_id})</small></em></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel-collapse collapse app_{app_id}">
|
|
||||||
<div class="panel-body">
|
|
||||||
<p><strong>Description</strong>: {app_description}</p>
|
|
||||||
<p><strong>Last update (UTC)</strong>: {app_update}</p>
|
|
||||||
<p><strong>Level</strong>: {app_level}</p>
|
|
||||||
<p><strong>Maintainer</strong>: {app_maintainer} <small class="text-muted">({app_mail})</small></p>
|
|
||||||
<p><strong>Git repository</strong>: <a href="{app_git}" target="_blank">{app_git}</a> <small class="text-muted">({app_branch})</small></p>
|
|
||||||
<p><strong>Software license</strong>: {app_license}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
function timeConverter(UNIX_timestamp) {
|
|
||||||
var a = new Date(UNIX_timestamp*1000);
|
|
||||||
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
|
|
||||||
var year = a.getFullYear();
|
|
||||||
var month = months[a.getMonth()];
|
|
||||||
var date = a.getDate();
|
|
||||||
var hour = a.getHours();
|
|
||||||
var min = a.getMinutes();
|
|
||||||
if (hour < 10) { hour = '0' + hour; }
|
|
||||||
if (min < 10) { min = '0' + min; }
|
|
||||||
var time = date+' '+month+' '+year+' at '+hour+':'+min;
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
$.getJSON('https://app.yunohost.org/community.json', function(app_list) {
|
|
||||||
// Cast as array
|
|
||||||
var app_list = $.map(app_list, function(el) { return el; });
|
|
||||||
// Sort alpha
|
|
||||||
app_list.sort(function(a, b){
|
|
||||||
if (a.manifest.id > b.manifest.id) {return 1;}
|
|
||||||
else if (a.manifest.id < b.manifest.id) {return -1;}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
$.each(app_list, function(k, infos) {
|
|
||||||
app_id = infos.manifest.id;
|
|
||||||
if (infos.state === "working") {
|
|
||||||
app_state_bootstrap = "default";
|
|
||||||
} else if (infos.state === "inprogress") {
|
|
||||||
app_state_bootstrap = "warning";
|
|
||||||
} else if (infos.state === "notworking") {
|
|
||||||
app_state_bootstrap = "danger";
|
|
||||||
}
|
|
||||||
|
|
||||||
html = $('#app-template2').html()
|
|
||||||
.replace(/{app_id}/g, app_id)
|
|
||||||
.replace(/{app_name}/g, infos.manifest.name)
|
|
||||||
.replace('{app_description}', infos.manifest.description.en)
|
|
||||||
.replace(/{app_git}/g, infos.git.url)
|
|
||||||
.replace('{app_branch}', infos.git.branch)
|
|
||||||
.replace('{app_level}', infos.level)
|
|
||||||
.replace('{app_update}', timeConverter(infos.lastUpdate))
|
|
||||||
.replace('{app_state}', infos.state)
|
|
||||||
.replace('{app_state_bootstrap}', app_state_bootstrap)
|
|
||||||
.replace('{app_license}', infos.manifest.license);
|
|
||||||
|
|
||||||
if (infos.manifest.developer) {
|
|
||||||
html = html
|
|
||||||
.replace('{app_maintainer}', infos.manifest.developer.name)
|
|
||||||
.replace('{app_mail}', infos.manifest.developer.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (infos.manifest.maintainer) {
|
|
||||||
html = html
|
|
||||||
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
|
||||||
.replace('{app_mail}', infos.manifest.maintainer.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#app-accordion2-' + infos.state).append(html);
|
|
||||||
$('.app_'+ app_id).attr('id', 'app_'+ app_id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,137 +0,0 @@
|
||||||
# Apps en cours
|
|
||||||
|
|
||||||
<img src="/images/freshrss_logo.png" width=40>
|
|
||||||
<img src="/images/Icons_mumble.svg" width=40>
|
|
||||||
<img src="/images/Lutim_small.png" width=30>
|
|
||||||
<img src="/images/PluXml-logo_transparent.png" width=60>
|
|
||||||
<img src="/images/Etherpad.svg" width=40>
|
|
||||||
<img src="/images/gogs.svg" width=40>
|
|
||||||
<img src="/images/movim_logo.png" width=40>
|
|
||||||
<img src="/images/duniter-logo.svg" width=40>
|
|
||||||
<img src="/images/Zeronet_logo.png" width=40>
|
|
||||||
<img src="/images/jappix.png" width=50>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_fr">Apps officielles</a>
|
|
||||||
<a class="btn btn-lg btn-default disabled" href="/apps_in_progress_fr">Apps en cours</a>
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_wishlist_fr">Apps souhaitées</a>
|
|
||||||
|
|
||||||
De plus en plus d’applications sont mises à disposition par les packagers.
|
|
||||||
<div class="alert alert-danger">Ces applications **n’ont pas** été validées par l’équipe YunoHost et **ne sont pas** officiellement prises en charge.<br>Vous pouvez les tester et les utiliser à **vos risques et périls**.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Elles sont installables avec l’[interface web d’administration](/admin) ou avec la moulinette :
|
|
||||||
```bash
|
|
||||||
yunohost app install https://github.com/<packageur>/<dépôt_app>
|
|
||||||
```
|
|
||||||
|
|
||||||
N’hésitez pas à vous créer un compte GitHub pour faire part de vos remarques aux packagers (sous forme d’« issues ») ou à leur proposer des améliorations (sous forme de « pull requests »).
|
|
||||||
|
|
||||||
<div class="clearfix" style="margin-bottom: 1em;">
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-notworking .collapse">Déplier cassées</div>
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-inprogress .collapse">Déplier en cours</div>
|
|
||||||
<div class="btn btn-default btn-xs pull-right" data-toggle="collapse" data-target="#app-accordion2-working .collapse">Déplier fonctionnelles</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2>Applications dites fonctionnelles</h2>
|
|
||||||
<p><b style="color: red">Remarque : c'est le mainteneur de l'application qui la décrit comme fonctionnelle, pas l'équipe de YunoHost. Installez la à vos risques et péril et soyez conscient que ne fournirons aucune assistance dessus.</b></p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-working"></div>
|
|
||||||
|
|
||||||
<h2>Applications en cours de développement</h2>
|
|
||||||
<p>Il s'agit d'application <b>pas encore fonctionnelles</b> mais en cours de développement, nous vous <b>déconseillons fortement de les installer</b> sauf si vous savez ce que vous faites.</p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-inprogress"></div>
|
|
||||||
|
|
||||||
<h2>Applications cassées</h2>
|
|
||||||
<p>Ne les installez <b>PAS</b>, elles sont là pour référence le temps d'être réparées.</p>
|
|
||||||
|
|
||||||
<div class="panel-group" id="app-accordion2-notworking"></div>
|
|
||||||
|
|
||||||
<script type="text/template" id="app-template2">
|
|
||||||
<div class="panel panel-default panel-{app_state_bootstrap}">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="panel-title">
|
|
||||||
<a data-toggle="collapse" data-parent="#app-accordion" href="#app_{app_id}">{app_name} <em><small>({app_id})</small></em></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel-collapse collapse app_{app_id}">
|
|
||||||
<div class="panel-body">
|
|
||||||
<p><strong>Description</strong> : {app_description}</p>
|
|
||||||
<p><strong>Dernière mise à jour (UTC)</strong> : {app_update}</p>
|
|
||||||
<p><strong>Niveau</strong>: {app_level}</p>
|
|
||||||
<p><strong>Mainteneur</strong> : {app_maintainer} <small class="text-muted">({app_mail})</small></p>
|
|
||||||
<p><strong>Dépôt git</strong> : <a href="{app_git}" target="_blank">{app_git}</a> <small class="text-muted">({app_branch})</small></p>
|
|
||||||
<p><strong>Licence de l’application</strong> : {app_license}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
function timeConverter(UNIX_timestamp) {
|
|
||||||
var a = new Date(UNIX_timestamp*1000);
|
|
||||||
var months = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'];
|
|
||||||
var year = a.getFullYear();
|
|
||||||
var month = months[a.getMonth()];
|
|
||||||
var date = a.getDate();
|
|
||||||
var hour = a.getHours();
|
|
||||||
var min = a.getMinutes();
|
|
||||||
if (hour < 10) { hour = '0' + hour; }
|
|
||||||
if (min < 10) { min = '0' + min; }
|
|
||||||
var time = date+' '+month+' '+year+' at '+hour+':'+min;
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
$.getJSON('https://app.yunohost.org/community.json', function(app_list) {
|
|
||||||
// Cast as array
|
|
||||||
var app_list = $.map(app_list, function(el) { return el; });
|
|
||||||
// Sort alpha
|
|
||||||
app_list.sort(function(a, b){
|
|
||||||
if (a.manifest.id > b.manifest.id) {return 1;}
|
|
||||||
else if (a.manifest.id < b.manifest.id) {return -1;}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
$.each(app_list, function(k, infos) {
|
|
||||||
app_id = infos.manifest.id;
|
|
||||||
if (typeof infos.manifest.description.fr === 'undefined') {
|
|
||||||
infos.manifest.description.fr = infos.manifest.description.en;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (infos.state === "working") {
|
|
||||||
app_state_bootstrap = "default";
|
|
||||||
} else if (infos.state === "inprogress") {
|
|
||||||
app_state_bootstrap = "warning";
|
|
||||||
} else if (infos.state === "notworking") {
|
|
||||||
app_state_bootstrap = "danger";
|
|
||||||
}
|
|
||||||
|
|
||||||
html = $('#app-template2').html()
|
|
||||||
.replace(/{app_id}/g, app_id)
|
|
||||||
.replace(/{app_name}/g, infos.manifest.name)
|
|
||||||
.replace('{app_description}', infos.manifest.description.fr)
|
|
||||||
.replace(/{app_git}/g, infos.git.url)
|
|
||||||
.replace('{app_branch}', infos.git.branch)
|
|
||||||
.replace('{app_level}', infos.level)
|
|
||||||
.replace('{app_update}', timeConverter(infos.lastUpdate))
|
|
||||||
.replace('{app_state}', infos.state)
|
|
||||||
.replace('{app_state_bootstrap}', app_state_bootstrap)
|
|
||||||
.replace('{app_license}', infos.manifest.license);
|
|
||||||
|
|
||||||
if (infos.manifest.developer) {
|
|
||||||
html = html
|
|
||||||
.replace('{app_maintainer}', infos.manifest.developer.name)
|
|
||||||
.replace('{app_mail}', infos.manifest.developer.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (infos.manifest.maintainer) {
|
|
||||||
html = html
|
|
||||||
.replace('{app_maintainer}', infos.manifest.maintainer.name)
|
|
||||||
.replace('{app_mail}', infos.manifest.maintainer.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#app-accordion2-' + infos.state).append(html);
|
|
||||||
$('.app_'+ app_id).attr('id', 'app_'+ app_id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
114
apps_wishlist.md
114
apps_wishlist.md
|
@ -1,6 +1,6 @@
|
||||||
# Apps wishlist
|
# Apps wishlist
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_en">Official apps</a> <a class="btn btn-lg btn-default" href="/apps_in_progress_en">Apps in progress</a> <a class="btn btn-lg btn-default disabled" href="/apps_wishlist_en">Apps wishlist</a>
|
<div class="alert alert-info">Before to add an app in wishlist please check your app is not already in official or community list: see the <a href="/apps_en">apps list</a></div>
|
||||||
|
|
||||||
The following list is a compiled wishlist of applications that would be nice-to-have.
|
The following list is a compiled wishlist of applications that would be nice-to-have.
|
||||||
|
|
||||||
|
@ -9,153 +9,171 @@ The following list is a compiled wishlist of applications that would be nice-to-
|
||||||
- [List of awesome selfhosted apps](https://github.com/Kickball/awesome-selfhosted)
|
- [List of awesome selfhosted apps](https://github.com/Kickball/awesome-selfhosted)
|
||||||
- [List of awesome sysadmin apps](https://github.com/kahun/awesome-sysadmin)
|
- [List of awesome sysadmin apps](https://github.com/kahun/awesome-sysadmin)
|
||||||
- [List of awesome Node.js projects](https://github.com/sqreen/awesome-nodejs-projects)
|
- [List of awesome Node.js projects](https://github.com/sqreen/awesome-nodejs-projects)
|
||||||
|
- [List of SIP softwares/applications](https://en.wikipedia.org/wiki/List_of_SIP_software#Free_and_open-source_license)
|
||||||
- [10er10](https://github.com/dready92/10er10)
|
- [10er10](https://github.com/dready92/10er10)
|
||||||
|
- [Airsonic](https://github.com/airsonic/airsonic)
|
||||||
- [Airtime](https://www.sourcefabric.org/en/airtime/)
|
- [Airtime](https://www.sourcefabric.org/en/airtime/)
|
||||||
- [Ajenti](http://ajenti.org)
|
- [Ajenti](http://ajenti.org)
|
||||||
- [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog)
|
- [aMule](https://github.com/amule-project/amule)
|
||||||
- [Auth0 SSO Dashboard](https://github.com/auth0/auth0-sso-dashboard)
|
- [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension)
|
||||||
|
- [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog) (/!\ last update: Jan 27, 2015)
|
||||||
|
- [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions)
|
||||||
|
- [Bitwarden](https://bitwarden.com/)
|
||||||
|
- [Beehive](https://github.com/muesli/beehive)
|
||||||
|
- [Blynk](https://github.com/blynkkk/blynk-library)
|
||||||
- [Bolt](http://bolt.cm)
|
- [Bolt](http://bolt.cm)
|
||||||
|
- [Bookstack](https://www.bookstackapp.com/)
|
||||||
- [Browsepass](http://techualization.blogspot.de/2013/09/introducing-browsepass-keepass-on-web.html)
|
- [Browsepass](http://techualization.blogspot.de/2013/09/introducing-browsepass-keepass-on-web.html)
|
||||||
|
- [Calibre](https://manual.calibre-ebook.com/server.html)
|
||||||
- [Caliopen](https://www.caliopen.org)
|
- [Caliopen](https://www.caliopen.org)
|
||||||
- [Candy](https://candy-chat.github.io/candy)
|
- [Candy](https://candy-chat.github.io/candy)
|
||||||
- [CardDavMate](https://www.inf-it.com/open-source/clients/carddavmate)
|
- [CardDavMate](https://www.inf-it.com/open-source/clients/carddavmate)
|
||||||
- [cgit](http://git.zx2c4.com/cgit/about)
|
- [cgit](http://git.zx2c4.com/cgit/about)
|
||||||
- [CheckUp](https://sourcegraph.github.io/checkup)
|
- [CheckUp](https://sourcegraph.github.io/checkup)
|
||||||
- [CiviCRM](https://civicrm.org)
|
- [CiviCRM](https://civicrm.org)
|
||||||
- [Collabora Online](https://www.collaboraoffice.com/code/)
|
- [Cockpit](http://cockpit-project.org/)
|
||||||
- [Collabora Online server](https://nextcloud.com/collaboraonline/) (to be able to use Collabora inside Nextcloud)
|
|
||||||
- [Commafeed](https://github.com/Athou/commafeed)
|
- [Commafeed](https://github.com/Athou/commafeed)
|
||||||
- [Converse.js](https://conversejs.org)
|
- [Converse.js](https://conversejs.org)
|
||||||
- [Coquelicot](https://coquelicot.potager.org) – [package](https://github.com/M5oul/coquelicot_ynh)
|
- [Cozy](https://github.com/cozy)
|
||||||
- [Cryptpad](https://github.com/xwiki-labs/cryptpad)
|
|
||||||
- [Cronkeep](https://github.com/cronkeep/cronkeep)
|
- [Cronkeep](https://github.com/cronkeep/cronkeep)
|
||||||
- [CronWeb](https://github.com/fisherinnovation/CronWeb)
|
|
||||||
- [Croodle](https://github.com/jelhan/croodle) Schedule a date or to do a poll on a general topics, with client-side encryption.
|
- [Croodle](https://github.com/jelhan/croodle) Schedule a date or to do a poll on a general topics, with client-side encryption.
|
||||||
- [CumulusClips](http://cumulusclips.org)
|
- [CumulusClips](http://cumulusclips.org)
|
||||||
|
- [Cyclos](https://www.cyclos.org)
|
||||||
- [Darkwire.io](https://github.com/seripap/darkwire.io)
|
- [Darkwire.io](https://github.com/seripap/darkwire.io)
|
||||||
- [Deluge](http://deluge-torrent.org) (with WebUI)
|
- [Deluge](http://deluge-torrent.org) (with WebUI)
|
||||||
- [DemocracyOS](http://democracyos.org)
|
|
||||||
- [DirectoryLister](https://github.com/DirectoryLister/DirectoryLister)
|
- [DirectoryLister](https://github.com/DirectoryLister/DirectoryLister)
|
||||||
- [Discourse](http://discourse.org)
|
- [Discourse](https://discourse.org)
|
||||||
- [DNSchain](https://github.com/okTurtles/dnschain)
|
- [DNSchain](https://github.com/okTurtles/dnschain)
|
||||||
- [Emby](https://emby.media)
|
- [Emby](https://emby.media)
|
||||||
|
- [Emoncms](https://github.com/emoncms/emoncms)
|
||||||
- [ERPnext](https://erpnext.com/download)
|
- [ERPnext](https://erpnext.com/download)
|
||||||
- [Ethersheet](https://ethersheet.org)
|
- [Ethersheet](https://github.com/ethersheet-collective/EtherSheet)
|
||||||
- [Fail2web](https://github.com/Sean-Der/fail2web)
|
- [Fail2web](https://github.com/Sean-Der/fail2web)
|
||||||
- [Ferment](https://github.com/mmckegg/ferment)
|
- [Ferment](https://github.com/mmckegg/ferment)
|
||||||
|
- [FEX](http://fex.rus.uni-stuttgart.de/)
|
||||||
- [FileTea](https://filetea.me)
|
- [FileTea](https://filetea.me)
|
||||||
|
- [FoOlSlide](http://foolcode.github.io/FoOlSlide/) Open source comicbook/manga management software
|
||||||
- [Fossil](http://www.fossil-scm.org)
|
- [Fossil](http://www.fossil-scm.org)
|
||||||
- [Framaslides](https://framagit.org/framasoft/framaslides/)
|
- [Framaslides](https://framagit.org/framasoft/framaslides/)
|
||||||
|
- [Geneweb](https://geneweb.tuxfamily.org)
|
||||||
- [GetSimple CMS](http://get-simple.info)
|
- [GetSimple CMS](http://get-simple.info)
|
||||||
- [Git-annex](http://git-annex.branchable.com)
|
- [Git-annex](http://git-annex.branchable.com)
|
||||||
- [Gitit](http://gitit.net)
|
- [Gitit](https://github.com/jgm/gitit)
|
||||||
- [GitLab](http://gitlab.org)
|
- [Goaccess](https://goaccess.io) Web log analyser (replaces piwik without js tracking scripts)
|
||||||
- [Gollum](https://github.com/gollum/gollum)
|
- [Gollum](https://github.com/gollum/gollum)
|
||||||
- [Goploader](https://github.com/Depado/goploader)
|
- [Goploader](https://github.com/Depado/goploader)
|
||||||
|
- [Granary](https://github.com/snarfed/granary)
|
||||||
- [Guacamole](http://guac-dev.org)
|
- [Guacamole](http://guac-dev.org)
|
||||||
- [h5ai](http://larsjung.de/h5ai)
|
- [h5ai](http://larsjung.de/h5ai)
|
||||||
|
- [HackMD CE](https://github.com/hackmdio/hackmd)
|
||||||
- [Hackpad](https://github.com/dropbox/hackpad)
|
- [Hackpad](https://github.com/dropbox/hackpad)
|
||||||
- [Headphones](https://github.com/rembo10/headphones)
|
- [Headphones](https://github.com/rembo10/headphones)
|
||||||
- [Hi Buddy](http://hibuddy.monkeypatch.me)
|
- [Hi Buddy](https://github.com/tOkeshu/hibuddy) (/!\ last update: 17 Feb 2015)
|
||||||
- [Huginn](https://github.com/cantino/huginn)
|
- [Huginn](https://github.com/cantino/huginn)
|
||||||
- [Hugo](http://gohugo.io)
|
- [Hugo](http://gohugo.io)
|
||||||
- [Icecast 2](http://www.icecast.org)
|
- [Icecast 2](http://www.icecast.org)
|
||||||
- [ikiwiki](http://ikiwiki.info)
|
- [ikiwiki](http://ikiwiki.info)
|
||||||
- [img.bi](https://img.bi)
|
- [img.bi](https://github.com/imgbi/img.bi)
|
||||||
- [Inbox](https://www.inboxapp.com)
|
|
||||||
- [InfCloud](https://www.inf-it.com/open-source/clients/infcloud)
|
- [InfCloud](https://www.inf-it.com/open-source/clients/infcloud)
|
||||||
|
- [Invoice Ninja](https://www.invoiceninja.com)
|
||||||
- [InvoicePlane](https://invoiceplane.com)
|
- [InvoicePlane](https://invoiceplane.com)
|
||||||
- [IPFS](https://ipfs.io)
|
- [IPFS](https://ipfs.io)
|
||||||
- [Jeedom](http://www.jeedom.fr) – [package](https://github.com/lunarok/jeedom_ynh)
|
- [Joplin](http://joplin.cozic.net/)
|
||||||
- [Joomla!](https://www.joomla.org)
|
|
||||||
- [JS Bin](http://jsbin.com/help/2-second-setup)
|
- [JS Bin](http://jsbin.com/help/2-second-setup)
|
||||||
- [Kaiwa](http://getkaiwa.com)
|
- [Kaiwa](http://getkaiwa.com)
|
||||||
|
- [Keepass](http://keepass.info)
|
||||||
- [Kin calendar](https://github.com/KinToday)
|
- [Kin calendar](https://github.com/KinToday)
|
||||||
- [Kinto](https://github.com/Kinto/formbuilder)
|
- [Kinto](https://github.com/Kinto/formbuilder)
|
||||||
- [Kiwix](http://www.kiwix.org/) Offline wikipedia
|
- [Kiwix](http://www.kiwix.org/) Offline wikipedia
|
||||||
- [Known](https://withknown.com)
|
- [Known](https://withknown.com)
|
||||||
- [Koel](http://koel.phanan.net)
|
- [Koel](http://koel.phanan.net)
|
||||||
- [Kontalk](http://kontalk.org)
|
- [Kontalk](https://kontalk.org)
|
||||||
- [Koozip](http://koozic.net)
|
- [Koozip](http://koozic.net)
|
||||||
- [Kresus](https://framagit.org/bnjbvr/kresus)
|
- [Kresus](https://framagit.org/bnjbvr/kresus)
|
||||||
- [KrISS feed](https://github.com/tontof/kriss_feed)
|
- [KrISS feed](https://github.com/tontof/kriss_feed)
|
||||||
|
- [Koken](http://koken.me)
|
||||||
- [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29)
|
- [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29)
|
||||||
|
- [Lessy](https://lessy.io)
|
||||||
|
- [LibreNews-Server](https://librenews.io)
|
||||||
- [LibreOffice Online](https://wiki.documentfoundation.org/ReleaseNotes/5.3/fr#LibreOffice_Online)
|
- [LibreOffice Online](https://wiki.documentfoundation.org/ReleaseNotes/5.3/fr#LibreOffice_Online)
|
||||||
- [LiquidSoap](http://savonet.sourceforge.net/)
|
- [LiquidSoap](http://savonet.sourceforge.net/)
|
||||||
- [Logstalgia](http://logstalgia.io)
|
- [Logstalgia](http://logstalgia.io)
|
||||||
- [Loomio](https://www.loomio.org)
|
- [Loomio](https://www.loomio.org)
|
||||||
- [The Lounge](https://thelounge.github.io), cf. https://github.com/Kloadut/shout_ynh/issues/4
|
- [The Lounge](https://thelounge.github.io), cf. https://github.com/Kloadut/shout_ynh/issues/4
|
||||||
- [LSTU](https://github.com/ldidry/lstu)
|
|
||||||
- [MaidSafe](http://maidsafe.net)
|
- [MaidSafe](http://maidsafe.net)
|
||||||
- [Mailpile](https://www.mailpile.is)
|
- [Mailpile](https://www.mailpile.is)
|
||||||
- [MatterMost](https://github.com/mattermost/platform)
|
- [Matomo](https://matomo.org/) (formerly Piwik)
|
||||||
- [MediaCrush](https://imgrush.com)
|
- [MediaCrush](https://github.com/MediaCrush/MediaCrush) (/!\ last update: Jan 23, 2015)
|
||||||
- [MinigalNano](https://github.com/sebsauvage/MinigalNano)
|
- [MinigalNano](https://github.com/sebsauvage/MinigalNano) (/!\ last update: Jun 24, 2016)
|
||||||
- [Mirakel](http://mirakel.azapps.de/taskwarrior.html)
|
- [Mirakel](http://mirakel.azapps.de/taskwarrior.html) (/!\ SSL-Warning)
|
||||||
- [Modoboa](http://modoboa.org)
|
- [Modoboa](http://modoboa.org)
|
||||||
|
- [MotionEye](https://github.com/ccrisan/motioneye)
|
||||||
- [MPD](http://www.musicpd.org)
|
- [MPD](http://www.musicpd.org)
|
||||||
- [NetData](https://github.com/firehol/netdata)
|
- [Museek+](https://github.com/eLvErDe/museek-plus)
|
||||||
- [Nibbleblog](http://www.nibbleblog.com)
|
- [Nibbleblog](http://www.nibbleblog.com)
|
||||||
- [NodeBB](https://nodebb.org)
|
- [Nuage](https://nuage.kerjean.me/login)
|
||||||
- [ONLYOFFICE](http://onlyoffice.org)
|
|
||||||
- [ONLYOFFICE Document Server](http://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx) (to be able to use ONLYOFFICE inside Nextcloud)
|
- [ONLYOFFICE Document Server](http://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx) (to be able to use ONLYOFFICE inside Nextcloud)
|
||||||
|
- [ONLYOFFICE](http://onlyoffice.org)
|
||||||
- [OpenBazaar](https://openbazaar.org)
|
- [OpenBazaar](https://openbazaar.org)
|
||||||
- [OpenJabNab](https://github.com/OpenJabNab/OpenJabNab)
|
- [OpenJabNab](https://github.com/OpenJabNab/OpenJabNab) (/!\ last update: Apr 30, 2016)
|
||||||
- [Paperless](https://github.com/danielquinn/paperless)
|
- [Paperless](https://github.com/danielquinn/paperless)
|
||||||
- [Paperwork](http://paperwork.rocks)
|
- [Paperwork](http://paperwork.rocks)
|
||||||
- [pdfy](https://github.com/joepie91/pdfy)
|
- [pdfy](https://github.com/joepie91/pdfy) (/!\ last update: Aug 5, 2014)
|
||||||
- [PeerTube](https://github.com/Chocobozzz/PeerTube)
|
- [Pelias](https://github.com/pelias/pelias)
|
||||||
- [Pelican](http://blog.getpelican.com)
|
|
||||||
- [Peps](https://github.com/MLstate/PEPS)
|
- [Peps](https://github.com/MLstate/PEPS)
|
||||||
- [PHPList](http://www.phplist.com)
|
- [PHPList](http://www.phplist.com)
|
||||||
- [PHProxy](http://sourceforge.net/projects/poxy)
|
- [PHProxy](http://sourceforge.net/projects/poxy)
|
||||||
- [Phraseanet](https://docs.phraseanet.com/3.8/fr/index.html#)
|
- [Phraseanet](https://docs.phraseanet.com/3.8/fr/index.html#)
|
||||||
- [Pico](http://picocms.org)
|
- [Pico](http://picocms.org)
|
||||||
- [Pix](http://pix.toile-libre.org)
|
- [Pix](http://pix.toile-libre.org)
|
||||||
- [PPTP VPN](https://packages.debian.org/sv/squeeze/pptpd)
|
- [Playmaker](https://github.com/NoMore201/playmaker)
|
||||||
|
- [Pleroma](https://git.pleroma.social/pleroma/pleroma)
|
||||||
- [Privoxy](http://www.privoxy.org)
|
- [Privoxy](http://www.privoxy.org)
|
||||||
- [ProcessMaker](http://www.processmaker.com)
|
- [ProcessMaker](http://www.processmaker.com)
|
||||||
- [Pulse](https://ind.ie/pulse)
|
- [PyLoad](https://github.com/pyload/pyload)
|
||||||
|
- [Pulse](https://source.ind.ie/project/pulse-swift/tree/master)
|
||||||
- [Pump.io](http://pump.io)
|
- [Pump.io](http://pump.io)
|
||||||
|
- [qBittorrent](https://github.com/qbittorrent/qBittorrent)
|
||||||
- [racktables](http://racktables.org)
|
- [racktables](http://racktables.org)
|
||||||
- [remotestorage-server](http://remotestorage.io/provide)
|
- [Redmine](https://www.redmine.org)
|
||||||
|
- [remotestorage-server](https://remotestorage.io/)
|
||||||
- [Request Tracker](https://bestpractical.com)
|
- [Request Tracker](https://bestpractical.com)
|
||||||
- [Respawn 2.0](https://github.com/broncowdd/respawn)
|
- [Respawn 2.0](https://github.com/broncowdd/respawn) ( /!\ last update: 2015)
|
||||||
- [Restya](http://restya.com)
|
- [Restya](http://restya.com)
|
||||||
- [uMap](https://umap.openstreetmap.fr/en)
|
- [SABnzbd](https://sabnzbd.org)
|
||||||
|
- [ScenariChain-server](https://download.scenari.software/SCENARIchain-server/)
|
||||||
- [Scramble, Browser-based PGP web mail](https://github.com/dcposch/scramble)
|
- [Scramble, Browser-based PGP web mail](https://github.com/dcposch/scramble)
|
||||||
- [Scribbleton](https://scribbleton.com)
|
- [Scribbleton](https://scribbleton.com)
|
||||||
- [ShareLatex](https://www.sharelatex.com)
|
- [ShareLatex](https://www.sharelatex.com)
|
||||||
- [Shleuder](http://schleuder2.nadir.org)
|
- [Shleuder](http://schleuder2.nadir.org)
|
||||||
- [Simone](https://github.com/Kloadut/Simone)
|
- [Simone](https://github.com/Kloadut/Simone)
|
||||||
- [SIP](https://en.wikipedia.org/wiki/List_of_SIP_software#Free_and_open-source_license)
|
- [SocialHome](https://github.com/jaywink/socialhome) (Socialhome is best described as a federated personal profile with social networking functionality) (https://socialhome.network)
|
||||||
- [Sonarr](https://sonarr.tv)
|
- [Sonarr](https://sonarr.tv)
|
||||||
- [Stackedit](https://stackedit.io)
|
- [Stackedit](https://stackedit.io)
|
||||||
- [StandardNotes](https://standardnotes.org) (a clean, simple, E2E-encrypted notes app) -- specifically, the server-side [StandardFile](https://standardfile.org) portion.
|
- [StandardNotes](https://standardnotes.org) (a clean, simple, E2E-encrypted notes app) -- specifically, the server-side [StandardFile](https://standardfile.org) portion.
|
||||||
- [Streama](https://github.com/dularion/streama)
|
- [Streama](https://github.com/dularion/streama)
|
||||||
- [Streisand](https://github.com/jlund/streisand)
|
- [Streisand](https://github.com/jlund/streisand)
|
||||||
- [SVG-Edit](https://github.com/SVG-Edit/svgedit)
|
- [SVG-Edit](https://github.com/SVG-Edit/svgedit)
|
||||||
- [Sympa](http://www.sympa.org)
|
|
||||||
- [Taskwarrior](https://taskwarrior.org)
|
|
||||||
- [Taiga](https://taiga.io)
|
- [Taiga](https://taiga.io)
|
||||||
|
- [Tania](http://gettania.org/)
|
||||||
|
- [Taskwarrior](https://taskwarrior.org)
|
||||||
- [TorChat](https://github.com/prof7bit/TorChat)
|
- [TorChat](https://github.com/prof7bit/TorChat)
|
||||||
- [Torrent Tunes](https://github.com/tchoulihan/torrenttunes-client)
|
- [Torrent Tunes](https://github.com/tchoulihan/torrenttunes-client)
|
||||||
- [Total Respawn](https://github.com/broncowdd/TotalRespawn)
|
- [Total Respawn](https://github.com/broncowdd/TotalRespawn)
|
||||||
- [Twister](http://twister.net.co)
|
- [Twister](http://twister.net.co)
|
||||||
- [Unvis](https://github.com/phixofor/unvis.it)
|
- [TwitRSS.me](http://twitrss.me/) ([Github](https://github.com/ciderpunx/twitrssme)) Scrapes Twitter to create RSS feeds.
|
||||||
- [Unsee](https://github.com/unsee-cc)
|
- [Unvis](https://unv.is/) ([Github](https://github.com/lodjuret/unvis.it))
|
||||||
- [Vaultier](http://www.vaultier.org)
|
- [Vaultier](http://www.vaultier.org)
|
||||||
- [Weblate](http://weblate.org)
|
|
||||||
- [Webmpc](https://github.com/ushis/webmpc)
|
- [Webmpc](https://github.com/ushis/webmpc)
|
||||||
- [WebODF](http://webodf.org)
|
- [WebODF](http://webodf.org)
|
||||||
- [webSync](http://furier.github.io/websync)
|
- [webSync](http://furier.github.io/websync)
|
||||||
- [WebTorrent](https://github.com/feross/webtorrent)
|
- [WebTorrent](https://github.com/feross/webtorrent)
|
||||||
- [Wekan](http://wekan.io)
|
|
||||||
- [WID](https://wid.chorem.com/site/home)
|
|
||||||
- [Wisemapping](http://www.wisemapping.com)
|
- [Wisemapping](http://www.wisemapping.com)
|
||||||
- [Xonotic](http://xonotic.org)
|
- [Xonotic](http://xonotic.org)
|
||||||
- [Yacy](http://yacy.net) – [package](https://github.com/M5oul/yacy_ynh)
|
- [YellowCMS](https://datenstrom.se/yellow)
|
||||||
- [YellowCMS](http://datenstrom.se/yellow)
|
- [YesWiki](https://yeswiki.net)
|
||||||
- [YesWiki](http://yeswiki.net/wa.php?wiki=AccueiL)
|
- [ZeroTier](https://github.com/zerotier/ZeroTierOne)
|
||||||
- [Zone-project](https://github.com/descl/ZONE)
|
|
||||||
- [ZNC](http://wiki.znc.in/ZNC)
|
- [ZNC](http://wiki.znc.in/ZNC)
|
||||||
|
- [Zone-project](https://github.com/descl/ZONE)
|
||||||
|
- [Zoneminder](https://github.com/ZoneMinder/zoneminder)
|
||||||
|
- [microblog.pub](https://microblog.pub)
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
# Apps souhaitées
|
# Apps souhaitées
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_fr">Apps officielles</a>
|
|
||||||
<a class="btn btn-lg btn-default" href="/apps_in_progress_fr">Apps en cours</a>
|
|
||||||
<a class="btn btn-lg btn-default disabled" href="/apps_wishlist_fr">Apps souhaitées</a>
|
|
||||||
|
|
||||||
La liste des applications souhaitées n’est maintenue qu’en <a href="/apps_wishlist_en">version anglaise</a>. Merci de vous y référer.
|
La liste des applications souhaitées n’est maintenue qu’en <a href="/apps_wishlist_en">version anglaise</a>. Merci de vous y référer.
|
||||||
|
|
10
artworks.md
10
artworks.md
|
@ -1,10 +0,0 @@
|
||||||
#Art Works
|
|
||||||
Black and white YunoHost png logo done by ToZz (400 × 400 px):
|
|
||||||
|
|
||||||
<a href="/images/ynh_logo_black.png"><img src="/images/ynh_logo_black.png" width=220></a>
|
|
||||||
|
|
||||||
<a href="/images/ynh_logo_white.png"><img src="/images/ynh_logo_white.png" width=220></a>
|
|
||||||
|
|
||||||
Click to download.
|
|
||||||
|
|
||||||
Licence: CC-BY-SA 4.0
|
|
|
@ -1,10 +0,0 @@
|
||||||
#Travail artistique
|
|
||||||
Logo Yunohost noir et blanc réalisé par ToZz (400 × 400 px) :
|
|
||||||
|
|
||||||
<a href="/images/ynh_logo_black.png"><img src="/images/ynh_logo_black.png" width=220></a>
|
|
||||||
|
|
||||||
<a href="/images/ynh_logo_white.png"><img src="/images/ynh_logo_white.png" width=220></a>
|
|
||||||
|
|
||||||
Cliquer pour télécharger.
|
|
||||||
|
|
||||||
Licence: CC-BY-SA 4.0
|
|
284
backup.md
284
backup.md
|
@ -1,165 +1,149 @@
|
||||||
# Backup
|
Backing up your server and apps
|
||||||
|
===============================
|
||||||
|
|
||||||
First make sure that the `archives` folder exists in `/home/yunohost.backup/`. If it does not, create it with:
|
Backing up your server, apps and data is an important concern when administrating a server. This protects you from unexpected events that could happen (server lost in a fire, database corruption, loss of access, server compromised, ...). The backup policy you will put in place depends of the importance of the services and data hosted. For instance you won't care too much about having backup on a test server, but you will care about having a backup of critical data of your association or company, and having this backup *in a different physical place*.
|
||||||
|
|
||||||
|
Backups in the context of YunoHost
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
YunoHost comes with a backup system, that allows to backup (and restore) system configurations and data (e.g. mails) and apps if they support it.
|
||||||
|
|
||||||
|
You can manage backups either from the command line (`yunohost backup --help`) or from the web administration (in the Backups section) though some features are not yet available in the webadmin.
|
||||||
|
|
||||||
|
The current default method consists in creating a `.tar.gz` archive containing all relevant files. In the future, YunoHost plans to support [Borg](https://www.borgbackup.org/) which is a more flexible, efficient and powerful solution.
|
||||||
|
|
||||||
|
Creating backups
|
||||||
|
----------------
|
||||||
|
|
||||||
|
#### From the webadmin
|
||||||
|
|
||||||
|
You can easily create backup archives from the webadmin by going in Backups > Local storage and clicking on "New backup". You will then be asked to select which configuration, data and apps you want to backup.
|
||||||
|
|
||||||
|
![](/images/backup.png)
|
||||||
|
|
||||||
|
#### From the command line
|
||||||
|
|
||||||
|
You can create a new backup archive with the command line. Here are a few simple example of commands and their corresponding behavior :
|
||||||
|
|
||||||
|
- Backing up everything (all system parts and apps) :
|
||||||
```bash
|
```bash
|
||||||
sudo mkdir /home/yunohost.backup/archives
|
yunohost backup create
|
||||||
```
|
```
|
||||||
|
|
||||||
Launch a backup via
|
- Backing up only apps
|
||||||
```bash
|
```bash
|
||||||
sudo yunohost backup create
|
yunohost backup create --apps
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- Backing up only two apps (wordpress and shaarli)
|
||||||
In this version you can backup with cli or with the web admin. The cli way allows you to do more things. The webadmin way is more accessible.
|
|
||||||
|
|
||||||
## Web admin
|
|
||||||
Basically with the webadmin, you can:
|
|
||||||
|
|
||||||
- backup into `/home/yunohost/archives/`
|
|
||||||
- choose to backup one or more data among:
|
|
||||||
- apps data
|
|
||||||
- emails
|
|
||||||
- home data
|
|
||||||
- configuration
|
|
||||||
- list backups
|
|
||||||
- see what there is in a backup
|
|
||||||
- restore selectively a backup
|
|
||||||
|
|
||||||
**Caution:** to do a backup, you need to have enough free disk spaces in the destination directory. For example, if you have 20GB in `/home/data` you need to have enough space to contain this 20GB compressed in a tar.gz. To do the tar.gz, yunohost backup uses shallow copies, to avoid to need more spaces to be able to create the tar.gz.
|
|
||||||
|
|
||||||
**Caution:** If you use selective restore, be sure to not create discordant operation. For example, if you restore an app using a domain that has been deleted from YunoHost, you need to read the domain or to restore all configuration files.
|
|
||||||
|
|
||||||
Here's a list of missing but planned features:
|
|
||||||
|
|
||||||
- backup in another memory device
|
|
||||||
- download/upload backups
|
|
||||||
- encrypt backups
|
|
||||||
|
|
||||||
Some features are almost ready in the webadmin, but the API is not for the moment.
|
|
||||||
|
|
||||||
## Command line
|
|
||||||
### Backup
|
|
||||||
You can make a full backup by running this command:
|
|
||||||
```bash
|
```bash
|
||||||
admin@yunohost:~# sudo yunohost backup create
|
yunohost backup create --apps wordpress shaarli
|
||||||
Exécution des scripts de sauvegarde...
|
|
||||||
Attention : backup script '/etc/yunohost/apps/phpmyadmin/scripts/backup' not found
|
|
||||||
Attention : App 'phpmyadmin' will not be saved
|
|
||||||
Lancement du script de sauvegarde de l'application 'odoo'...
|
|
||||||
Création de l'archive de sauvegarde...
|
|
||||||
Succès ! Sauvegarde terminée
|
|
||||||
archive:
|
|
||||||
hooks:
|
|
||||||
conf_ssh: /usr/share/yunohost/hooks/backup/08-conf_ssh
|
|
||||||
conf_ynh_firewall: /usr/share/yunohost/hooks/backup/20-conf_ynh_firewall
|
|
||||||
data_mail: /usr/share/yunohost/hooks/backup/23-data_mail
|
|
||||||
conf_cron: /usr/share/yunohost/hooks/backup/32-conf_cron
|
|
||||||
conf_ynh_certs: /usr/share/yunohost/hooks/backup/21-conf_ynh_certs
|
|
||||||
conf_ynh_mysql: /usr/share/yunohost/hooks/backup/11-conf_ynh_mysql
|
|
||||||
conf_xmpp: /usr/share/yunohost/hooks/backup/26-conf_xmpp
|
|
||||||
data_home: /usr/share/yunohost/hooks/backup/17-data_home
|
|
||||||
conf_nginx: /usr/share/yunohost/hooks/backup/29-conf_nginx
|
|
||||||
conf_ssowat: /usr/share/yunohost/hooks/backup/14-conf_ssowat
|
|
||||||
conf_ldap: /usr/share/yunohost/hooks/backup/05-conf_ldap
|
|
||||||
created_at: 1448540733
|
|
||||||
apps:
|
|
||||||
odoo:
|
|
||||||
version: -
|
|
||||||
name: Odoo
|
|
||||||
description: Odoo est une collection d'apps de gestion d'entreprise (ERP : CRM, Comptabilité, Point de Vente, RH, Achats, ...).
|
|
||||||
description:
|
|
||||||
name: 20151126-132533
|
|
||||||
admin@yunohost:~# sudo ls /home/yunohost.backup/archives/
|
|
||||||
20151126-132533.info.json 20151126-132533.tar.gz
|
|
||||||
```
|
```
|
||||||
By default, it backups in `/home/yunohost.backup/archives/`, but you can set your own directory with `-o` option. It could be an usb key or an other mounted filesystem.
|
|
||||||
|
|
||||||
If an app has no backup script it warns you.
|
- Backing up only mails
|
||||||
|
|
||||||
As you can see in the answer, there is 2 hooks which backup data (data_home and data_mail). By default, the mysql data aren't saved, because the apps should save themselves their databases.
|
|
||||||
|
|
||||||
|
|
||||||
**Note:** `yunohost backup` is not able currently to create diff backup. But you can use `-r` option to avoid compression and use an other backup tool to make diff backup.
|
|
||||||
|
|
||||||
### Restore
|
|
||||||
To do a restore
|
|
||||||
```bash
|
```bash
|
||||||
admin@yunohost:~# sudo yunohost backup restore 20151126-132533
|
yunohost backup create --system data_mail
|
||||||
```
|
```
|
||||||
You can choose to apply only some parts of the backup, by selecting which restore hooks and which apps to restore.
|
|
||||||
|
|
||||||
## Packaging information
|
- Backing up mails and wordpress
|
||||||
You can see an example to make backup and restore scripts here
|
|
||||||
https://github.com/YunoHost/example_ynh/tree/testing
|
|
||||||
and
|
|
||||||
https://github.com/zamentur/strut_ynh/
|
|
||||||
|
|
||||||
There is some helpers to do shadow copy if you have big quantity of data to backup (owncloud, video apps, etc...).
|
|
||||||
|
|
||||||
**Note:** during a backup operation, the restore script associated is saved. So in a restore operation, yunohost use the saved restore script and not the most recent script.
|
|
||||||
|
|
||||||
If you want modify a general conf file, you should use hooks to trigger a modification of the conf file after each call of `yunohost regenconf`.
|
|
||||||
You can also use the regeneration configuration system to do index your conf file, and allow your user to be warn if an upgrade of your app has change a config file.
|
|
||||||
|
|
||||||
## Annex
|
|
||||||
```bash
|
```bash
|
||||||
usage: yunohost backup create [-h] [-d DESCRIPTION] [-o OUTPUT_DIRECTORY]
|
yunohost backup create --system data_mail --apps wordpress
|
||||||
[-n NAME] [--ignore-hooks]
|
|
||||||
[--hooks [HOOKS [HOOKS ...]]]
|
|
||||||
[--apps [APPS [APPS ...]]] [-r] [--ignore-apps]
|
|
||||||
|
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
|
||||||
-d DESCRIPTION, --description DESCRIPTION
|
|
||||||
Short description of the backup
|
|
||||||
-o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
|
|
||||||
Output directory for the backup
|
|
||||||
-n NAME, --name NAME Name of the backup archive
|
|
||||||
--ignore-hooks Do not execute backup hooks
|
|
||||||
--hooks [HOOKS [HOOKS ...]]
|
|
||||||
List of backup hooks names to execute
|
|
||||||
--apps [APPS [APPS ...]]
|
|
||||||
List of application names to backup
|
|
||||||
-r, --no-compress Do not create an archive file
|
|
||||||
--ignore-apps Do not backup apps
|
|
||||||
|
|
||||||
usage: yunohost backup restore [-h] [--force] [--hooks [HOOKS [HOOKS ...]]]
|
|
||||||
[--ignore-hooks] [--apps [APPS [APPS ...]]]
|
|
||||||
[--ignore-apps]
|
|
||||||
name
|
|
||||||
|
|
||||||
positional arguments:
|
|
||||||
name Name of the local backup archive
|
|
||||||
|
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
|
||||||
--force Force restauration on an already installed system
|
|
||||||
--hooks [HOOKS [HOOKS ...]]
|
|
||||||
List of restauration hooks names to execute
|
|
||||||
--ignore-hooks Do not restore hooks
|
|
||||||
--apps [APPS [APPS ...]]
|
|
||||||
List of application names to restore
|
|
||||||
--ignore-apps Do not restore apps
|
|
||||||
|
|
||||||
|
|
||||||
usage: yunohost backup [-h] {info,restore,create,list,delete} ...
|
|
||||||
|
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
|
||||||
|
|
||||||
actions:
|
|
||||||
{info,restore,create,list,delete}
|
|
||||||
info Show info about a local backup archive
|
|
||||||
restore Restore from a local backup archive
|
|
||||||
create Create a backup local archive
|
|
||||||
list List available local backup archives
|
|
||||||
delete Delete a backup archive
|
|
||||||
root@staging1:/home/admin# sudo yunohost backup list --help
|
|
||||||
usage: yunohost backup list [-h] [-i] [-H]
|
|
||||||
|
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
|
||||||
-i, --with-info Show backup information for each archive
|
|
||||||
-H, --human-readable Print sizes in human readable format
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For more informations and options about backup creation, consult `yunohost backup create --help`. You can also list system parts that can be backuped with `yunohost hook list backup`.
|
||||||
|
|
||||||
|
#### Apps-specific configuration
|
||||||
|
|
||||||
|
Some apps such as nextcloud may be related to a large quantity of data which are not backuped by default. This practice is referred to "backing up only the core" (of the app). However it's possible to enable the backup of all data of this app with `yunohost app setting nextcloud backup_core_only -v 0`. Be careful though that your archive might get huge if there's too much data to be backuped...
|
||||||
|
|
||||||
|
Downloading and uploading backups
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
After creating backup archives, it is possible to list and inspect them via the corresponding views in the webadmin, or via `yunohost backup list` and `yunohost backup info <archivename>` from the command line. By default, backups are stored in `/home/yunohost.backup/archives/`.
|
||||||
|
|
||||||
|
There is currently no straightfoward way to dowload or upload a backup archive.
|
||||||
|
|
||||||
|
One solution consists in using `scp` (a program based on [`ssh`](/ssh)) to copy files between two machines via the command line. Hence, from a machine running linux, you should be able to run the following to download a specific backup :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp admin@your.domain.tld:/home/yunohost.backup/archives/<archivename>.tar.gz ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Similarly, you can upload a backup from a machine to your server with
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp /path/to/your/<archivename>.tar.gz admin@your.domain.tld:/home/yunohost.backup/archives/
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, a solution can be to install Nextcloud or a similar app and configure it to be able to access files in `/home/yunohost.backup/archives/` from a web browser.
|
||||||
|
|
||||||
|
Restoring backups
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
#### From the webadmin
|
||||||
|
|
||||||
|
Go in Backup > Local storage and select your archive. You can then select which items you want to restore, then click 'Restore'.
|
||||||
|
|
||||||
|
![](/images/restore.png)
|
||||||
|
|
||||||
|
#### From the command line
|
||||||
|
|
||||||
|
From the command line, you can run `yunohost backup restore <archivename>` (without the `.tar.gz`) to restore an archive. As for `yunohost backup create`, this will restore everything in the archive by default. If you want to restore only specific items, you can use for instance `yunohost backup restore --apps wordpress` which will restore only the wordpress app.
|
||||||
|
|
||||||
|
#### Constrains
|
||||||
|
|
||||||
|
To restore an app, the domain on which it was installed should already be configured (or you need to restore the corresponding system configuration). You also cannot restore an app which is already installed ... which means that to restore an old version of an app, you must first uninstall it.
|
||||||
|
|
||||||
|
#### Restoring during the postinstall
|
||||||
|
|
||||||
|
One specific feature is the ability to restore a full archive *instead* of the postinstall step. This makes it useful when you want to reinstall a system entirely from an existing backup. To be able to do this, you will need to upload the archive on the server and place it in `/home/yunohost.backup/archives` though. Then, instead of `yunohost tools poinstall` you can run :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yunohost backup restore <archivename>
|
||||||
|
```
|
||||||
|
|
||||||
|
To go futher
|
||||||
|
------------
|
||||||
|
|
||||||
|
#### Storing backups on a different drive
|
||||||
|
|
||||||
|
If you want, you can connect and mount an external drive to store backup archives on it (among other things). For this, we first move the existing archives then add a symbolic link.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PATH_TO_DRIVE="/media/my_external_drive" # For instance, depends of where you mounted your drive
|
||||||
|
mv /home/yunohost.backup/archives $PATH_TO_DRIVE/yunohost_backup_archives
|
||||||
|
ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Automatic backups
|
||||||
|
|
||||||
|
You can add a simple cron job to trigger automatic backups regularly. For instance, to backup your wordpress weekly, create a file `/etc/cron.weekly/backup-wordpress` with the following content :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
yunohost backup create --apps wordpress
|
||||||
|
```
|
||||||
|
|
||||||
|
then make it executable :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chown +x /etc/cron.weekly/backup-wordpress
|
||||||
|
```
|
||||||
|
|
||||||
|
Be careful what you backup exactly and when : you don't want to end up with your whole disk space saturated because you backuped 30 Go of data every day.
|
||||||
|
|
||||||
|
#### Backing your server on a remote server
|
||||||
|
|
||||||
|
You can follow this tutorial on the forum to setup Borg between two servers : https://forum.yunohost.org/t/how-to-backup-your-yunohost-server-on-another-server/3153
|
||||||
|
|
||||||
|
Alternatively, the app Archivist allows to setup a similar system : https://forum.yunohost.org/t/new-app-archivist/3747
|
||||||
|
|
||||||
|
#### Full backup with `dd`
|
||||||
|
|
||||||
|
If you are using an ARM board, another method for doing a full backup can be to create an image of the SD card. For this, poweroff your ARM board, get the SD card in your computer then create a full image with something like :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dd if=/dev/mmcblk0 of=./backup.img
|
||||||
|
```
|
||||||
|
|
||||||
|
(replace `/dev/mmcblk0` with the actual device of your sd card)
|
||||||
|
|
175
backup_fr.md
175
backup_fr.md
|
@ -1,48 +1,149 @@
|
||||||
# Les sauvegardes
|
Sauvegarder son serveur et ses apps
|
||||||
|
===================================
|
||||||
|
|
||||||
**Prérequis :** vérifier que le dossier `archives` existe bien dans le dossier `/home/yunohost.backup/`
|
Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour palier à des événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegarder à mettre en place dépend de l'importance des services et des données que vous gérez. Par exemple, sauvegarder un serveur de test aura peu d'intérêt, tandis que vous voudrez être très prudent si vous gérez des données critiques pour une association ou une entreprise - et dans ce genre de cas, vous souhaiterez stocker les sauvegardes *dans un endroit différent*.
|
||||||
sinon le créer via un
|
|
||||||
|
Les sauvegardes avec YunoHost
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
YunoHost contient un système de sauvegarde, qui permet de sauvegarder (et restaurer) les configurations du système, les données "système" (comme les mails) et les applications si elles le supportent.
|
||||||
|
|
||||||
|
Vous pouvez gérer vos sauvegardes via la ligne de commande (`yunohost backup --help`) ou la webadmin (dans la section Sauvegardes) bien que certaines fonctionnalités ne soient pas disponible via celle-ci.
|
||||||
|
|
||||||
|
Actuellement, la méthode de sauvegarde actuelle consiste à créer des archives `.tar.gz` qui contiennent les fichiers pertinents. Pour le futur, YunoHost envisage de supporter nativement [Borg](https://www.borgbackup.org/) qui est une solution plus flexible, performante et puissante pour gérer des sauvegardes.
|
||||||
|
|
||||||
|
Créer des sauvegardes
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
#### Depuis la webadmin
|
||||||
|
|
||||||
|
Vous pouvez facilement créer des archives depuis la webadmin en allant dans Sauvegardes > Archives locales et en cliquant sur "Nouvelle sauvegarde". Vous pourrez ensuite sélectionner quoi sauvegarder (configuration, données "système", applications).
|
||||||
|
|
||||||
|
![](/images/backup.png)
|
||||||
|
|
||||||
|
#### Depuis la ligne de commande
|
||||||
|
|
||||||
|
Vous pouvez créer de nouvelles archives depuis la ligne de commande. Voici quelques exemples de commandes et leur comportement correspondant:
|
||||||
|
|
||||||
|
- Tout sauvegarder (système et application)
|
||||||
```bash
|
```bash
|
||||||
sudo mkdir /home/yunohost.backup/archives
|
yunohost backup create
|
||||||
```
|
|
||||||
Lancer la sauvegarde via
|
|
||||||
```bash
|
|
||||||
sudo yunohost backup create
|
|
||||||
```
|
|
||||||
Un fichier portant un numéro et une extension .tar.gz est crée
|
|
||||||
(exemple 1452694078.tar.gz)
|
|
||||||
|
|
||||||
Cette archive contient une copie des dossiers suivants et fichiers de configurations dans les répertoires suivants
|
|
||||||
- cron
|
|
||||||
- home (car les données d’owncloud se trouvent dans `/home/yunohost.apps/owncloud` par exemple)
|
|
||||||
- ldap
|
|
||||||
- mail
|
|
||||||
- mysql
|
|
||||||
- nginx
|
|
||||||
- ssh
|
|
||||||
- ssowat
|
|
||||||
- xmpp
|
|
||||||
- yunohost
|
|
||||||
|
|
||||||
Cette sauvegarde sous forme d’archive est à copier sur un autre support (support mémoire, répertoire réseau…)
|
|
||||||
|
|
||||||
Pour récupérer une sauvegarde depuis son serveur vers le /home de son ordinateur (avec 1234 comme port SSH ; avec IP_ou_NDD comme adresse IP [locale ou pas] ou NDD son Nom De Domaine ; avec $USER son nom d'utilisateur ; avec aaaammjj-hhmmss comme par exemple 20161002-084907 [nom de la sauvegarde YunoHost]) :
|
|
||||||
```bash
|
|
||||||
scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.tar.gz /home/$USER
|
|
||||||
scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.info.json /home/$USER
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Sur le même principe que précédemment, envoyer une sauvegarde depuis le /home de son ordinateur vers son serveur (s'assurer que le dossier archive existe bien sinon lancer une première sauvegarde ou bien en dernier recours créer le dossier en root : mkdir /home/yunohost.backup/archives) :
|
- Sauvegarder seulement les apps
|
||||||
```bash
|
```bash
|
||||||
scp -P 1234 /home/$USER/aaaammjj-hhmmss.info.json root@IP_ou_NDD:/home/yunohost.backup/archives
|
yunohost backup create --apps
|
||||||
scp -P 1234 /home/$USER/aaaammjj-hhmmss.tar.gz root@IP_ou_NDD:/home/yunohost.backup/archives
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Pour restaurer une sauvegarde :
|
- Sauvegarder seulement deux apps (wordpress et shaarli)
|
||||||
```bash
|
```bash
|
||||||
yunohost backup restore nom_de_la_sauvegarde
|
yunohost backup create --apps wordpress shaarli
|
||||||
```
|
```
|
||||||
|
|
||||||
# Pour déplacer ses sauvegardes sur un autre disque dur
|
- Sauvegarder seulement les mails
|
||||||
|
```bash
|
||||||
|
yunohost backup create --system data_mail
|
||||||
|
```
|
||||||
|
|
||||||
Il suffit de monter son disque dur dans le dossier /home/yunohost.backup/archives
|
- Sauvegarder les mails et wordpress
|
||||||
|
```bash
|
||||||
|
yunohost backup create --system data_mail --apps wordpress
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour plus d'informations et d'option sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties de système qui sont sauvegardable avec `yunohost hook list backup`.
|
||||||
|
|
||||||
|
#### Configuration spécifiques à certaines apps
|
||||||
|
|
||||||
|
Certaines apps comme Nextcloud sont potentiellement rattachées à des quantités importantes de données, qui ne sont pas sauvegardées par défaut. Dans ce cas, on dit que l'app "sauvegarde uniquement le core" (de l'app). Néanmoins, il est possible d'activer la sauvegarde de toutes les données de cette application avec (dans le cas de Nextcloud) `yunohost app setting nextcloud backup_core_only -v 0`. Soyez prudent: en fonction des données stockées dans nextcloud, il se peut que l'archive que vous obtenez ensuite devienne énorme...
|
||||||
|
|
||||||
|
Télécharger et téléverser des sauvegardes
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
Après avoir créé des sauvegardes, il est possible de les lister et de les inspecter grâce aux vues correspondantes dans la webadmin, ou via `yunohost backup list` et `yunohost backup info <nom_d'archive>` depuis la ligne de commande. Par défaut, les sauvegardes sont stockées dans `/home/yunohost.backup/archives/`.
|
||||||
|
|
||||||
|
Il n'existe actuellement pas de solution "rapide et facile" pour télécharger ou téléverser une archive depuis une autre machine.
|
||||||
|
|
||||||
|
Une solution consiste à utiliser `scp` (un programme basé sur [`ssh`](/ssh)) pour copier des fichiers entre deux machines grâce à la ligne de commande. Ainsi, depuis une machine sous Linux, vous pouvez utiliser la commande suivante pour télécharger une archive:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp admin@your.domain.tld:/home/yunohost.backup/archives/<nom_d'archive>.tar.gz ./
|
||||||
|
```
|
||||||
|
|
||||||
|
De façon similaire, vous pouvez téléverser une sauvegarde depuis une machine vers votre serveur avec:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp /path/to/your/<nom_d'archive>.tar.gz admin@your.domain.tld:/home/yunohost.backup/archives/
|
||||||
|
```
|
||||||
|
|
||||||
|
Une solution alternative consiste à installer une application comme Nextcloud et à la configurer pour être en mesure d'accéder aux fichiers dans `/home/yunohost.backup/archives/` depuis un navigateur web.
|
||||||
|
|
||||||
|
Restaurer des sauvegardes
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
#### Depuis la webadmin
|
||||||
|
|
||||||
|
Allez dans Sauvegardes > Sauvegardes locales et sélectionnez l'archive. Vous pouvez ensuite choisir les différents éléments que vous voulez restaurer puis cliquer sur "Restaurer".
|
||||||
|
|
||||||
|
![](/images/restore.png)
|
||||||
|
|
||||||
|
#### Depuis la ligne de commande
|
||||||
|
|
||||||
|
Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore <nom_d'archive>` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app wordpress.
|
||||||
|
|
||||||
|
#### Contraintes
|
||||||
|
|
||||||
|
Pour restaurer une application, le domaine sur laquelle elle est installée doit déjà être configuré (ou il vous faut restaurer en même temps la configuration correspondante). Aussi, il n'est pas possible de restaurer une application déjà installée... ce qui veut dire que pour restaurer une sauvegarde d'une app, il vous faut déjà la désinstaller.
|
||||||
|
|
||||||
|
#### Restauration d'une archive à la place de la post-installation
|
||||||
|
|
||||||
|
Une fonctionnalité particulière est la possibilité de restaurer une archive entière *à la place* de faire la post-installation. Ceci est utile pour réinstaller un système entièrement à partir d'une sauvegarde existante. Pour faire cela, il vous faudra d'abord téléverser l'archive sur le server et la placer dans `/home/yunohost.backup/archives`. Ensuite, à la place de `yunohost tools poinstall` vous pouvez faire:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yunohost backup restore <nom_d'archive>
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour aller plus loin
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
#### Stocker les archives sur un autre disque
|
||||||
|
|
||||||
|
Si vous le souhaitez, vous pouvez connecter un disque externe à votre serveur pour (parmi d'autres choses) stocker les archives de backup dessus. Pour cela, il faut d'abord déplacer les archives existantes vers le disque, puis créer un lien symbolique:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PATH_TO_DRIVE="/media/mon_disque_externe" # Par exemple - Tout dépend d'où le disque est monté
|
||||||
|
mv /home/yunohost.backup/archives $PATH_TO_DRIVE/yunohost_backup_archives
|
||||||
|
ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Sauvegardes automatiques
|
||||||
|
|
||||||
|
Vous pouvez ajouter une tâche cron pour déclencher automatiquement une sauvegarde régulièrement. Par exemple pour sauvegarder l'application wordpress toutes les semaines, créez un fichier `/etc/cron.weekly/backup-wordpress` avec le contenu suivant:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
yunohost backup create --apps wordpress
|
||||||
|
```
|
||||||
|
|
||||||
|
puis rendez-le exécutable:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chown +x /etc/cron.weekly/backup-wordpress
|
||||||
|
```
|
||||||
|
|
||||||
|
Soyez prudent à propos de ce que vous sauvegardez et de la fréquence: il vaut mieux éviter de se retrouver avec un disque saturé car vous avez voulu sauvegarder 30 Go de données tous les jours...
|
||||||
|
|
||||||
|
#### Sauvegarder sur un serveur distant
|
||||||
|
|
||||||
|
Vous pouvez suivre ce tutoriel sur le forum pour mettre en place Borg entre deux serveurs: https://forum.yunohost.org/t/how-to-backup-your-yunohost-server-on-another-server/3153
|
||||||
|
|
||||||
|
Il existe aussi l'application Archivist qui permet un système similaire: https://forum.yunohost.org/t/new-app-archivist/3747
|
||||||
|
|
||||||
|
#### Backup complet avec `dd`
|
||||||
|
|
||||||
|
Si vous êtes sur une carte ARM, une autre méthode pour créer une sauvegarde complète consiste à créer une image (copie) de la carte SD. Pour cela, éteignez votre serveur, insérez la carte SD dans votre ordinateur et créez une image avec une commande comme:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dd if=/dev/mmcblk0 of=./backup.img
|
||||||
|
```
|
||||||
|
|
||||||
|
(remplacez `/dev/mmcblk0` par le vrai nom de votre carte SD)
|
||||||
|
|
|
@ -37,26 +37,16 @@ Check that your computer is physically connected and retry.</div>
|
||||||
|
|
||||||
* It should reboot automatically.
|
* It should reboot automatically.
|
||||||
|
|
||||||
## <small>4.</small> Proceed to post-installation
|
## <small>4.</small> Log in
|
||||||
|
|
||||||
Once booted, your computer should display a screen like this:
|
After the reboot, you should see a black screen with a few words asking you to
|
||||||
|
log in. You can log with the following credentials :
|
||||||
|
|
||||||
<img src="/images/virtualbox_4.png">
|
* User: **root**
|
||||||
|
* Password: **yunohost**
|
||||||
|
|
||||||
You can proceed to post-installation right away, or access the **IP** address shown on this screen from another computer's web browser (usually `http://192.168.x.x`)
|
## <small>5.</small> Proceed to post-installation
|
||||||
|
|
||||||
<img src="/images/postinstall_error.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<a class="btn btn-lg btn-default" href="/postinstall">Post-install documentation</a>
|
||||||
|
|
||||||
If you encounter this kind of error, click on "**Proceed**" or "**Add an exception**".
|
|
||||||
This means that you have to trust the certificate which secures your server's connections.
|
|
||||||
Since this is your server, you can bypass it serenely here :-)
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<img src="/images/postinstall_web.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### More information on the post-installation here:
|
|
||||||
|
|
||||||
**[yunohost.org/postinstall](/postinstall)**
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Démarrez votre serveur avec la clé USB ou le CD-ROM inséré, et sélectionnez
|
||||||
|
|
||||||
## <small>3.</small> Lancer l’installation graphique
|
## <small>3.</small> Lancer l’installation graphique
|
||||||
|
|
||||||
Vous devriez voit un écran comme ça :
|
Vous devriez voir un écran comme ça :
|
||||||
|
|
||||||
<img src="/images/virtualbox_3.png">
|
<img src="/images/virtualbox_3.png">
|
||||||
|
|
||||||
|
@ -35,26 +35,16 @@ Vérifiez que votre serveur est bien branché et réessayez.</div>
|
||||||
|
|
||||||
* L’ordinateur devrait redémarrer automatiquement à la fin de l’installation.
|
* L’ordinateur devrait redémarrer automatiquement à la fin de l’installation.
|
||||||
|
|
||||||
## <small>4.</small> Procéder à la post-installation
|
## <small>4.</small> Log in
|
||||||
|
|
||||||
Une fois démarré, votre serveur devrait afficher un écran comme celui-ci :
|
Après avoir redémarré, votre machine devrait afficher un écran noir avec
|
||||||
|
quelques mots vous invitant à vous identifier. Vous pouvez utiliser les
|
||||||
|
identifiants suivants :
|
||||||
|
|
||||||
<img src="/images/virtualbox_4.png">
|
* User: **root**
|
||||||
|
* Password: **yunohost**
|
||||||
|
|
||||||
Vous pouvez procéder à la post-installation directement, ou accéder à l’adresse **IP** affichée sur cet écran depuis un navigateur web d’un autre ordinateur (généralement `http://192.168.x.x`)
|
## <small>5.</small> Procéder à la post-installation
|
||||||
|
|
||||||
<img src="/images/postinstall_error.png" style="max-width:100% ; border-radius: 5px ; border: 1px solid rgba(0,0,0,0.15) ; box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<a class="btn btn-lg btn-default" href="/postinstall_fr">Documentation de la post-installation</a>
|
||||||
|
|
||||||
Si vous rencontrez une erreur de ce type, cliquez sur « **Poursuivre quand même** » ou « **Ajouter une exception** ».
|
|
||||||
Cela signifie que vous devez faire confiance au certificat qui sécurise les connexions avec votre serveur.
|
|
||||||
Comme c’est le votre, vous pouvez le valider sereinement ici :-)
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<img src="/images/postinstall_web.png" style="max-width:100% ; border-radius: 5px ; border: 1px solid rgba(0,0,0,0.15) ; box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Plus d’informations sur la post-installation ici :
|
|
||||||
|
|
||||||
**[yunohost.org/postinstall](/postinstall)**
|
|
||||||
|
|
|
@ -1,124 +0,0 @@
|
||||||
# Build ARM image
|
|
||||||
|
|
||||||
This tutorial's goal is to build a plug-and-play image for YunoHost for ARM boards.
|
|
||||||
|
|
||||||
It could be used on many ARM board (Rasberry Pi, Olimex, Cubieboard…).
|
|
||||||
|
|
||||||
This tutorial is based on [Yunocubian](https://github.com/M5oul/Yunocubian).
|
|
||||||
|
|
||||||
You could find [ARM image builder from Debian Jessie](https://github.com/YunoHost/install_script/pull/36).
|
|
||||||
|
|
||||||
**All these steps can be executed with variations of [this script](https://github.com/likeitneverwentaway/rpi_buildbot/blob/master/build_image.sh).**
|
|
||||||
|
|
||||||
### Download minimal Debian Jessie
|
|
||||||
Download a Debian Jessie image compatible with the hardware **without desktop environnement** installed:
|
|
||||||
|
|
||||||
* [ARMbian](http://www.armbian.com/download/) (Olimex, Cubieboard, Banana Pi…)
|
|
||||||
* [Raspbian Jessie Lite](https://www.raspberrypi.org/downloads/raspbian/)
|
|
||||||
|
|
||||||
### Copy image and install YunoHost
|
|
||||||
<a class="btn btn-lg btn-default" href="/copy_image">Copy image to the SD card</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/plug_and_boot">Plug & boot</a>
|
|
||||||
|
|
||||||
* Connect via [SSH](ssh): **pi@exemple.tld/ip_address** with the password **raspberry** (or any variations for other distros than Raspbian).
|
|
||||||
* Set a root password :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo passwd
|
|
||||||
```
|
|
||||||
|
|
||||||
and login as root:
|
|
||||||
```bash
|
|
||||||
su
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
* You should be **root** for next operations.
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/install_on_raspberry">Manually install YunoHost on a Raspberry Pi</a>
|
|
||||||
|
|
||||||
If you encounter problems during installation check out [this installation guide](http://avignu.wiki.tuxfamily.org/doku.php?id=documentation:yunohost-jessie) for the Raspberry Pi, based on suggestion [from this thread](https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597).
|
|
||||||
|
|
||||||
<div class="alert alert-danger">Do not proceed to **post-installation**.</div>
|
|
||||||
|
|
||||||
### Clean image
|
|
||||||
* Update image:
|
|
||||||
```bash
|
|
||||||
apt-get update && apt-get dist-upgrade && apt-get autoremove
|
|
||||||
```
|
|
||||||
* Change hostname:
|
|
||||||
```bash
|
|
||||||
sed -i "s/$(hostname)/YunoHost/g" /etc/hosts
|
|
||||||
sed -i "s/$(hostname)/YunoHost/g" /etc/hostname
|
|
||||||
```
|
|
||||||
* Allow SSH connection as root:
|
|
||||||
```bash
|
|
||||||
sed -i '0,/without-password/s/without-password/yes/g' /etc/ssh/sshd_config
|
|
||||||
```
|
|
||||||
* Delete the **pi** user (this step must be perform directly as root, not logged in as pi and then login as root):
|
|
||||||
```bash
|
|
||||||
deluser –remove-all-files pi
|
|
||||||
```
|
|
||||||
* Set the first boot script:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/yunohost-firstboot -P /etc/init.d/
|
|
||||||
|
|
||||||
# Give executable right
|
|
||||||
chmod a+x /etc/init.d/yunohost-firstboot
|
|
||||||
|
|
||||||
# Make it execute at next boot
|
|
||||||
insserv /etc/init.d/yunohost-firstboot
|
|
||||||
```
|
|
||||||
* Set the boot promtp script:
|
|
||||||
```bash
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.service -P /etc/systemd/system/
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.sh -P /usr/bin/
|
|
||||||
chmod a+x /usr/bin/boot_prompt.sh
|
|
||||||
systemctl enable boot_prompt.service
|
|
||||||
```
|
|
||||||
|
|
||||||
* Tell the boot_prompt script that the next boot is the first boot:
|
|
||||||
```bash
|
|
||||||
touch /etc/yunohost/firstboot
|
|
||||||
```
|
|
||||||
|
|
||||||
* Turn off your board:
|
|
||||||
```bash
|
|
||||||
shutdown
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Don't forget to reset **wpa-supplicant.conf** if you changed it. You could also delete the command history with
|
|
||||||
|
|
||||||
```bash
|
|
||||||
history -c
|
|
||||||
```
|
|
||||||
or by editing **/root/.bash_history**.
|
|
||||||
|
|
||||||
### Copy image
|
|
||||||
Plug your SD card on your desktop computer and copy it:
|
|
||||||
<div class="alert alert-danger">Be carefull to not erase your data.</div>
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo dd bs=1M if=/dev/sdd of=~/yunohost-jessie-board-year-month-day.img
|
|
||||||
```
|
|
||||||
You can also use the **Read** function of [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/).
|
|
||||||
|
|
||||||
### Verify image
|
|
||||||
<a class="btn btn-lg btn-default" href="/copy_image">Copy image to the SD card</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/plug_and_boot">Plug & boot</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/postinstall">Post-install</a>
|
|
||||||
|
|
||||||
<div class="alert alert-info">If everything is alright, you could publish your image.</div>
|
|
||||||
|
|
||||||
### Publish image
|
|
||||||
* Reduce size by zipping the image:
|
|
||||||
```bash
|
|
||||||
zip yunohost-jessie-board-year-month-day.img.zip yunohost-jessie-board-year-month-day.img
|
|
||||||
```
|
|
||||||
|
|
||||||
* Publish: you could post your image on the [forum](https://forum.yunohost.org/).
|
|
|
@ -1,126 +0,0 @@
|
||||||
# Build ARM image
|
|
||||||
|
|
||||||
Le but de ce tutoriel est de créer une image YunoHost prête à l'emploi pour les cartes ARM.
|
|
||||||
Elle pourra être utilisée sur de nombreuses cartes (Rasberry Pi, Olimex, Cubieboard…).
|
|
||||||
|
|
||||||
Ce tutoriel est basé sur [Yunocubian](https://github.com/M5oul/Yunocubian).
|
|
||||||
|
|
||||||
Vous pouvez trouvez le script [ARM image builder from Debian Jessie](https://github.com/YunoHost/install_script/pull/36).
|
|
||||||
|
|
||||||
|
|
||||||
**Toutes ces étapes peuvent être executées en utilisant des variations de [ce script](https://github.com/likeitneverwentaway/rpi_buildbot/blob/master/build_image.sh).**
|
|
||||||
|
|
||||||
### Télechargez une version minimale de Debian Jessie
|
|
||||||
Télechargez une image Debian Jessie compatible avec la carte **sans environnement graphique** installé:
|
|
||||||
|
|
||||||
* [ARMbian](http://www.armbian.com/download/) (Olimex, Cubieboard, Banana Pi…)
|
|
||||||
* [Raspbian Jessie Lite](https://www.raspberrypi.org/downloads/raspbian/)
|
|
||||||
|
|
||||||
### Copiez l'image et installez YunoHost
|
|
||||||
<a class="btn btn-lg btn-default" href="/copy_image_fr">Copie de l'image sur la carte SD</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/plug_and_boot_fr">Plug & boot</a>
|
|
||||||
|
|
||||||
* Connewion via [SSH](ssh): **pi@exemple.tld/ip_address** avec le mot de passe **raspberry** (ou toute autre variation pour des distros différentes de Raspbian).
|
|
||||||
* Mettez un mot de passe root :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo passwd
|
|
||||||
```
|
|
||||||
|
|
||||||
et se connecter en tant que root:
|
|
||||||
```bash
|
|
||||||
su
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
* Vous devriez être **root** pour les étapes suivantes.
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/install_on_raspberry_fr">Installez manuellement YunoHost sur un Raspberry Pi</a>
|
|
||||||
|
|
||||||
Si vous rencontrez des problèmes durant l'installation regardez [ce guide d'installation](http://avignu.wiki.tuxfamily.org/doku.php?id=documentation:yunohost-jessie) pour le Raspberry Pi, sur les suggestions [de ce thread](https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597).
|
|
||||||
|
|
||||||
<div class="alert alert-danger">Ne pas faire la **post-installation**.</div>
|
|
||||||
|
|
||||||
### Nettoyage de l'image
|
|
||||||
* Mise à jour de l'image:
|
|
||||||
```bash
|
|
||||||
apt-get update && apt-get dist-upgrade && apt-get autoremove
|
|
||||||
```
|
|
||||||
* Changez l'hostname:
|
|
||||||
```bash
|
|
||||||
sed -i "s/$(hostname)/YunoHost/g" /etc/hosts
|
|
||||||
sed -i "s/$(hostname)/YunoHost/g" /etc/hostname
|
|
||||||
```
|
|
||||||
* Permettre les connections SSH en tant que root:
|
|
||||||
```bash
|
|
||||||
sed -i '0,/without-password/s/without-password/yes/g' /etc/ssh/sshd_config
|
|
||||||
```
|
|
||||||
* Supprimer l'user pi (cette étape doit être effectuer directement en tant que root, pas connecté avec l'user pi puis root):
|
|
||||||
```bash
|
|
||||||
deluser –remove-all-files pi
|
|
||||||
```
|
|
||||||
* Mise en place du script de premier boot:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/yunohost-firstboot -P /etc/init.d/
|
|
||||||
|
|
||||||
# Droit d'execution au script
|
|
||||||
chmod a+x /etc/init.d/yunohost-firstboot
|
|
||||||
|
|
||||||
# Execute le script au prochain boot
|
|
||||||
insserv /etc/init.d/yunohost-firstboot
|
|
||||||
```
|
|
||||||
* Mise en place du script boot promtp:
|
|
||||||
```bash
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.service -P /etc/systemd/system/
|
|
||||||
wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.sh -P /usr/bin/
|
|
||||||
chmod a+x /usr/bin/boot_prompt.sh
|
|
||||||
systemctl enable boot_prompt.service
|
|
||||||
```
|
|
||||||
|
|
||||||
* Dites au script boot_promt que le prochain boot est le premier boot:
|
|
||||||
```bash
|
|
||||||
touch /etc/yunohost/firstboot
|
|
||||||
```
|
|
||||||
|
|
||||||
* Éteindre la carte:
|
|
||||||
```bash
|
|
||||||
shutdown
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Ne pas oublier de reset le fichier **wpa-supplicant.conf** si vous l'avez modifié. Vous pouvez aussi supprimer l'historique des commandes avec
|
|
||||||
|
|
||||||
```bash
|
|
||||||
history -c
|
|
||||||
```
|
|
||||||
ou en éditant **/root/.bash_history**.
|
|
||||||
|
|
||||||
### Copie de l'image
|
|
||||||
Branchez la carte SD à votre ordinateur et faites en une copie:
|
|
||||||
<div class="alert alert-danger">Faites attention de ne pas supprimer vos données.</div>
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo dd bs=1M if=/dev/sdd of=~/yunohost-jessie-board-year-month-day.img
|
|
||||||
```
|
|
||||||
|
|
||||||
Vous pouvez aussi utiliser la fonction **Read** de [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/).
|
|
||||||
|
|
||||||
|
|
||||||
### Verifer l' image
|
|
||||||
<a class="btn btn-lg btn-default" href="/copy_image_fr">Copier l'image sur la carte SD</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/plug_and_boot_fr">Plug & boot</a>
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/postinstall_fr">Post-install</a>
|
|
||||||
|
|
||||||
<div class="alert alert-info">Si tous va bien, vous pouvez publiez votre image.</div>
|
|
||||||
|
|
||||||
### Publier l'image
|
|
||||||
* Reduire la taille en zippant l'image:
|
|
||||||
```bash
|
|
||||||
zip yunohost-jessie-board-year-month-day.img.zip yunohost-jessie-board-year-month-day.img
|
|
||||||
```
|
|
||||||
|
|
||||||
* Publication: vous pouvez publier l'image sur le [forum](https://forum.yunohost.org/).
|
|
|
@ -1,70 +0,0 @@
|
||||||
# YunoHost Debian Packages
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
YunoHost packages are located on the yunohost.org workstation, in the `/home/yunohost/packages.git` folder.
|
|
||||||
|
|
||||||
Build system is based on debuild and pbuilder. It will generate a chroot, embedding every dependencies and Debian build tools.
|
|
||||||
|
|
||||||
Configuration is defined in the `/etc/pbuilder/megusta-amd64` file and allows to make packages without any specific architecture.
|
|
||||||
|
|
||||||
<div class="alert alert-info">
|
|
||||||
**Caution:** be advised not to be logged in as "root" to execute the following commands (except those starting with `sudo`).
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Package update
|
|
||||||
#### Packages with external sources
|
|
||||||
Packages based on GitHub sources (moulinette, moulinette-yunohost, ssowat, et yunohost-admin) require the latest modifications:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette $ cd src
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette/src $ git pull
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, start package build (**caution: you need to be located in the package root folder**):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette/src $ cd ..
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette $ commit-and-build "Message de commit"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Configuration Packages
|
|
||||||
To update a yunohost-config-* package, move to the root folder, make your changes (for example: change a `debian/postinst` script), and type in the same command as for packages with sources:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/yunohost-config-nginx $ commit-and-build "Commit message"
|
|
||||||
```
|
|
||||||
|
|
||||||
The build command will update the Debian changelog (`debian/changelog`) and start the package creation. Once created, it will automatically added in the repository test`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Update in a production environment
|
|
||||||
To add a package in the `megusta` (stable) (`debian/changelog`):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/monpaquet $ commit-and-build "Commit message" production
|
|
||||||
```
|
|
||||||
|
|
||||||
Once modifications are applied, you may execute `git push` to send your modifications to GitHub.
|
|
||||||
|
|
||||||
## Add a package to a repository manually
|
|
||||||
You can add Debian packages into the repository. NodeJS package is an example.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb repository_name package_name.deb
|
|
||||||
```
|
|
||||||
|
|
||||||
`repository_name` may be `test` or `megusta`.
|
|
||||||
|
|
||||||
## Delete a package from a repository
|
|
||||||
Delete a Debian package from a repository in order to empty the test repository for example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb repository_name package_name
|
|
||||||
```
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
Modify commit-build script to retrieve git commit messages and generate Debian changelog with `git-dch` command.
|
|
|
@ -1,77 +0,0 @@
|
||||||
# Les paquets Debian YunoHost
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
Les paquets YunoHost se trouvent sur la machine yunohost.org dans le répertoire `/home/yunohost/packages.git`.
|
|
||||||
|
|
||||||
Le système de build est basé sur debuild et pbuilder. Le fonctionnement de cet ensemble est de générer un chroot qui va embarquer l’ensemble des dépendances et des outils de build Debian.
|
|
||||||
|
|
||||||
La configuration de cet environnement est définie dans le fichier `/etc/pbuilder/megusta-amd64` et permet de construire les paquets sans architecture spécifique.
|
|
||||||
|
|
||||||
<div class="alert alert-info">
|
|
||||||
**Attention :** il n’est pas conseillé d’être en root pour exécuter les actions suivantes (sauf celles précédées de `sudo`)
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Mise à jour d’un paquet
|
|
||||||
|
|
||||||
<br>
|
|
||||||
#### Paquets avec sources externes
|
|
||||||
Pour les paquets basés sur des sources GitHub (moulinette, moulinette-yunohost, ssowat, et yunohost-admin), il faut d’abord récupérer les dernières modifications :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette $ cd src
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette/src $ git pull
|
|
||||||
```
|
|
||||||
|
|
||||||
Puis lancer la commande de build du paquet (**attention : vous devez la lancer à la racine du répertoire du paquet**)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette/src $ cd ..
|
|
||||||
[yunohost@yunohost] ~/packages.git/moulinette $ commit-and-build "Message de commit"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Paquets de configuration
|
|
||||||
Pour mettre à jour un paquet yunohost-config-* il faut se rendre dans le répertoire, faire les modifications voulues sur le paquet (typiquement modifier un script `debian/postinst`), puis lancer la même commande que pour les paquets avec source :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/yunohost-config-nginx $ commit-and-build "Message de commit"
|
|
||||||
```
|
|
||||||
|
|
||||||
La commande de build va mettre à jour le fichier changelog Debian (`debian/changelog`) et lancer la création du paquet. Une fois le paquet créé il est automatiquement ajouté dans le dépôt `test`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Mettre à jour en production
|
|
||||||
Pour ajouter le paquet dans le dépôt de `megusta` (stable), il vous faudra exécuter la commande :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[yunohost@yunohost] ~/packages.git/monpaquet $ commit-and-build "Message de commit" production
|
|
||||||
```
|
|
||||||
|
|
||||||
Une fois les modifications effectuées, vous pouvez exécuter `git push` pour envoyer les modifications sur GitHub.
|
|
||||||
|
|
||||||
## Ajout manuel de paquets dans un dépôt
|
|
||||||
Il est possible d’ajouter directement des paquets Debian dans le dépôt, c’est le cas notamment pour les paquets nodejs.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb nom_du_dépôt nom_du_paquet.deb
|
|
||||||
```
|
|
||||||
|
|
||||||
`nom_du_dépôt` peut être `test` ou `megusta`.
|
|
||||||
|
|
||||||
## Supprimer un paquet d’un dépôt
|
|
||||||
|
|
||||||
Il est possible de supprimer des paquets Debian dans un dépôt, par exemple pour vider l’ensemble des paquets du dépôt test.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb nom_du_dépôt nom_du_paquet
|
|
||||||
```
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
Modifier le script commit-build pour récupérer les messages de commit git et générer le changelog Debian avec la commande `git-dch`.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
195
build_system.md
195
build_system.md
|
@ -1,195 +0,0 @@
|
||||||
#Debian package creation
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
The system contains `rebuildd`, a front-end for `pbuilder`, some chroot pbuilder for i386, amd64, armhf and `reprepro` for debian repository system.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
There is 3 repositories (`unstable`, `testing` & `stable`):
|
|
||||||
* Packages from `unstable` (aka `daily`) are the latest version from git and are build automatically every night.
|
|
||||||
|
|
||||||
* Packages from `testing` (aka `test`) allow to set up a new package version to be tested.
|
|
||||||
|
|
||||||
* Packages from `stable` (aka `megusta`) contains only production versions.
|
|
||||||
|
|
||||||
This workflow purpose is to avoid any manual interaction (script launch, ...) on your server and to focus on package management through Github only.
|
|
||||||
|
|
||||||
Thus, each yunohost package has three branches, matching the three repositories (`unstable`, `testing` et `stable`). The build server will **automatically** build and deploy Debian source packages and binaries into the corresponding state on Github
|
|
||||||
|
|
||||||
### Unstable branch
|
|
||||||
Commits to the unstable branch will not modify the `debian/changelog` file because it is automatically updated during daily builds with corresponding date and time.
|
|
||||||
|
|
||||||
Any commit that will alter a package behaviour need to be done to the `unstable` branch first.
|
|
||||||
|
|
||||||
**`TODO`** Add pre-commit hook to avoid errors ?
|
|
||||||
|
|
||||||
### Testing et stable branch - standard workflow
|
|
||||||
|
|
||||||
No commit can be done directly in those branches. You need to use merges (merge from `unstable` to `testing` & merge from `testing` to `stable`).
|
|
||||||
|
|
||||||
The only specific changes that occur on the repositories are version changes (modification of `debian/changelog`, then tag).
|
|
||||||
|
|
||||||
As a YunoHost application maintainer, you may find specific tools in the repository [yunohost-debhelper](https://github.com/YunoHost/yunohost-debhelper)
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/YunoHost/yunohost-debhelper
|
|
||||||
yunohost-debhelper/setup_git_alias.sh
|
|
||||||
```
|
|
||||||
The previous instructions will configure a new git alias named `yunobump`. It is global and located at `~/.gitconfig`, therefore accessible through any local git repository.
|
|
||||||
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
**Cauttion:** this helper `yunobump` only works for Ubuntu or Debian Jessie for the moment. You **need** to install `git` and `git-buildpackage` packages in order to make this helper work properly.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
#### Without helper
|
|
||||||
|
|
||||||
1. Go into the repository you wish to build
|
|
||||||
2. Make sure `unstable` branch contains all modifications you wish to apply
|
|
||||||
3. Get the current version number: `head debian/changelog`
|
|
||||||
4. Move to the `testing` or `stable` branch
|
|
||||||
5. Merge or cherry-pick commits you want to insert into the `unstable` branch
|
|
||||||
6. Add to `debian/changelog` the corresponding commits messages (or use `git-dch` to do it automatically)
|
|
||||||
7. Tag the current branch (`testing` or `stable`) with the next superior value for version number
|
|
||||||
8. Push modifications **and tags** into GitHub repository
|
|
||||||
9. Go back to `unstable` branch
|
|
||||||
10. Merge changelog
|
|
||||||
11. Push `unstable` branch
|
|
||||||
|
|
||||||
#### With helper
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# You Only Clone Once
|
|
||||||
$ git clone git@github.com:YunoHost/yunohost.git
|
|
||||||
$ cd yunohost
|
|
||||||
|
|
||||||
# Be sure to be up-to-date, and don't forget to get the tags !
|
|
||||||
$ git fetch --tags
|
|
||||||
|
|
||||||
# Checkout your branch: stable or testing
|
|
||||||
$ git checkout testing
|
|
||||||
|
|
||||||
# Do your 'functional' modifications: either merge unstable in testing, or merge testing in stable
|
|
||||||
$ git pull origin unstable
|
|
||||||
# Or just
|
|
||||||
$ git merge unstable
|
|
||||||
|
|
||||||
# What is the current version number in test?
|
|
||||||
$ dpkg-parsechangelog | grep "^Version" | cut -d ' ' -f 2
|
|
||||||
# Or just
|
|
||||||
$ head debian/changelog
|
|
||||||
|
|
||||||
# Update changelog and do a proper tag (explained below)
|
|
||||||
$ git yunobump x.y.z
|
|
||||||
|
|
||||||
# Push the branch state AND the tags to the remote repository
|
|
||||||
$ git push origin --tags testing:testing
|
|
||||||
|
|
||||||
# Merge changelog modifications to the `unstable` branch
|
|
||||||
$ git checkout unstable
|
|
||||||
$ git merge testing
|
|
||||||
$ git push origin unstable
|
|
||||||
```
|
|
||||||
|
|
||||||
**`TODO`** Tag format policy: actually $branch/$version to enable the same version into two different branches. Is it necessary?
|
|
||||||
|
|
||||||
**`TODO`** Under normal circumstances, every push to test or stable, the last commit will result in a changelog commit properly tagged. It should be possible to set a pre-push git hook that prevents from pushing unfinished work
|
|
||||||
|
|
||||||
#### Test and stable branches - hotfix
|
|
||||||
|
|
||||||
Exceptionally, you may hotfix (for security purposes for example) `stable` or `test` packages, leading to a merge into daily branch which is not acceptable (too much new features in development).
|
|
||||||
|
|
||||||
** This MUST remain exceptional **
|
|
||||||
|
|
||||||
**`TODO`** Describe
|
|
||||||
|
|
||||||
**`TODO`** Develop a 'git yunohotfix ...' helper that commit into stable and cherry-pick right away into daily? or the opposite?
|
|
||||||
|
|
||||||
#### Not YunoHost packages
|
|
||||||
|
|
||||||
« not-YunoHost » packages (`python-bottle` for example) don't go through `unstable` repository. Once package tests are completed, they need to be manually transferred into `backport` repository.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Version number
|
|
||||||
|
|
||||||
So far, YunoHost global base version is **2**. The current convention for the version number is **2.x.x**.
|
|
||||||
|
|
||||||
The second section of the number string is incremented if a major functional change has occured: addition of a new functionality, modification of a behaviour. For now, all packages are versionned **2.1.x**.
|
|
||||||
|
|
||||||
The third section of the number string is incremented if a bugfix or a minor functional change has occured. For example, you may currently find **2.1.3** or **2.1.5** packages
|
|
||||||
|
|
||||||
A fourth section is dedicated for exceptional cases like bugfixes in stable branch. In this case, we want to pass on a unique change directly into stable branch, therefore we add **-x** to the number string. This may result into something like this: **2.1.3-1**.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Packages management
|
|
||||||
|
|
||||||
#### Daily build
|
|
||||||
|
|
||||||
A cron task defined for `pbuilder` user is executed **every day at 01:00**. The script will update the `packages` git repository and submodules (`ssowat`, `moulinette`, `yunohost` & `yunohost-admin`).
|
|
||||||
Once sources are up to date, the script will rebuild packages that have been updated the day.
|
|
||||||
|
|
||||||
Sources packages will then need to be created and moved into `/var/www/repo.yunohost.org/daily/incomming` folder.
|
|
||||||
|
|
||||||
Launch source file addition to the repository. This will automatically launch a `rebuildd` job (see daily repository configuration: `/var/www/repo.yunohost.org/daily/conf/distribustion`).
|
|
||||||
|
|
||||||
Once packages are built, they are added to the `unstable` repository.
|
|
||||||
|
|
||||||
|
|
||||||
#### (Re)build a YunoHost package
|
|
||||||
|
|
||||||
You may manualy launch a package build by typing:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ daily_build -p package_name
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Build a not YunoHost package
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ build_deb /path/of/package
|
|
||||||
```
|
|
||||||
|
|
||||||
**`TODO`** Describe : need to bump the version to pass from test to stable
|
|
||||||
|
|
||||||
### Passing from `daily` to `test`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ push-packages-test -p package_name
|
|
||||||
```
|
|
||||||
You may add the `-v` argument to manually define the package version.
|
|
||||||
|
|
||||||
The script will get the `daily` sources package and define the version and changelist into the changelog. Build package will be added to the rebuildd jobs list that will pass everything to the `test` repository.
|
|
||||||
|
|
||||||
**Attention :** Version name must not contain `daily` otherwise the package will be added to the `daily` repository.
|
|
||||||
|
|
||||||
|
|
||||||
### Passing from `test` to `stable`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ push-package-stable -p package_name
|
|
||||||
```
|
|
||||||
|
|
||||||
The previous command only passes the package from `test` to `stable` repository, without rebuild.
|
|
||||||
|
|
||||||
|
|
||||||
### Repository management with `reprepro`
|
|
||||||
|
|
||||||
* Delete a package
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo.yunohost.org/repo_name/ remove megusta package_name
|
|
||||||
```
|
|
||||||
|
|
||||||
* Add a Debian package into a repository
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo.yunohost.org/repo_name/ includedeb megusta package_name.deb
|
|
||||||
```
|
|
||||||
|
|
||||||
### Backports management
|
|
||||||
Packages from backports repository can be quickly into Yunohost `test` repository.
|
|
||||||
To do so, you need to add the package name into the `/var/www/repo.yunohost.org/test/conf/list` file and type in the following command:
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo.yunohost.org/test update megusta
|
|
||||||
```
|
|
||||||
Now packages will be downloaded and added to `test` repository.
|
|
|
@ -1,258 +0,0 @@
|
||||||
# Système de construction des paquets
|
|
||||||
|
|
||||||
## Dépôts
|
|
||||||
|
|
||||||
Tout d’abord, aussi bien au niveau des dépôts que des paquets YunoHost, il faut savoir qu’il y a trois *composants* (`unstable`, `testing` et `stable`) :
|
|
||||||
|
|
||||||
* `unstable` correspondent à la dernière version du dépôt git sur la branche `unstable`, et sont reconstruits de façon automatisée toutes les nuits s’il y a eu une modification sur la cette branche.
|
|
||||||
|
|
||||||
* `testing` permet de mettre en place une nouvelle version d’un paquet qui sera ensuite testée.
|
|
||||||
|
|
||||||
* `stable` contient la version de production.
|
|
||||||
|
|
||||||
Le terme *composant* vient de la façon dont les dépôts sont configurés. Afin de se rapprocher de la façon dont les dépôts sont structurés dans Debian, l’entrée à ajouter dans les sources APT se construit ainsi :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
deb http://repo.yunohost.org/debian/ nom_de_code composant [composant...]
|
|
||||||
```
|
|
||||||
|
|
||||||
Avec *nom_de_code* la « version » de Debian installée sur l’hôte (ex. : `jessie`). Pour les composants, il est nécessaire de spécifier au moins `stable`, puis les différents intermédiaires. Par exemple, sur un système sous Debian Jessie, voici les différentes possibilités :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# composant stable
|
|
||||||
deb http://repo.yunohost.org/debian/ jessie stable
|
|
||||||
# composant testing
|
|
||||||
deb http://repo.yunohost.org/debian/ jessie stable testing
|
|
||||||
# composant unstable
|
|
||||||
deb http://repo.yunohost.org/debian/ jessie stable testing unstable
|
|
||||||
```
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
Le but du workflow est d’éviter toute intervention manuelle (lancement d’un script, etc.) sur le serveur, et de maîtriser la gestion des paquets via GitHub uniquement.
|
|
||||||
|
|
||||||
Ainsi, les dépôts de chaque paquet yunohost possèdent trois branches correspondant aux trois composants (`unstable`, `testing` et `stable`). Le serveur de build construit et déploie **automatiquement** les paquets sources et binaires Debian correspondant à l’état de ces trois branches sur GitHub.
|
|
||||||
|
|
||||||
### Branche unstable
|
|
||||||
|
|
||||||
Aucun commit dans la branche unstable ne modifie le fichier `debian/changelog` car celui-ci est modifié automatiquement lors du build quotidien, avec une version correspondant à la date/heure de construction.
|
|
||||||
|
|
||||||
Tout commit modifiant fonctionnellement les paquets doit se faire d’abord dans cette branche `unstable`.
|
|
||||||
|
|
||||||
**TODO** ajouter un pre-commit hook pour éviter les erreurs ?
|
|
||||||
|
|
||||||
### Branche testing et stable - workflow standard
|
|
||||||
|
|
||||||
Aucun commit fonctionnel n’est effectué directement dans ces branches. On ne fait que des merges (merge de `unstable` dans `testing` et merge de `testing` dans `stable`).
|
|
||||||
|
|
||||||
Les seules modifications spécifiques à ces dépôts sont les changements de versions (modification de `debian/changelog`, puis tag).
|
|
||||||
|
|
||||||
Des outils à destination des mainteneurs de paquets sont disponibles sur le dépôt [yunohost-debhelper](https://github.com/YunoHost/yunohost-debhelper)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/YunoHost/yunohost-debhelper
|
|
||||||
yunohost-debhelper/setup_git_alias.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Ceci va configurer un nouvel alias git nommé `yunobump`, global (stocké dans `~/.gitconfig` et donc accessible depuis n’importe quel dépôt git local).
|
|
||||||
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
**Attention :** pour le moment ce helper `yunobump` ne fonctionne que sous Ubuntu ou Debian Jessie. Vous **devez** installer les paquets `git` et `git-buildpackage` pour que le helper fonctionne correctement.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
#### Sans helper
|
|
||||||
|
|
||||||
1. Rendez-vous dans le repo du paquet que vous voulez builder
|
|
||||||
2. Assurez-vous que la branche `unstable` contient toutes les modifications que vous voulez intégrer dans votre build
|
|
||||||
3. Récupérez le numéro de version actuel : `head debian/changelog`
|
|
||||||
4. Rendez-vous sur la branche `testing` ou `stable`
|
|
||||||
5. Mergez ou cherry-pickez les commits que vous voulez intégrer à la version depuis la branche `unstable`
|
|
||||||
6. Modifiez le `debian/changelog` en intégrant les messages de commits correspondant aux modifications que vous avez intégrées (ou utilisez `git-dch` pour le faire automatiquement)
|
|
||||||
7. Taguez la branche actuelle (`testing` ou `stable`) du numéro de version juste supérieur à l’actuel
|
|
||||||
8. Pushez vos modifications **ainsi que vos tags** sur le repo GitHub
|
|
||||||
9. Retournez sur la branche `unstable`
|
|
||||||
10. Mergez le changelog mis à jour précédemment
|
|
||||||
11. Pushez la branche `unstable`
|
|
||||||
|
|
||||||
#### Avec helper
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# You Only Clone Once
|
|
||||||
$ git clone git@github.com:YunoHost/yunohost.git
|
|
||||||
$ cd yunohost
|
|
||||||
|
|
||||||
# Be sure to be up-to-date, and don't forget to get the tags !
|
|
||||||
$ git fetch --tags
|
|
||||||
|
|
||||||
# Checkout your branch : stable or testing
|
|
||||||
$ git checkout testing
|
|
||||||
|
|
||||||
# Do your 'functional' modifications: either merge unstable in testing, or merge testing in stable
|
|
||||||
$ git pull origin unstable
|
|
||||||
# Or just
|
|
||||||
$ git merge unstable
|
|
||||||
|
|
||||||
# What is the current version number in test ?
|
|
||||||
$ dpkg-parsechangelog | grep "^Version" | cut -d ' ' -f 2
|
|
||||||
# Or just
|
|
||||||
$ head debian/changelog
|
|
||||||
|
|
||||||
# Update changelog and do a proper tag (explained below)
|
|
||||||
$ git yunobump x.y.z
|
|
||||||
|
|
||||||
# Push the branch state AND the tags to the remote repository
|
|
||||||
$ git push origin --tags testing:testing
|
|
||||||
|
|
||||||
# Merge changelog modifications to the `unstable` branch
|
|
||||||
$ git checkout unstable
|
|
||||||
$ git merge testing
|
|
||||||
$ git push origin unstable
|
|
||||||
```
|
|
||||||
|
|
||||||
**TODO** politique sur les formats de tag, actuellement $branch/$version pour autoriser la même version dans deux branches différentes. Est-ce vraiment souhaitable ?
|
|
||||||
|
|
||||||
**TODO** normalement à chaque push sur test ou stable, le dernier commit est un commit de changelog et il est tagué proprement. On doit pouvoir implémenter un hook git de pre-push qui empêche de pousser des trucs à moitié faits (une erreur dans git yunobump, un git tag -d, un commit à la main...)
|
|
||||||
|
|
||||||
#### Branche test et stable - faire un hotfix
|
|
||||||
|
|
||||||
Il peut arriver, de façon exceptionnelle, qu’on ait besoin de faire un hotfix (de sécurité par exemple) sur les paquets en `stable` ou en `test`, pour lequel le merge de la branche daily n’est pas acceptable (car trop de nouvelles fonctionnalités en développement sur daily).
|
|
||||||
**Cette situation doit rester exceptionnelle**
|
|
||||||
|
|
||||||
Pour faire un hotfix, il faut donc travailler sur la branche `stable` directement. Une fois la correction effectuée et commitée, il faut immédiatement créer la release stable avec l'outil yunobump (Voir les sections XX et "Numéros de version").
|
|
||||||
|
|
||||||
Ensuite, il faut appliquer ce hotfix aux branches `testing` et `unstable`. Il est fortement conseillé de l'appliquer immédiatement après avoir créer la release stable.
|
|
||||||
Pour cela, passer sur la branche `testing` et merger la branche `stable`; Un "commit de merge" doit etre réalisé. L'historique de la branche `testing` doit donc ressembler à :
|
|
||||||
```bash
|
|
||||||
456def Merge branch 'stable' into testing
|
|
||||||
123abc Hotfix commit message.
|
|
||||||
```
|
|
||||||
Puis passer dans la branche `unstable` et merger la branche `testing`. Un nouveau commit de merge est réalisé, l'historique de la branche unstable ressemble donc à :
|
|
||||||
```bash
|
|
||||||
789ghi Merge branch 'testing' into unstable
|
|
||||||
456def Merge branch 'stable' into testing
|
|
||||||
123abc Hotfix commit message.
|
|
||||||
```
|
|
||||||
|
|
||||||
**TODO** dev un helper 'git yunohotfix...' qui commit dans stable et cherry-pick tout de suite dans daily ? ou l’inverse ?
|
|
||||||
|
|
||||||
#### Publier une release testing ou stable
|
|
||||||
|
|
||||||
Pour l'instant, on passe par une release via GitHub pour déclencher le build du paquet.
|
|
||||||
|
|
||||||
Aller sur https://github.com/YunoHost/{moulinette, yunohost, yunohost-admin, ssowat}/releases/new
|
|
||||||
|
|
||||||
1/ Choisir la branche cible en premier (testing ou stable).
|
|
||||||
Ex: "target: Testing"
|
|
||||||
|
|
||||||
2/ Choisir le tag concerné, généralement le dernier
|
|
||||||
Ex: "debian/2.4.1"
|
|
||||||
|
|
||||||
3/ Release title: "v2.4.1" ("v" + le numéro de version)
|
|
||||||
|
|
||||||
4/ Commentaire
|
|
||||||
Reprendre le changelog depuis `debian/changelog`. Remercier les contributeurs/traducteurs
|
|
||||||
( Pour voir le dernier commit : `git show HEAD` )
|
|
||||||
|
|
||||||
#### Paquets non YunoHost
|
|
||||||
|
|
||||||
Pour les paquets « non-YunoHost » (par exemple `rspamd`) le paquet ne passe pas par le composant `unstable`, mais uniquement `testing` et `stable` une fois les tests effectués sur ce paquet.
|
|
||||||
|
|
||||||
|
|
||||||
## Numéros de version
|
|
||||||
|
|
||||||
La version d’un paquet YunoHost est sous la forme : ``X.x.y[.z]``.
|
|
||||||
|
|
||||||
La première partie, ``X``, correspond à la version majeure de YunoHost, actuellement **2**.
|
|
||||||
|
|
||||||
La deuxième partie, ``x``, s’incrémente lors d’un changement fonctionnel important : ajout d’une nouvelle fonctionnalité, modification d’une façon de fonctionner... Les chiffres pairs correspondent à une version ``stable`` (ex. : **2.4.x**), tandis que les chiffres impairs à une version ``testing``.
|
|
||||||
|
|
||||||
La troisième partie, ``y``, s’incrémente quasi-arbitrairement, lors d’un lot de bugfixes ou d’un changement fonctionnel mineur. On peut trouver par exemple des paquets en **2.1.3** ou **2.1.5**.
|
|
||||||
|
|
||||||
Enfin, une quatrième partie, ``z``, est réservée dans les cas exceptionnels de bugfix. Dans ce cas, on veut faire passer un changement unique, généralement directement dans la branche ``stable`` (voir la partie s’y rapportant). Cela donne, par exemple, **2.1.3.1**.
|
|
||||||
|
|
||||||
Note : les paquets de YunoHost étant natif pour Debian (dans le sens où nous gérons directement le *packaging* Debian avec le paquet), il n’y a pas de révision Debian dans le numéro de version (caractérisé par **-debian_revision**). Pour plus de détails sur les numéros de version, voir le [Debian Policy Manual](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version).
|
|
||||||
|
|
||||||
|
|
||||||
## Gestion des paquets
|
|
||||||
|
|
||||||
### Outils et méthode
|
|
||||||
|
|
||||||
#### Logiciels et scripts utilisés
|
|
||||||
|
|
||||||
Les principaux logiciels utilisés pour la gestion et construction des paquets sont les suivants :
|
|
||||||
|
|
||||||
* [reprepro](https://mirrorer.alioth.debian.org/) : gérer localement un dépôt de paquets Debian
|
|
||||||
* [rebuildd](https://julien.danjou.info/projects/rebuildd) : reconstruire des paquets Debian, avec un historique, une interface Web,...
|
|
||||||
|
|
||||||
Pour plus de flexibilité, *rebuildd* délègue la construction du paquet à [pbuilder](https://pbuilder.alioth.debian.org/). Ce dernier permet notamment d’avoir différents environnements, architectures...
|
|
||||||
|
|
||||||
Enfin, pour gérer au mieux ces outils, deux scripts ont été développés, stockés dans `/usr/local/bin` :
|
|
||||||
|
|
||||||
* `daily_build` : construire un ou tous les paquets YunoHost dans le composant **unstable** uniquement
|
|
||||||
* `build_deb` : construire un paquet Debian depuis un répertoire, dans un composant et un nom de code donné
|
|
||||||
|
|
||||||
À noter également que d’autres scripts ont été faits pour *rebuildd* et *reprepro*, afin notamment de faire le pont entre les deux. Ils se trouvent dans `/usr/local/bin/{rebuildd,reprepro}`.
|
|
||||||
|
|
||||||
#### Déroulement de la construction d’un paquet
|
|
||||||
|
|
||||||
Tout est déclenché par *reprepro*, configuré (voir `/var/www/repo/debian/conf/distribution`) pour exécuter le script `/usr/local/bin/repo/process-include` chaque fois qu’un paquet est inclus dans un dépôt (plus précisément, qu’un fichier `.changes` est inclus, via la commande `reprepro include`). Ce dernier va vérifier un certain nombre de choses, dont le fait qu’il s’agit bien d’un paquet source, puis va ajouter une nouvelle tâche pour *rebuildd*, afin que le paquet soit créé.
|
|
||||||
|
|
||||||
Lorsque la tâche est reçue par *rebuildd*, si le paquet correspond bien à une distribution et architecture supportée (voir `/etc/rebuildd/rebuilddrc`), trois scripts seront exécutés les uns après les autres, si aucune erreur n’intervient :
|
|
||||||
|
|
||||||
1. `/usr/local/bin/rebuildd/get-sources` : récupération des sources depuis le dépôt local pour le paquet et la version demandée
|
|
||||||
2. `/usr/local/bin/rebuildd/build-binaries` : construction du paquet via *pbuilder* et l’environnement correspondant à la distribution et l’architecture
|
|
||||||
3. `/usr/local/bin/rebuildd/upload-binaries` : ajout du paquet binaire précédemment créé à *reprepro* dans le bon dépôt et composant
|
|
||||||
|
|
||||||
### Utilisation de daily\_build
|
|
||||||
|
|
||||||
Un cron défini pour l’utilisateur `pbuilder` se lance **tous les jours à 01:00**, qui exécute le script `daily_build`. Pour chaque paquet (`ssowat`, `moulinette`, `yunohost` et `yunohost-admin`), le script met d’abord à jour le dépôt git correspondant depuis la branche *unstable*. Si de nouveaux commits ont été faits depuis la veille, une nouvelle version du paquet sera construite.
|
|
||||||
|
|
||||||
Plus précisément, une nouvelle entrée dans le *changelog* sera d’abord ajoutée, avec une version sous la forme **YYYY.MM.DD+HHMM**. Un paquet source sera ensuite construit, avant de passer le relais au script `/usr/local/bin/repo/include-changes`. Ce dernier va exécuter les bonnes commandes pour *reprepro* afin d’inclure dans le bon dépôt et composant le paquet source fraîchement créé.
|
|
||||||
|
|
||||||
#### (Re)build d’un paquet YunoHost
|
|
||||||
|
|
||||||
Il est possible de relancer manuellement le build d’un paquet :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ daily_build -p <nom_du_paquet>
|
|
||||||
```
|
|
||||||
|
|
||||||
Il est aussi possible d’utiliser une branche autre que *unstable* :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ daily_build -p <nom_du_paquet> -b <branch>
|
|
||||||
```
|
|
||||||
|
|
||||||
*Notez bien que ce script permet uniquement de construire des paquets dans le composant **unstable** ! *
|
|
||||||
|
|
||||||
### Utilisation de build\_deb
|
|
||||||
|
|
||||||
Ce script permet de construire un paquet Debian quelconque, et de l’inclure dans un dépôt donné. Il est notamment utilisé pour construire les paquets `rspamd` et `rmilter`. Une fois le paquet source récupéré et extrait, il suffit de lancer la commande suivante :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ build_deb -c distribution -d <composant> /chemin/du/paquet/source
|
|
||||||
```
|
|
||||||
|
|
||||||
### Gestion du dépôt
|
|
||||||
|
|
||||||
#### Lister les paquets
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo/debian -C <composant> list <nom_de_code>
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Suppression d’un paquet
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo/debian -C <composant> remove <nom_de_code> nom_du_paquet
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Gestion des backports
|
|
||||||
|
|
||||||
Pour la gestion des paquets venant du dépôt backport, il est possible de les intégrer rapidement dans le dépôt de yunohost.
|
|
||||||
|
|
||||||
Pour ce faire il faut ajouter le nom du paquet dans le fichier `/var/www/repo/debian/conf/<nom_de_code>-<composant>.list`, puis exécuter la commande :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ reprepro -V -b /var/www/repo/debian -C <composant> update <nom_de_code>
|
|
||||||
```
|
|
|
@ -1,21 +1,38 @@
|
||||||
# Copy ISO image
|
# Flashing YunoHost ISO on a USB key or CD/DVD
|
||||||
|
|
||||||
Now that you have the ISO image of YunoHost, you have to put it on a physical medium: **USB key** or **CD/DVD**
|
Now that you have the ISO image of YunoHost, you have to put it on a physical medium: **USB key** or **CD/DVD**
|
||||||
|
|
||||||
<img src="/images/usb_key.png">
|
<img src="/images/usb_key.png" width=150>
|
||||||
<img src="/images/cd.jpg" width=200>
|
<img src="/images/cd.jpg" width=150>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## USB key
|
## USB key
|
||||||
|
|
||||||
Download <a href="http://unetbootin.sourceforge.net/" target="_blank">UnetBootin</a> for your operating system and install it.
|
### With Etcher
|
||||||
|
|
||||||
|
Download <a href="https://etcher.io/" target="_blank">Etcher</a> for your operating system and install it.
|
||||||
|
|
||||||
|
<img src="/images/etcher.gif">
|
||||||
|
|
||||||
|
Put your USB key on, select your YunoHost ISO and click "Flash"
|
||||||
|
|
||||||
|
### With UNetbootin
|
||||||
|
|
||||||
|
Download <a href="https://unetbootin.github.io/">UNetbootin</a> for your operating system and install it.
|
||||||
|
|
||||||
<img src="/images/unetbootin.png">
|
<img src="/images/unetbootin.png">
|
||||||
|
|
||||||
Put your USB key on, select your YunoHost ISO and click "OK"
|
Put your USB key on, select your YunoHost ISO and click "OK"
|
||||||
|
|
||||||
|
### With `dd`
|
||||||
|
|
||||||
|
If you know your way around command line, you may also flash your USB key with
|
||||||
|
`dd`. Assuming your USB key is `/dev/sdb` (be careful !!), you may run :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dd if=/path/to/yunohost.iso of=/dev/sdb
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -27,4 +44,4 @@ The software to use differs regarding your operating system.
|
||||||
|
|
||||||
* On Mac OS, use [Disk Utility](http://support.apple.com/kb/ph7025)
|
* On Mac OS, use [Disk Utility](http://support.apple.com/kb/ph7025)
|
||||||
|
|
||||||
* On GNU/Linux, you have plenty of choices, like [Brasero](https://wiki.gnome.org/Apps/Brasero) or [K3b](http://www.k3b.org/)
|
* On GNU/Linux, you have plenty of choices, like [Brasero](https://wiki.gnome.org/Apps/Brasero) or [K3b](http://www.k3b.org/)
|
||||||
|
|
|
@ -1,20 +1,39 @@
|
||||||
# Copier l’image ISO
|
# Flasher l'ISO YunoHost sur une clef USB ou un CD/DVD
|
||||||
|
|
||||||
Maintenant que vous avez l’image ISO de YunoHost, vous devez la mettre sur un support physique : **Clé USB** ou **CD/DVD**
|
Maintenant que vous avez téléchargé l’image ISO de YunoHost, vous devez la mettre sur un support physique : une **Clé USB** ou un **CD/DVD**.
|
||||||
|
|
||||||
<img src="/images/usb_key.png">
|
<img src="/images/usb_key.png" width=150>
|
||||||
<img src="/images/cd.jpg" width=200>
|
<img src="/images/cd.jpg" width=150>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Clé USB
|
## Clé USB
|
||||||
|
|
||||||
Téléchargez la version d’<a href="http://unetbootin.sourceforge.net/" target="_blank">UnetBootin</a> pour votre système d’exploitation et installez-la.
|
### Avec Etcher
|
||||||
|
|
||||||
|
Téléchargez <a href="https://etcher.io/" target="_blank">Etcher</a> pour votre système d'exploitation et installez-le.
|
||||||
|
|
||||||
|
<img src="/images/etcher.gif">
|
||||||
|
|
||||||
|
Branchez votre clef USB, selectionnez l'ISO YunoHost puis cliquez sur 'Flash'
|
||||||
|
|
||||||
|
### Avec UNetbootin
|
||||||
|
|
||||||
|
Téléchargez <a href="https://unetbootin.github.io/">UNetbootin</a> pour votre système d'exploitation et installez-le.
|
||||||
|
|
||||||
<img src="/images/unetbootin.png">
|
<img src="/images/unetbootin.png">
|
||||||
|
|
||||||
Insérez votre clé USB, sélectionnez l’image ISO YunoHost et cliquez sur **OK**.
|
Branchez votre clef USB, selectionnez l'ISO YunoHost puis cliquez sur 'OK'
|
||||||
|
|
||||||
|
### Avec `dd`
|
||||||
|
|
||||||
|
Si vous êtes familier avec la ligne de commande, il est possible de flasher la
|
||||||
|
clef USB avec `dd`. En supposant que votre clef USB soit `/dev/sdb` (faites
|
||||||
|
attention !!), vous pouvez exécuter :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dd if=/chemin/de/yunohost.iso of=/dev/sdb
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
165
certificate.md
165
certificate.md
|
@ -1,121 +1,92 @@
|
||||||
#Certificate
|
# Certificate
|
||||||
|
|
||||||
Certificates are used to certify that your server is the genuine one and not a falsified one.
|
Certificates are used to certify that your server is the genuine one, and not an attacker trying to impersonate it.
|
||||||
|
|
||||||
YunoHost provides a **self-signed** certificate, it means that your server guaranty the certificate validity. It's enough **for personal usage**, because you trust your own server. But this could be a problem if you want to open access to anonymous like web user for a website.
|
YunoHost provides a **self-signed** certificate, it means that your server guaranties the certificate validity. It's enough **for personal usage**, because you trust your own server. But this could be a problem if you want to open access to anonymous like web user for a website.
|
||||||
Concretely users will go throw a screen like this:
|
|
||||||
|
In practice, visitors will see a screen list this:
|
||||||
|
|
||||||
<img src="/images/postinstall_error.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<img src="/images/postinstall_error.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
||||||
|
|
||||||
This screen ask to the user : **"Do you trust this server that host this website?"**
|
Which basically asks the visitor : **"Do you trust the server hosting this website?"**. This can rightfully frighten a lot of people.
|
||||||
It could afraid a lot of users (rightly).
|
|
||||||
|
|
||||||
To avoid this confusion, it's possible to get a signed certificate by a "known" authority : **Gandi**, **RapidSSL**, **StartSSL**, **CaCert**.
|
To avoid this confusion, it's possible to get a certificate signed a known
|
||||||
In these cases, the point is to replace the self-signed certificate with the one that has been certified by a certificate authority, and the users won't have this warning screen anymore.
|
authority named **Let's Encrypt** which provide free certificates directly
|
||||||
|
recognized by browsers. YunoHost allows to directly install this certificate
|
||||||
|
from the web administration interface or from the command line.
|
||||||
|
|
||||||
### Add a signed certificate by an authority
|
### Install a Let's Encrypt certificate
|
||||||
|
|
||||||
Get your certificate from your CA, you must get a private key, file key and a public certificate (file .crt)
|
Before attempting to install a Let's Encrypt certificate, you should make sure
|
||||||
> Be carefull, the key file is very critical, it's strictly personal and have to be secured.
|
that your DNS is correctly configured (votre.domaine.tld should point to
|
||||||
|
your server's IP) and that your domain is accessible though HTTP from outside
|
||||||
|
your local network (i.e. at least port 80 should be forwarded to your server).
|
||||||
|
|
||||||
Copy this two files on the server, if not.
|
#### From the web administration interface
|
||||||
|
|
||||||
|
Go to the 'Domain' part of the admin interface, then in the section dedicated to
|
||||||
|
your.domain.tld. You should find a 'SSL certificate' button :
|
||||||
|
|
||||||
|
![](./images/domain-certificate-button.png)
|
||||||
|
|
||||||
|
In the 'SSL certificate' section, you can see the status of the current
|
||||||
|
certificate. If you just added the domain, it should be a self-signed
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
![](./images/certificate-before-LE.png)
|
||||||
|
|
||||||
|
If your domain is correctly configured, it is then possible to install the
|
||||||
|
Let's Encrypt certificate via the green button.
|
||||||
|
|
||||||
|
![](./images/certificate-after-LE.png)
|
||||||
|
|
||||||
|
Once the install is made, you can check that the certificate is live via your
|
||||||
|
browser by going to your domain in HTTPS. The certificate will automatically
|
||||||
|
be renewed every three months.
|
||||||
|
|
||||||
|
![](./images/certificate-signed-by-LE.png)
|
||||||
|
|
||||||
|
#### From the command line interface
|
||||||
|
|
||||||
|
Connect to your server through SSH.
|
||||||
|
|
||||||
|
You can check the status of your current certificate with :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
yunohost domain cert-status your.domain.tld
|
||||||
scp CLE.key admin@DOMAIN.TLD:ssl.key
|
|
||||||
```
|
```
|
||||||
|
|
||||||
From Windows, scp can be used with putty, download [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe)
|
Install a Let's Encrypt certificate with
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
yunohost domain cert-install your.domain.tld
|
||||||
pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key```
|
```
|
||||||
|
|
||||||
Now the files are in the server. Open a shell on the server use [ssh](https://yunohost.org/#/ssh_fr) or locally.
|
This should return :
|
||||||
|
|
||||||
First, create a directory for archive the certificates.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs
|
Success! The SSOwat configuration has been generated
|
||||||
sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/```
|
Success! Successfully installed Let's Encrypt certificate for domain DOMAIN.TLD!
|
||||||
|
```
|
||||||
|
|
||||||
Then go to the parent directory and go on.
|
Once this is done, you can check that the certificate is live via your
|
||||||
|
browser by going to your domain in HTTPS. The certificate will automatically
|
||||||
|
be renewed every three months.
|
||||||
|
|
||||||
|
##### Troubleshooting
|
||||||
|
|
||||||
|
If due to some bad tweaking, your certificate ends up in a bad state (e.g.
|
||||||
|
lost the certificate or unable to read the files), you should be able to clean
|
||||||
|
the situation by regenerating a self-signed certificate :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /etc/yunohost/certs/DOMAIN.TLD/```
|
yunohost domain cert-install your.domain.tld --self-signed --force
|
||||||
|
```
|
||||||
|
|
||||||
Make a backup of the YunoHost original certificates , to be safe!
|
If YunoHost thinks that your domain is badly configured despite the fact that
|
||||||
|
you checked the DNS configuration and you have access in HTTP to your server
|
||||||
|
from outside your local network, then you can :
|
||||||
|
|
||||||
```bash
|
- add a line `127.0.0.1 your.domain.tld` to the file `/etc/hosts` on your server ;
|
||||||
sudo mkdir yunohost_self_signed
|
- if the certificate installation still doesn't work, you can disable the checks with `--no-checks` after the `cert-install` command.
|
||||||
sudo mv *.pem *.cnf yunohost_self_signed/```
|
|
||||||
|
|
||||||
Depends on the CA, intermediate certificates and root have to be downloaded.
|
|
||||||
|
|
||||||
> **StartSSL**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem
|
|
||||||
> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **Gandi**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA.pem -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **RapidSSL**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **Cacert**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem
|
|
||||||
> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
Intermediate certificates and root must be merged with certificates obtained to create a unified chain certificates.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem```
|
|
||||||
|
|
||||||
|
|
||||||
The private key have to be converted in PEM format.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM```
|
|
||||||
|
|
||||||
Check certificates syntaxe, check file contents.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat crt.pem key.pem```
|
|
||||||
|
|
||||||
Certificates and private key look like this :
|
|
||||||
|
|
||||||
`-----BEGIN CERTIFICATE-----`
|
|
||||||
`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV`
|
|
||||||
`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC`
|
|
||||||
`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy`
|
|
||||||
`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx`
|
|
||||||
`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE`
|
|
||||||
`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv`
|
|
||||||
`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12`
|
|
||||||
`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj`
|
|
||||||
`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW`
|
|
||||||
`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf`
|
|
||||||
`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3`
|
|
||||||
`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP`
|
|
||||||
`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5`
|
|
||||||
`-----END CERTIFICATE-----`
|
|
||||||
|
|
||||||
At last, secure files of your certificate
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo chown root:metronome crt.pem key.pem
|
|
||||||
sudo chmod 640 crt.pem key.pem
|
|
||||||
sudo chown root:root -R ae_certs
|
|
||||||
sudo chmod 600 -R ae_certs```
|
|
||||||
|
|
||||||
Reload Nginx configuration to take into account the new certificate.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo service nginx reload```
|
|
||||||
|
|
||||||
Your certificate is ready to serve. You can check that every thing is correct byan external service like <a href="https://www.geocerts.com/ssl_checker" target="_blank">geocerts</a>
|
|
||||||
|
|
||||||
|
|
117
certificate_custom_fr.md
Normal file
117
certificate_custom_fr.md
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
**Note :** depuis la version 2.5, Yunohost intègre la gestion automatisée de certificats Let's Encrypt. Vous pouvez donc facilement et gratuitement [installer un certificat Let's Encrypt](certificate_fr). Le document suivant décrit la méthodologie pour installer un certificat, payant, d'une autre autorité de certification (**Gandi**, **RapidSSL**, **StartSSL**, **Cacert**).
|
||||||
|
|
||||||
|
### Ajout d’un certificat signé par une autorité (autre que Let's Encrypt)
|
||||||
|
|
||||||
|
Après création du certificat auprès de votre autorité d’enregistrement, vous devez être en possession d’une clé privée, le fichier key et d’un certificat public, le fichier crt.
|
||||||
|
> Attention, le fichier key est très sensible, il est strictement personnel et doit être très bien sécurisé.
|
||||||
|
|
||||||
|
Ces deux fichiers doivent être copiés sur le serveur, s’ils ne s’y trouvent pas déjà.
|
||||||
|
```bash
|
||||||
|
scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
||||||
|
scp CLE.key admin@DOMAIN.TLD:ssl.key
|
||||||
|
```
|
||||||
|
|
||||||
|
Depuis Windows, scp est exploitable avec putty, en téléchargeant l’outil [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
||||||
|
pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key
|
||||||
|
```
|
||||||
|
|
||||||
|
Dès lors que les fichiers sont sur le serveur, le reste du travail se fera sur celui-ci. En [ssh](https://yunohost.org/#/ssh_fr) ou en local.
|
||||||
|
|
||||||
|
Tout d’abord, créez un dossier pour stocker les certificats obtenus.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs
|
||||||
|
sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis allez dans le dossier parent pour poursuivre.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /etc/yunohost/certs/DOMAIN.TLD/
|
||||||
|
```
|
||||||
|
|
||||||
|
Faites une sauvegarde des certificats d’origine de yunohost, par précaution.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir yunohost_self_signed
|
||||||
|
sudo mv *.pem *.cnf yunohost_self_signed/
|
||||||
|
```
|
||||||
|
|
||||||
|
En fonction de l’autorité d’enregistrement, des certificats intermédiaires et racines doivent être obtenus.
|
||||||
|
|
||||||
|
> **StartSSL**
|
||||||
|
> ```bash
|
||||||
|
> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem
|
||||||
|
> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem
|
||||||
|
>```
|
||||||
|
|
||||||
|
> **Gandi**
|
||||||
|
> ```bash
|
||||||
|
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem
|
||||||
|
>```
|
||||||
|
|
||||||
|
> **RapidSSL**
|
||||||
|
> ```bash
|
||||||
|
> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem
|
||||||
|
>```
|
||||||
|
|
||||||
|
> **Cacert**
|
||||||
|
> ```bash
|
||||||
|
> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem
|
||||||
|
> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem
|
||||||
|
>```
|
||||||
|
|
||||||
|
Les certificats intermédiaires et root doivent être réunis avec le certificat obtenu pour créer une chaîne de certificats unifiés.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
La clé privée doit être, elle, convertie au format pem.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM
|
||||||
|
```
|
||||||
|
|
||||||
|
Afin de s’assurer de la syntaxe des certificats, vérifiez le contenu des fichiers.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat crt.pem key.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
Les certificats et la clé privée doivent ressembler à cela :
|
||||||
|
|
||||||
|
`-----BEGIN CERTIFICATE-----`<br/>
|
||||||
|
`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV`<br/>
|
||||||
|
`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC`<br/>
|
||||||
|
`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy`<br/>
|
||||||
|
`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx`<br/>
|
||||||
|
`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE`<br/>
|
||||||
|
`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv`<br/>
|
||||||
|
`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12`<br/>
|
||||||
|
`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj`<br/>
|
||||||
|
`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW`<br/>
|
||||||
|
`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf`<br/>
|
||||||
|
`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3`<br/>
|
||||||
|
`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP`<br/>
|
||||||
|
`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5`<br/>
|
||||||
|
`-----END CERTIFICATE-----`
|
||||||
|
|
||||||
|
Enfin, sécurisez les fichiers de votre certificat.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo chown root:metronome crt.pem key.pem
|
||||||
|
sudo chmod 640 crt.pem key.pem
|
||||||
|
sudo chown root:root -R ae_certs
|
||||||
|
sudo chmod 600 -R ae_certs
|
||||||
|
```
|
||||||
|
|
||||||
|
Rechargez la configuration de nginx pour prendre en compte le nouveau certificat.
|
||||||
|
```bash
|
||||||
|
sudo service nginx reload
|
||||||
|
```
|
||||||
|
|
||||||
|
Votre certificat est prêt à servir. Vous pouvez toutefois vous assurez de sa mise en place en testant le certificat à l’aide du service de <a href="https://www.geocerts.com/ssl_checker" target="_blank">geocerts</a>.
|
|
@ -2,121 +2,93 @@
|
||||||
|
|
||||||
Un certificat est utilisé pour garantir la confidentialité des échanges entre votre serveur et votre client.
|
Un certificat est utilisé pour garantir la confidentialité des échanges entre votre serveur et votre client.
|
||||||
|
|
||||||
YunoHost fournit par défaut un certificat **auto-signé**, ce qui veut dire que c’est votre serveur qui garantit la validité du certificat. C’est suffisant **pour un usage personnel**, car vous pouvez avoir confiance en votre serveur, en revanche cela posera problème si vous comptez ouvrir l’accès à votre serveur à des anonymes, par exemple pour héberger un site web.
|
YunoHost fournit par défaut un certificat **auto-signé**, ce qui veut dire que c’est votre serveur qui garantit la validité du certificat. C’est suffisant **pour un usage personnel**, car vous pouvez avoir confiance en votre serveur, en revanche cela posera problème si vous comptez ouvrir l’accès à votre serveur à des anonymes, par exemple pour héberger un site web.
|
||||||
En effet, les utilisateurs devront passer par un écran de ce type :
|
En effet, les utilisateurs devront passer par un écran de ce type :
|
||||||
|
|
||||||
<img src="/images/postinstall_error.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<img src="/images/postinstall_error.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
||||||
|
|
||||||
Cet écran revient à demander **« Avez-vous confiance au serveur qui héberge ce site ? »**.
|
Cet écran revient à demander **« Avez-vous confiance au serveur qui héberge ce site ? »**.
|
||||||
Cela peut effrayer vos utilisateurs (à juste titre).
|
Cela peut effrayer vos utilisateurs (à juste titre).
|
||||||
|
|
||||||
Pour éviter cette confusion, il est possible d’obtenir un certificat signé par une autorité « connue » : **Gandi**, **RapidSSL**, **StartSSL**, **Cacert**.
|
Pour éviter cette confusion, il est possible d’obtenir un certificat, reconnu directement par les navigateurs, signé par une autorité « connue » : **Let's Encrypt**, **Gandi**, **RapidSSL**, **StartSSL**, **Cacert**.
|
||||||
Dans ce cas, il s’agira de remplacer le certificat auto-signé par celui qui a été reconnu par une autorité de certification, et vos utilisateurs n’auront plus à passer par cet écran d’avertissement.
|
|
||||||
|
|
||||||
### Ajout d’un certificat signé par une autorité
|
**Let's Encrypt** propose des certificats gratuits. Depuis la version 2.5, YunoHost permet d'installer directement un tel certificat depuis l'interface d'administration ou la ligne de commande. La suite du document détaille l'installation et la gestion d'un tel certificat. Vous pouvez également [installer un certificat d'une autre autorité que Let's Encrypt](/certificate_custom_fr).
|
||||||
|
|
||||||
Après création du certificat auprès de votre autorité d’enregistrement, vous devez être en possession d’une clé privée, le fichier key et d’un certificat public, le fichier crt.
|
### Installer un certificat Let's Encrypt
|
||||||
> Attention, le fichier key est très sensible, il est strictement personnel et doit être très bien sécurisé.
|
|
||||||
|
|
||||||
Ces deux fichiers doivent être copiés sur le serveur, s’ils ne s’y trouvent pas déjà.
|
Avant de chercher à installer un certificat Let's Encrypt, assurez vous que
|
||||||
|
votre DNS est correctement configuré (votre.domaine.tld doit pointer sur l'IP
|
||||||
|
de votre serveur) et que votre site est accessible en HTTP depuis l'extérieur
|
||||||
|
(i.e. qu'au moins le port 80 est correctement redirigé vers votre serveur).
|
||||||
|
|
||||||
|
#### Via l'interface d'administration web
|
||||||
|
|
||||||
|
Rendez-vous dans la partie 'Domaine' de l'interface d'administration, puis dans
|
||||||
|
la section dédiée à votre domaine. Vous trouverez un bouton 'Certificat SSL'.
|
||||||
|
|
||||||
|
![](./images/domain-certificate-button-fr.png)
|
||||||
|
|
||||||
|
Dans la section 'Certificat SSL', vous pourrez voir l'état actuel du certificat.
|
||||||
|
Si vous venez d'ajouter le domaine, il dispose d'un certificat auto-signé.
|
||||||
|
|
||||||
|
![](./images/certificate-before-LE-fr.png)
|
||||||
|
|
||||||
|
Si votre domaine est correctement configuré, il vous est alors possible de
|
||||||
|
passer à un certificat Let's Encrypt via le bouton vert.
|
||||||
|
|
||||||
|
![](./images/certificate-after-LE-fr.png)
|
||||||
|
|
||||||
|
Une fois l'installation effectuée, vous pouvez vous rendre sur votre domaine
|
||||||
|
via votre navigateur, en HTTPS, pour vérifier que votre certificat est bien
|
||||||
|
signé par Let's Encrypt. Le certificat sera renouvelé automatiquement tous les
|
||||||
|
trois mois environ.
|
||||||
|
|
||||||
|
![](./images/certificate-signed-by-LE.png)
|
||||||
|
|
||||||
|
#### Via la ligne de commande
|
||||||
|
|
||||||
|
Connectez-vous sur votre serveur en SSH.
|
||||||
|
|
||||||
|
Vous pouvez vérifier le statut actuel de votre certificat via
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
yunohost domain cert-status votre.domaine.tld
|
||||||
scp CLE.key admin@DOMAIN.TLD:ssl.key
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Depuis Windows, scp est exploitable avec putty, en téléchargeant l’outil [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe)
|
Installez le certificat Let's Encrypt via
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
|
yunohost domain cert-install votre.domaine.tld
|
||||||
pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key```
|
```
|
||||||
|
|
||||||
Dès lors que les fichiers sont sur le serveur, le reste du travail se fera sur celui-ci. En [ssh](https://yunohost.org/#/ssh_fr) ou en local.
|
Cette commande doit retourner :
|
||||||
|
|
||||||
Tout d’abord, créez un dossier pour stocker les certificats obtenus.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs
|
Success! The SSOwat configuration has been generated
|
||||||
sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/```
|
Success! Successfully installed Let's Encrypt certificate for domain DOMAIN.TLD!
|
||||||
|
```
|
||||||
|
|
||||||
Puis allez dans le dossier parent pour poursuivre.
|
Une fois l'installation effectuée, vous pouvez vous rendre sur votre domaine
|
||||||
|
via votre navigateur, en HTTPS, pour vérifier que votre certificat est bien
|
||||||
|
signé par Let's Encrypt. Le certificat sera renouvelé automatiquement tous les
|
||||||
|
trois mois environ.
|
||||||
|
|
||||||
|
##### En cas de problème
|
||||||
|
|
||||||
|
Si suite à une mauvaise manipulation, un certificat se retrouve dans une
|
||||||
|
situation fâcheuse (e.g. perte du certificat ou impossible de lire le
|
||||||
|
certificat), il est possible de repartir sur des bases propres en regénérant un
|
||||||
|
certificat auto-signé :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /etc/yunohost/certs/DOMAIN.TLD/```
|
yunohost domain cert-install votre.domaine.tld --self-signed --force
|
||||||
|
```
|
||||||
|
|
||||||
Faites une sauvegarde des certificats d’origine de yunohost, par précaution.
|
Si YunoHost trouve que votre domaine est mal configuré quand bien même vous
|
||||||
|
avez bien vérifié votre configuration DNS et avez bien accès à votre serveur en
|
||||||
|
HTTP depuis l'extérieur, vous pouvez tenter :
|
||||||
|
|
||||||
```bash
|
- d'ajouter une ligne `127.0.0.1 votre.domaine.tld` au fichier `/etc/hosts` sur votre serveur ;
|
||||||
sudo mkdir yunohost_self_signed
|
- si l'installation ne fonctionne toujours pas, désactiver les vérifications en ajoutant `--no-checks` à la commande `cert-install`.
|
||||||
sudo mv *.pem *.cnf yunohost_self_signed/```
|
|
||||||
|
|
||||||
En fonction de l’autorité d’enregistrement, des certificats intermédiaires et racines doivent être obtenus.
|
|
||||||
|
|
||||||
> **StartSSL**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem
|
|
||||||
> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **Gandi**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA.pem -O ae_certs/intermediate_ca.pem```
|
|
||||||
> Attention si votre certificat expire après le 01/01/2017, choisissez le certificat intermédiaire SHA2 suivant (à la place du certificat SHA1 précédent)
|
|
||||||
> ```bash
|
|
||||||
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **RapidSSL**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
> **Cacert**
|
|
||||||
> ```bash
|
|
||||||
> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem
|
|
||||||
> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem```
|
|
||||||
|
|
||||||
Les certificats intermédiaires et root doivent être réunis avec le certificat obtenu pour créer une chaîne de certificats unifiés.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem```
|
|
||||||
|
|
||||||
La clé privée doit être, elle, convertie au format pem.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM```
|
|
||||||
|
|
||||||
Afin de s’assurer de la syntaxe des certificats, vérifiez le contenu des fichiers.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat crt.pem key.pem```
|
|
||||||
|
|
||||||
Les certificats et la clé privée doivent ressembler à cela :
|
|
||||||
|
|
||||||
`-----BEGIN CERTIFICATE-----`
|
|
||||||
`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV`
|
|
||||||
`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC`
|
|
||||||
`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy`
|
|
||||||
`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx`
|
|
||||||
`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE`
|
|
||||||
`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv`
|
|
||||||
`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12`
|
|
||||||
`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj`
|
|
||||||
`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW`
|
|
||||||
`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf`
|
|
||||||
`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3`
|
|
||||||
`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP`
|
|
||||||
`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5`
|
|
||||||
`-----END CERTIFICATE-----`
|
|
||||||
|
|
||||||
Enfin, sécurisez les fichiers de votre certificat.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo chown root:metronome crt.pem key.pem
|
|
||||||
sudo chmod 640 crt.pem key.pem
|
|
||||||
sudo chown root:root -R ae_certs
|
|
||||||
sudo chmod 600 -R ae_certs```
|
|
||||||
|
|
||||||
Rechargez la configuration de nginx pour prendre en compte le nouveau certificat.
|
|
||||||
```bash
|
|
||||||
sudo service nginx reload```
|
|
||||||
|
|
||||||
|
|
||||||
Votre certificat est prêt à servir. Vous pouvez toutefois vous assurez de sa mise en place en testant le certificat à l’aide du service de <a href="https://www.geocerts.com/ssl_checker" target="_blank">geocerts</a>.
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ command line with `yunohost domain cert-status`, `cert-install` and
|
||||||
|
|
||||||
Your server needs to be reachable from the rest of Internet on port 80 (and
|
Your server needs to be reachable from the rest of Internet on port 80 (and
|
||||||
443), and make your `domain.tld` points to your server's public IP in your DNS
|
443), and make your `domain.tld` points to your server's public IP in your DNS
|
||||||
configuration. See [this documentation](hdiagnostic) if you need help.
|
configuration. See [this documentation](diagnostic_en) if you need help.
|
||||||
|
|
||||||
#### Will my certificate be automatically be renewed ?
|
#### Will my certificate be automatically be renewed ?
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@ deux choses :
|
||||||
- la confidentialité, ce qui veut dire qu'un attaquant ne sera pas capable de déchiffrer le contenu d'une communication si elle est interceptée ;
|
- la confidentialité, ce qui veut dire qu'un attaquant ne sera pas capable de déchiffrer le contenu d'une communication si elle est interceptée ;
|
||||||
- l'identification du serveur, ce qui veut dire qu'un serveur peut et doit prouver qui il prétend être, dans le but d'éviter les [attaques man-in-the-middle](https://en.wikipedia.org/wiki/Man-in-the-middle_attack).
|
- l'identification du serveur, ce qui veut dire qu'un serveur peut et doit prouver qui il prétend être, dans le but d'éviter les [attaques man-in-the-middle](https://en.wikipedia.org/wiki/Man-in-the-middle_attack).
|
||||||
|
|
||||||
Les certificats SSL sont utilisés par les serveurs pour prouver leur identitié.
|
Les certificats SSL sont utilisés par les serveurs pour prouver leur identité.
|
||||||
Le processus général repose sur la confiance en des tiers, appelés Autorité
|
Le processus général repose sur la confiance en des tiers, appelés Autorité
|
||||||
de Certification (CA), dont le rôle est de vérifier l'identité d'un serveur (par ex.
|
de Certification (CA), dont le rôle est de vérifier l'identité d'un serveur (par ex.
|
||||||
qu'une machine donnée contrôle bien le domaine `jaimelecafe.com`) avant
|
qu'une machine donnée contrôle bien le domaine `jaimelecafe.com`) avant
|
||||||
|
|
|
@ -18,3 +18,9 @@ Puis allez dans la section `Outils` > `Changer le mot de passe d’administratio
|
||||||
```bash
|
```bash
|
||||||
yunohost tools adminpw
|
yunohost tools adminpw
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Si vous avez oublié votre mot de passe, utilisez plutôt:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yunohost-reset-ldap-password
|
||||||
|
```
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
# Changelog 2.0
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/changelog_2_0_en">2.0</a> <a class="btn btn-lg btn-default" href="/changelog_2_2_en">2.2</a> <a class="btn btn-lg btn-default" href="/roadmap_en">Roadmap</a>
|
|
||||||
|
|
||||||
## v2.0 <small><small>12 june 2014</small></small>
|
|
||||||
* ✔ Add sexiness and a menu to YunoHost.org frontpage *(kload)*
|
|
||||||
* ✔ **DOCUMENTATIONNNNNNN** *(everyone <3)*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v2.0 RC
|
|
||||||
|
|
||||||
* ✔ Email forward configuration *(kload, beudbeud)*
|
|
||||||
* ✔ Make pending official apps *(Ju)*
|
|
||||||
* ✔ SFTP *(kload)*
|
|
||||||
* ✔ Fix DNS zone *(kload)*
|
|
||||||
* ✔ SSOwat stuffs (presistent rules, public root website) *(ezpen)*
|
|
||||||
* ✔ Email configuration tests *(beudbeud)*
|
|
||||||
* ✔ Test and upgrade official apps like Owncloud, Roundcube and Radicale *(app maintainers)*
|
|
||||||
* ✔ Upgrade function + view *(beudbeud, opi)*
|
|
||||||
* ✔ uPnP rework *(kload, titoko)*
|
|
||||||
* ✔ Add warning in a sample backup view *(opi)*
|
|
||||||
* ✔ User interface design *(Courgette, opi)*
|
|
||||||
* ✔ Moulinette/API refactoring *(jerome)*
|
|
||||||
* ✔ Security check and complete patterns
|
|
||||||
* ✔ Internationalization I18n *(opi, jerome)*
|
|
||||||
* ✔ Lack of hairpinning hack *(kload)*
|
|
|
@ -1,38 +0,0 @@
|
||||||
# Changelog 2.2
|
|
||||||
|
|
||||||
<a class="btn btn-lg btn-default" href="/changelog_2_0_en">2.0</a> <a class="btn btn-lg btn-default" href="/changelog_2_2_en">2.2</a> <a class="btn btn-lg btn-default" href="/roadmap_en">Roadmap</a>
|
|
||||||
|
|
||||||
## v2.2 <small><small>12 may 2015</small></small>
|
|
||||||
Core:
|
|
||||||
* ✔ Migrate YunoHost to Debian Jessie
|
|
||||||
* ✔ Update Metronome to v3.6 and make a more Debian-friendly package *(jerome)*
|
|
||||||
* ✔ Update of Nginx, Postfix and Dovecot regarding the late Poodle attack
|
|
||||||
* ✔ Migrate Bind9 to Dnsmasq *(kload)*
|
|
||||||
* ✔ Add email quota *(beudbeud, jerome)*
|
|
||||||
* ✔ Implement a simple backup and restore system *(jerome, kload)*
|
|
||||||
* ✔ Add logging to the moulinette for each action *(jerome)*
|
|
||||||
* ✔ Review the app manifest format and integrate it *(app maintainers, jerome, opi)*
|
|
||||||
* ✔ Fix a security bug in SSOwat *(kload)*
|
|
||||||
|
|
||||||
Web administration:
|
|
||||||
* ✔ Install unofficial apps *(opi)*
|
|
||||||
* ✔ Add firewall *(opi)*
|
|
||||||
* ✔ Warn admin about security updates *(opi)*
|
|
||||||
* ✔ Fix websocket issue for Raspberry Pi *(jerome, kload)*
|
|
||||||
|
|
||||||
Apps:
|
|
||||||
* ✔ 21 official apps and 88 unofficial apps *(app maintainers)*
|
|
||||||
* ✔ Migrate to Baikal and deprecate Radicale *(ju)*
|
|
||||||
* ✔ Add Shell in a box and remove GateOne from official apps *(kload)*
|
|
||||||
* ✔ OpenVPN configuration page and access control *(kload)*
|
|
||||||
* ✔ Add a download files button on Transmission interface *(opi)*
|
|
||||||
|
|
||||||
Installs:
|
|
||||||
* ✔ Create an image for La Brique Internet on Olimex *(kload)*
|
|
||||||
* ✔ Create an image for Raspberry Pi 1 and 2 *(matlink)*
|
|
||||||
* ✔ Create an image for Cubieboard 2 *(Moul)*
|
|
||||||
* ✔ Update Docker image *(kload)*
|
|
||||||
|
|
||||||
Others:
|
|
||||||
* ✔ Install and switch to a new build system on a new server *(beudbeud)*
|
|
||||||
* ✔ Improve documentation, to make YunoHost more accessible *(Moul)*
|
|
|
@ -2,23 +2,33 @@
|
||||||
|
|
||||||
Amoung other communication tools, YunoHost project use chat rooms to communicate.
|
Amoung other communication tools, YunoHost project use chat rooms to communicate.
|
||||||
|
|
||||||
This instant messaging chat rooms, which uses [XMPP protocol](XMPP_en), are hosted on our XMPP server.
|
You could join those chat rooms using :
|
||||||
|
- an [IRC Client](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) for example [kiwiirc](https://kiwiirc.com/client/irc.freenode.net/yunohost)
|
||||||
|
- an [XMPP client](https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients)
|
||||||
|
- a [Matrix client](https://matrix.org/docs/guides/faq.html#what-clients-are-available%3F)
|
||||||
|
|
||||||
You could join this chat rooms with an [XMPP client](https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients#XMPP-related_features).
|
|
||||||
|
|
||||||
### Chat rooms
|
#### Help and support chatroom
|
||||||
#### Mutual aid
|
|
||||||
[Mutual aid](support_en) chat room is here to allow YunoHost's users to help each other.
|
|
||||||
|
|
||||||
- A [web client](https://chat.yunohost.org) is here to easily join _mutual aid_ chat room.
|
There is a [support](support_fr) chatroom for YunoHost users mutual support and help.
|
||||||
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
|
|
||||||
|
|
||||||
#### Development
|
- IRC: **#yunohost** on irc.freenode.net ;
|
||||||
YunoHost core development chat room. Currently, the main chat room for contributions on YunoHost project.
|
- Matrix: **#freenode_#yunohost:matrix.org** ;
|
||||||
For help, thanks to do it on `support` chat room.
|
- XMPP: **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
|
||||||
- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
|
|
||||||
|
|
||||||
#### Applications
|
#### Development chatroom
|
||||||
|
|
||||||
|
YunoHost core development chat room :
|
||||||
|
- IRC: **#yunohost-dev** on irc.freenode.net ;
|
||||||
|
- Matrix: **#freenode_#yunohost-dev:matrix.org** ;
|
||||||
|
- XMPP: **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
|
||||||
|
|
||||||
|
Currently, the main chat room for contributions on YunoHost project.
|
||||||
|
For help, please see **#yunohost** chat room above.
|
||||||
|
|
||||||
|
#### Applications chatroom
|
||||||
Application packaging development chat room. It allow packagers to help each other.
|
Application packaging development chat room. It allow packagers to help each other.
|
||||||
It also allow to discuss packaging evolution, continuous integration tools.
|
It also allow to discuss packaging evolution, continuous integration tools :
|
||||||
- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**
|
- IRC: **#yunohost-apps** on irc.freenode.net
|
||||||
|
- Matrix: **#freenode_#yunohost-apps:matrix.org**
|
||||||
|
- XMPP: **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**
|
||||||
|
|
|
@ -1,24 +1,31 @@
|
||||||
## Salons de discussions
|
## Salons de discussions
|
||||||
|
|
||||||
Parmi d’autres outils de communications, le projet YunoHost se sert de salons de discussions pour communiquer.
|
Parmi d’autres outils, le projet YunoHost se sert de salons de discussions pour communiquer.
|
||||||
|
|
||||||
Ces salons de messagerie instantanées, qui utilisent le [protocole XMPP](XMPP_fr), sont hébergés sur notre serveur XMPP.
|
Vous pouvez rejoindre ces salons avec:
|
||||||
|
- un [Client IRC](https://fr.wikipedia.org/wiki/Liste_de_clients_IRC)
|
||||||
|
- un [Client XMPP](https://fr.wikipedia.org/wiki/Clients_XMPP)
|
||||||
|
- un [Client Matrix](https://linuxfr.org/news/matrix-pour-decentraliser-skype-whatsapp-signal-slack-et-discord)
|
||||||
|
|
||||||
Vous pouvez rejoindre ces salons avec un [client XMPP](https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP).
|
|
||||||
|
|
||||||
### Salons
|
#### Salon d'entraide et de support
|
||||||
#### Entraide
|
Le salon d’[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de s'aider mutuellement.
|
||||||
Salon d’[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de s’entraider.
|
- IRC : **#yunohost** sur irc.freenode.net (voir kiwiirc ci-dessus)
|
||||||
|
- Matrix : **#freenode_#yunohost:matrix.org**
|
||||||
- Un [client web](https://chat.yunohost.org) est à votre disposition pour rejoindre facilement le salon d’entraide.
|
- XMPP : **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
|
||||||
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
|
|
||||||
|
|
||||||
#### Développement
|
#### Développement
|
||||||
Salon de développement du cœur de YunoHost. Actuellement utilisé comme salon principal pour les contributions autour du projet.
|
Salon de développement du cœur de YunoHost:
|
||||||
Pour de l’aide, merci de le faire sur le salon d’entraide.
|
- IRC : **#yunohost-dev** sur irc.freenode.net
|
||||||
- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
|
- Matrix : **#freenode_#yunohost-dev:matrix.org**
|
||||||
|
- XMP : **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
|
||||||
|
|
||||||
|
C'est le salon principal pour les contributions autour du projet.
|
||||||
|
Pour chercher de l’aide, merci d'aller sur le salon d’entraide ci-dessus.
|
||||||
|
|
||||||
#### Applications
|
#### Applications
|
||||||
Salon de développement du packaging d’application. Il permet aux packageurs de s’entraider.
|
Salon de développement du packaging d’application. Il permet aux packageurs de s’entraider.
|
||||||
Il sert également à discuter de l’évolution du packaging, des outils d’intégration continue sur les applications.
|
Il sert également à discuter de l’évolution du packaging, des outils d’intégration continue sur les applications.
|
||||||
- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**
|
- IRC : **#yunohost-apps** sur irc.freenode.net
|
||||||
|
- Matrix : **#freenode_#yunohost-apps:matrix.org**
|
||||||
|
- XMPP : **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
## Consulter les fichiers de log du système
|
|
||||||
|
|
||||||
### Accéder à un fichier de log
|
|
||||||
#### Via l’interface d’administration
|
|
||||||
[Administration web](admin_fr)
|
|
||||||
|
|
||||||
#### En ligne de commande
|
|
||||||
Un fichier de log est un simple fichier texte utilisé par certains programmes du système (et notamment les services) pour inscrire l’historique de leur fonctionnement. Consulter un fichier de log consiste donc à afficher son contenu pour lire les messages qui s’y trouvent.
|
|
||||||
|
|
||||||
Pour accéder aux fichiers de log, la méthode traditionnelle consiste à [se connecter au serveur en ligne de commande via SSH](ssh_fr). Une fois connecté, utilisez la commande `tail` qui affiche uniquement la fin du fichier, car les fichiers de log sont très longs et qu’uniquement l’historique récent nous intéresse.
|
|
||||||
|
|
||||||
### Services
|
|
||||||
#### Courriel
|
|
||||||
* Postfix
|
|
||||||
* Dovecot
|
|
||||||
* mail.log
|
|
||||||
* amavis
|
|
||||||
|
|
||||||
#### Serveur web
|
|
||||||
* Nginx
|
|
||||||
* php5-fpm
|
|
||||||
|
|
||||||
#### Serveur XMPP metronome
|
|
||||||
* Metronome
|
|
||||||
|
|
||||||
#### Surveillance du serveur
|
|
||||||
* Glances
|
|
||||||
|
|
||||||
#### Bases de données
|
|
||||||
* MySQL
|
|
||||||
* Postgrey
|
|
||||||
|
|
||||||
#### SSH
|
|
||||||
|
|
||||||
#### yunohost-api
|
|
||||||
|
|
||||||
#### Torrents
|
|
||||||
* transmission-daemon
|
|
||||||
|
|
||||||
#### LDAP
|
|
||||||
* slapdStatut
|
|
||||||
|
|
||||||
#### DNS
|
|
||||||
* Dnsmasq
|
|
||||||
* Bind9
|
|
26
collabora_fr.md
Normal file
26
collabora_fr.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Installer Collabora avec Nextcloud
|
||||||
|
|
||||||
|
**Note :** la marche à suivre detaillée et realisée ici à partir d’une instance Yunohost sur Debian 8 (celle-ci n'a pas été testée suite a la migration sur la version 3 de Yunohost) et celle-ci part du principe que les domaines/sous-domaines sont correctement configurés au niveau des DNS et de votre instance Yunohost (voir [DNS](/dns_fr) , [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) ,[Configurer les enregistrements DNS](/dns_config_fr) et [Nom de domaine en noho.st / nohost.me](/dns_nohost_me_fr) )
|
||||||
|
|
||||||
|
### Installer Nextcloud
|
||||||
|
|
||||||
|
Si Nexcloud n'est pas déja installée sur votre instance Yunohost, vous pouvez l’installer depuis le lien suivant :
|
||||||
|
|
||||||
|
[Installer nextcloud](https://install-app.yunohost.org/?app=nextcloud)
|
||||||
|
|
||||||
|
|
||||||
|
### Installer l'application Collabora dans yunohost
|
||||||
|
**dans l'interface d'Administration :**
|
||||||
|
Applications > Installer > En bas de la page _Installer une application personnalisée_ > Renseigner l’url « https://github.com/aymhce/collaboradocker_ynh » > Définir le nom de domaine secondaire/sous-domaine dédié à l'application Collabora .
|
||||||
|
|
||||||
|
|
||||||
|
### Configuration dans nextcloud
|
||||||
|
|
||||||
|
**Ajouter l'application Collabora Online à Nextcloud :**
|
||||||
|
|
||||||
|
Cliquer sur l'icone de l'utilisateur en haut à droite > Applications > Bureautique & texte > Sous « Collabora Online » cliquer sur Activer
|
||||||
|
|
||||||
|
**Configurer Collabora sur Nextcloud :**
|
||||||
|
|
||||||
|
Cliquer sur l'icone de l'utilisateur en haut à droite > Paramètres > Sous _Administration_, _Collabora en ligne_
|
||||||
|
Renseigner le « Serveur Collabora en ligne » par le nom de domaine choisi lors de l’installation de collabora dans yunohost (précédé de « https:// »).
|
|
@ -143,5 +143,11 @@ yunohost tools [-h] {postinstall,maindomain,ldapinit,adminpw} ...
|
||||||
postinstall YunoHost post-install
|
postinstall YunoHost post-install
|
||||||
maindomain Main domain change tool
|
maindomain Main domain change tool
|
||||||
ldapinit YunoHost LDAP initialization
|
ldapinit YunoHost LDAP initialization
|
||||||
adminpw Change admin password
|
adminpw Change admin password # Existing password required. See workaround below.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### admin
|
||||||
|
```bash
|
||||||
|
yunohost-reset-ldap-password Reset the admin account (Web GUI) password
|
||||||
|
```
|
|
@ -1,5 +1,33 @@
|
||||||
# Communication
|
# Communication
|
||||||
|
|
||||||
|
## Talks / conf
|
||||||
|
|
||||||
|
* (FR) [Capitole du libre 2017 - YunoHost : vers l'auto-hébergement et au-delà - JimboJoe](https://2017.capitoledulibre.org/programme/#yunohost-vers-lauto-hebergement-et-au-dela) ([slides](https://github.com/YunoHost/yunohost-cdl-2017/raw/master/YunoHost-CDL2017.pdf))
|
||||||
|
* (FR) [PSES 2017 – Construire l’Internet du Futur avec YunoHost – Aleks, ljf](https://data.passageenseine.org/2017/aleks-ljf_internet-futur-yunohost.webm) ([slides](https://data.passageenseine.org/2017/aleks-ljf_internet-futur-yunohost.pdf))
|
||||||
|
* (FR) [Université de technologie de compiègne 2017 – Agir pour un internet éthique – LJF](http://webtv.utc.fr/watch_video.php?v=O34AA7RBR1AH)
|
||||||
|
* (EN) [FOSDEM 2017 – Internet Cube – kload](https://archive.fosdem.org/2017/schedule/event/internet_cube/)
|
||||||
|
* (EN) [FOSDEM 2017 – YunoHost – Bram](https://archive.fosdem.org/2017/schedule/event/yunohost/)
|
||||||
|
* (FR) [Capitole du libre 2016 – 1 an et ½ de Brique Internet – Bram](http://videos2016.capitoledulibre.org/communaute-du-libre/bram-1-an-et-demi-de-brique-internet.mp4)
|
||||||
|
* (FR) [PSES 2015 - La Brique Internet](http://www.youtube.com/watch?v=NCRn0yRfkIE)
|
||||||
|
* (FR) [THSF 2015 – beudbeud](https://vimeo.com/128055751)
|
||||||
|
* (FR) [RMLL 2014 - Hébergez-vous ! – kload & beudbeud]()
|
||||||
|
* (FR) [Capitole du libre 2013 - L’auto-hébergement pour tous avec YunoHost - beudbeud](http://2013.capitoledulibre.org/conferences/internet-libre/lauto-hebergement-pour-tous-avec-yunohost.html)
|
||||||
|
* (EN) [FOSDEM 2013 — kload](https://www.youtube.com/watch?v=siN1OLAgGJk)
|
||||||
|
|
||||||
|
## Articles / Press review
|
||||||
|
|
||||||
<a href="https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic"><img src="/images/Linuxfr.png" width=180></a>
|
<a href="https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic"><img src="/images/Linuxfr.png" width=180></a>
|
||||||
<a href="https://en.wikipedia.org/wiki/YunoHost"><img src="/images/Wikipedia-logo-v2-fr.svg" width=180></a>
|
<a href="https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic"><img src="/images/Linuxfr.png" width=180></a>
|
||||||
* LinuxFr (french): [YunoHost 2.0 : self hosting at click range](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic)
|
<a href="https://www.linux-pratique.com/2016/07/et-si-vous-passiez-a-lauto-hebergement/"><img src="/images/linux-pratique-96.jpg" width=150 /></a>
|
||||||
* Twitter [@yunohost](https://twitter.com/yunohost) [#yunohost](https://twitter.com/hashtag/yunohost?src=hash)
|
<a href="http://www.linux-magazine.com/Issues/2018/208/YunoHost"><img src="/images/linux-magazine-208.jpg" width=150 /></a>
|
||||||
|
* LinuxFr (french):
|
||||||
|
- [YunoHost 2.0 : self hosting at click range](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic)
|
||||||
|
- [Internet cube and YunoHost projects evolutions](https://linuxfr.org/news/evolutions-des-projets-la-brique-internet-et-yunohost-des-versions-2-2-2-4-et-2-5)
|
||||||
|
- [Linux Pratique n°96 – YunoHost, l’auto-hébergement à portée de main – juillet 2016](http://connect.ed-diamond.com/Linux-Pratique/LP-096/YunoHost-l-auto-hebergement-a-portee-de-main)
|
||||||
|
- [Linux Magazine n°208 – YunoHost, Personal server for a private cloud – Mars 2018](http://www.linux-magazine.com/Issues/2018/208/YunoHost)
|
||||||
|
|
||||||
|
## YunoHost was cited in :
|
||||||
|
|
||||||
|
* [EXPERIMENTA 2018](https://livestream.com/accounts/26482307/events/8034656/player?width=960&height=540&enableInfoAndActivity=true&defaultDrawer=&autoPlay=true&mute=false) at 57.47 (depuis https://www.experimenta.fr/direct/)
|
||||||
|
* [Capitole du libre 2017 - « Contributopia », Dégoogliser ne suffit pas](https://www.youtube.com/watch?v=ip6_VMkWpr8&feature=youtu.be&t=4793)
|
||||||
|
* [Contributopia - Essaimage (Framasoft)](https://contributopia.org/fr/essaimage/)
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
# Communication
|
|
||||||
<a href="https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic"><img src="/images/Linuxfr.png" width=180></a>
|
|
||||||
<a href="https://fr.wikipedia.org/wiki/YunoHost"><img src="/images/Wikipedia-logo-v2-fr.svg" width=180></a>
|
|
||||||
<a href="http://www.linux-pratique.com/2016/07/et-si-vous-passiez-a-lauto-hebergement/"><img src="/images/linux-pratique-96.jpg" width=150 /></a>
|
|
||||||
* LinuxFr :
|
|
||||||
- [YunoHost 2.0 : l’auto-hébergement à portée de clic](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic)
|
|
||||||
- [Évolutions des projets La Brique Internet et YunoHost des versions 2.2, 2.4 et 2.5](https://linuxfr.org/news/evolutions-des-projets-la-brique-internet-et-yunohost-des-versions-2-2-2-4-et-2-5)
|
|
||||||
* Twitter [@yunohost](https://twitter.com/yunohost) [#yunohost](https://twitter.com/hashtag/yunohost?src=hash)
|
|
||||||
- [Linux Pratique n°96 – YunoHost, l’auto-hébergement à portée de main – juillet 2016](http://connect.ed-diamond.com/Linux-Pratique/LP-096/YunoHost-l-auto-hebergement-a-portee-de-main)
|
|
10
conf_fr.md
10
conf_fr.md
|
@ -1,10 +0,0 @@
|
||||||
# Conférences
|
|
||||||
|
|
||||||
- [Université de technologie de compiègne 2017 – Agir pour un internet éthique – LJF](http://webtv.utc.fr/watch_video.php?v=O34AA7RBR1AH)
|
|
||||||
- [FOSDEM 2017 – YunoHost/Internet Cube – Bram/kload](https://video.fosdem.org/2017/AW1.125/)
|
|
||||||
- [Capitole du libre 2016 – 1 an et ½ de Brique Internet – Bram](http://videos2016.capitoledulibre.org/communaute-du-libre/bram-1-an-et-demi-de-brique-internet.mp4)
|
|
||||||
* [PSES 2015 - La Brique Internet](http://www.youtube.com/watch?v=NCRn0yRfkIE)
|
|
||||||
* [THSF 2015 – beudbeud](https://vimeo.com/128055751)
|
|
||||||
* [RMLL 2014 - Hébergez-vous ! – kload & beudbeud]()
|
|
||||||
* [Capitole du libre 2013 - L’auto-hébergement pour tous avec YunoHost - beudbeud](http://2013.capitoledulibre.org/conferences/internet-libre/lauto-hebergement-pour-tous-avec-yunohost.html)
|
|
||||||
* [FOSDEM 2013 — kload](https://www.youtube.com/watch?v=siN1OLAgGJk)
|
|
|
@ -22,7 +22,7 @@ Talk about software freedom, [self-hosting](selfhosting_en) and YunoHost to your
|
||||||
<span class="glyphicon glyphicon-exclamation-sign"></span> Testing
|
<span class="glyphicon glyphicon-exclamation-sign"></span> Testing
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-8" markdown="1">
|
<div class="col col-md-8" markdown="1">
|
||||||
We need people able to test YunoHost deeply. If you find a bug, try to identify it, and report it on our <a href="https://dev.yunohost.org/projects/yunohost/issues/new" target="_blank">bug tracker</a>.
|
We need people able to test YunoHost deeply. If you find a bug, try to identify it, and report it on our <a href="https://github.com/YunoHost/issues/issues" target="_blank">bug tracker</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ We need people able to test YunoHost deeply. If you find a bug, try to identify
|
||||||
<span class="glyphicon glyphicon-user"></span> Helping users
|
<span class="glyphicon glyphicon-user"></span> Helping users
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-8" markdown="1">
|
<div class="col col-md-8" markdown="1">
|
||||||
Our support relies on contributors like you. Just come to [the XMPP chatroom](/support) and help new users getting started, or pick a question on the <a href="https://forum.yunohost.org/" target="_blank">Forum</a>.
|
Our support relies on contributors like you. Just come to [the support chatroom](/help) and help new users getting started, or pick a question on the <a href="https://forum.yunohost.org/" target="_blank">Forum</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -88,53 +88,8 @@ A <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/apps">mailing-list<
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col-md-3 lead">
|
|
||||||
<span class="glyphicon glyphicon glyphicon-upload"></span> Seed
|
|
||||||
</div>
|
|
||||||
<div class="col col-md-8" markdown="1">
|
|
||||||
Seed (share) YunoHost images with Torrent system: [live](http://build.yunohost.org/yunohost-live.iso.torrent), [32 bits](http://build.yunohost.org/yunohostv2-latest-i386.iso.torrent) and [64 bits](http://build.yunohost.org/yunohostv2-latest-amd64.iso.torrent).
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<p class="lead" markdown="1">In any case, please [come to dev chatroom](xmpp:dev@conference.yunohost.org?join) to contribute :-)</p>
|
<p class="lead" markdown="1">In any case, please [come to dev chatroom](xmpp:dev@conference.yunohost.org?join) to contribute :-)</p>
|
||||||
|
|
||||||
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// Jappix mini chat
|
|
||||||
$(".actions").css('opacity', 0);
|
|
||||||
jQuery.ajaxSetup({cache: false});
|
|
||||||
|
|
||||||
var ADS_ENABLE = 'off';
|
|
||||||
var JAPPIX_STATIC = '/jappix/';
|
|
||||||
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
|
|
||||||
var ANONYMOUS = 'on';
|
|
||||||
JappixMini.launch({
|
|
||||||
connection: {
|
|
||||||
domain: "anonymous.yunohost.org",
|
|
||||||
},
|
|
||||||
application: {
|
|
||||||
network: {
|
|
||||||
autoconnect: false,
|
|
||||||
},
|
|
||||||
interface: {
|
|
||||||
showpane: false,
|
|
||||||
animate: false,
|
|
||||||
},
|
|
||||||
groupchat: {
|
|
||||||
open: ['dev@conference.yunohost.org'],
|
|
||||||
suggest: ['support@conference.yunohost.org']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
92
contribute_ar.md
Normal file
92
contribute_ar.md
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
# <div dir="rtl">المساهمة</div>
|
||||||
|
|
||||||
|
<p dir="rtl" class="lead">
|
||||||
|
إنّ مصير واي يونوهوست YunoHost يُقرّره أناس و أنتم مِن بين هؤلاء
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div dit="rtl" class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-heart"></span> تحدثوا عن المشروع مِن حولكم
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
تحدثوا عن البرمجيات الحرّة، تحدثوا عن واي يونوهوست YunoHost مع أقربائكم و زملائكم في العمل. حدّثوهم عن [الإستضافة الذاتية](/selfhosting_fr)، نحن بحاجة و واثقون مِن قدرات محبي البيانات مثلكم 3></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-exclamation-sign"></span> جَرّبُوا
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
نحن بحاجة إلى تجريب حثيث لواي يونوهوست YunoHost. فإن صادفتم مشكلة، يرجى القيام بتحديد الخلل و ثم الإبلاغ عنه عبر
|
||||||
|
<a href="https://github.com/YunoHost/issues/issues" target="_blank">مُتعقب الأخطاء</a>.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-user"></span> ساعدوا المستخدمِين
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon d'aide](/help_fr), ou tentez de répondre aux questions du <a href="https://forum.yunohost.org/" target="_blank">Forum</a>. Vous pouvez aussi organiser des <a href="https://hackstub.netlib.re/wiki/index.php?title=Atelier_3_avenir%28s%29_d%27internet_-_Introduction_%C3%A0_Yunohost_et_la_brique_internet" target="_blank">ateliers de formation</a>.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-cog"></span> أكتبوا الشفرة
|
||||||
|
</div>
|
||||||
|
<div dir="rtl" class="col col-md-8" markdown="1">
|
||||||
|
Vous pouvez vous impliquer dans le développement de YunoHost peu importe votre niveau. Administrateurs système, développeurs web, designers et pythonistes <a href="https://github.com/YunoHost" target="_blank">sont les bienvenus</a>.<br>
|
||||||
|
Découvrez [comment contribuer](/dev_fr), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) et la <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/contrib">mailing-list</a> !
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-globe"></span> ترجِموا
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
ساهموا في توفير واجهات واي يونوهوست YunoHost بلغتكم. <a href="https://translate.yunohost.org/" target="_blank">إبدأوا الآن</a> !
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-edit"></span> أكتبوا
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
ساهموا في تحسين هذا الدليل و ذلك [باقتراح صفحات جديدة](/write_documentation_fr) أو بترجمة صفحاته إلى لغتكم.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div dir="rtl" class="row">
|
||||||
|
<div class="col col-md-3 lead">
|
||||||
|
<span class="glyphicon glyphicon-gift"></span> ساهموا في التحزيم
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-8" markdown="1">
|
||||||
|
Étendez les capacités de YunoHost en [packageant de nouveaux services et applications web](/packaging_apps_fr). Jetez un œil à [ce qui a déjà été fait](/apps_fr) !
|
||||||
|
<br>
|
||||||
|
Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/apps">mailing-list</a> est également disponible.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<p dir="rtl" class="lead" markdown="1">على أي حال تعالوا و انضموا إلى [غرفة المحادثة الخاصة بالمطوّرين](xmpp:dev@conference.yunohost.org?join) إن كنتم ترغبون في المساهمة :-)</p>
|
||||||
|
|
|
@ -22,7 +22,7 @@ Parlez de logiciel libre, d’[auto-hébergement](/selfhosting_fr), de YunoHost
|
||||||
<span class="glyphicon glyphicon-exclamation-sign"></span> Testez
|
<span class="glyphicon glyphicon-exclamation-sign"></span> Testez
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-8" markdown="1">
|
<div class="col col-md-8" markdown="1">
|
||||||
Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essayez de l’identifier, puis reportez-le sur notre <a href="https://dev.yunohost.org/projects/yunohost/issues/new" target="_blank">bug tracker</a>.
|
Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essayez de l’identifier, puis reportez-le sur notre <a href="https://github.com/YunoHost/issues/issues/new" target="_blank">bug tracker</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essa
|
||||||
<span class="glyphicon glyphicon-user"></span> Aidez les utilisateurs
|
<span class="glyphicon glyphicon-user"></span> Aidez les utilisateurs
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-8" markdown="1">
|
<div class="col col-md-8" markdown="1">
|
||||||
Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon de discussion XMPP](/support_fr), ou tentez de répondre aux questions du <a href="https://forum.yunohost.org/" target="_blank">Forum</a>. Vous pouvez aussi organiser des <a href="https://hackstub.netlib.re/wiki/index.php?title=Atelier_3_avenir%28s%29_d%27internet_-_Introduction_%C3%A0_Yunohost_et_la_brique_internet" target="_blank">ateliers de formation</a>.
|
Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon d'aide](/help_fr), ou tentez de répondre aux questions du <a href="https://forum.yunohost.org/" target="_blank">Forum</a>. Vous pouvez aussi organiser des <a href="https://hackstub.netlib.re/wiki/index.php?title=Atelier_3_avenir%28s%29_d%27internet_-_Introduction_%C3%A0_Yunohost_et_la_brique_internet" target="_blank">ateliers de formation</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -86,51 +86,7 @@ Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une <a hr
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col-md-3 lead">
|
|
||||||
<span class="glyphicon glyphicon glyphicon-upload"></span> Seedez
|
|
||||||
</div>
|
|
||||||
<div class="col col-md-8" markdown="1">
|
|
||||||
Seedez (partagez) avec le système de Torrent les images de YunoHost : [live](http://build.yunohost.org/yunohost-live.iso.torrent), [32 bits](http://build.yunohost.org/yunohostv2-latest-i386.iso.torrent) et [64 bits](http://build.yunohost.org/yunohostv2-latest-amd64.iso.torrent).
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<p class="lead" markdown="1">Dans tous les cas, venez sur le [salon de développement](xmpp:dev@conference.yunohost.org?join) pour contribuer :-)</p>
|
<p class="lead" markdown="1">Dans tous les cas, venez sur le [salon de développement](xmpp:dev@conference.yunohost.org?join) pour contribuer :-)</p>
|
||||||
|
|
||||||
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// Jappix mini chat
|
|
||||||
$(".actions").css('opacity', 0);
|
|
||||||
jQuery.ajaxSetup({cache: false});
|
|
||||||
|
|
||||||
var ADS_ENABLE = 'off';
|
|
||||||
var JAPPIX_STATIC = '/jappix/';
|
|
||||||
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
|
|
||||||
var ANONYMOUS = 'on';
|
|
||||||
JappixMini.launch({
|
|
||||||
connection: {
|
|
||||||
domain: "anonymous.yunohost.org",
|
|
||||||
},
|
|
||||||
application: {
|
|
||||||
network: {
|
|
||||||
autoconnect: false,
|
|
||||||
},
|
|
||||||
interface: {
|
|
||||||
showpane: false,
|
|
||||||
animate: false,
|
|
||||||
},
|
|
||||||
groupchat: {
|
|
||||||
open: ['dev@conference.yunohost.org'],
|
|
||||||
suggest: ['support@conference.yunohost.org']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
|
@ -1,12 +1,32 @@
|
||||||
# Contributor documentation
|
# Contributor documentation
|
||||||
|
|
||||||
* [How to contribute](/contribute)
|
* [General ways of contributing to YunoHost](/contribute)
|
||||||
* [What is YunoHost](/whatsyunohost)
|
* [Writing documentation](/write_documentation)
|
||||||
* Developement
|
* Application packaging
|
||||||
* [Roadmap](/roadmap)
|
* [Apps wishlist](/apps_wishlist)
|
||||||
* [List of available applications](/apps)
|
* [General introduction to app packaging](/packaging_apps_start)
|
||||||
* [Package new applications](/packaging_apps)
|
* [Technical introduction to app packaging](/packaging_apps)
|
||||||
* [Develop on Docker](/docker)
|
* [Setting up a dev environment with VirtualBox](packaging_apps_virtualbox_fr)
|
||||||
* Documentation
|
* [Manifest](packaging_apps_manifest)
|
||||||
* [Account creation to edit documentation](/accounting)
|
* [Scripts](packaging_apps_scripts)
|
||||||
* [Write documentation](/write_documentation)
|
* [Arguments management](packaging_apps_arguments_management)
|
||||||
|
* [Nginx configuration](packaging_apps_nginx_conf)
|
||||||
|
* [Multi-instance](packaging_apps_multiinstance)
|
||||||
|
* [Helpers](packaging_apps_helpers)
|
||||||
|
* [Trap usage](packaging_apps_trap_fr)
|
||||||
|
* [Adding your app to the community list](https://github.com/YunoHost/Apps/#contributing)
|
||||||
|
* Quality tests
|
||||||
|
* [Package linter](https://github.com/YunoHost/package_linter)
|
||||||
|
* [Package check](https://github.com/YunoHost/package_check)
|
||||||
|
* [Applications levels](packaging_apps_levels_fr)
|
||||||
|
* [App Continuous Integration](https://ci-apps.yunohost.org/jenkins/)
|
||||||
|
* [App CI dashboard](https://dash.yunohost.org/appci/branch/stable)
|
||||||
|
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
|
||||||
|
* [Contributing to the YunoHost core](/dev)
|
||||||
|
* [Setting up a dev environment with ynh-dev](https://github.com/YunoHost/ynh-dev/blob/master/README.md)
|
||||||
|
* [Deb build chain](https://github.com/YunoHost/vinaigrette/blob/master/README.md)
|
||||||
|
* Image building
|
||||||
|
* [x86 ISO](https://github.com/YunoHost/cd_build)
|
||||||
|
* [Raspberry Pi images](https://github.com/YunoHost/rpi-image)
|
||||||
|
* [Other ARM board images](https://github.com/YunoHost/arm-images)
|
||||||
|
* [Using the YunoHost API outside of the webadmin](/admin_api_fr)
|
||||||
|
|
|
@ -1,14 +1,33 @@
|
||||||
# Documentation contributeur YunoHost
|
# Guide du contributeur
|
||||||
|
|
||||||
* [Guide du contributeur](/contribute_fr)
|
* [Liste des façons de contribuer à YunoHost](/contribute_fr)
|
||||||
* [Qu’est-ce que YunoHost ?](/whatsyunohost_fr)
|
* [Écrire de la documentation](/write_documentation_fr)
|
||||||
* Développement
|
* Packaging d'application
|
||||||
* <a href='https://dev.yunohost.org/projects/yunohost/roadmap' target='_BLANK'>Feuille de route du projet</a>
|
* [Liste d'apps souhaitées par la communauté](/apps_wishlist_fr)
|
||||||
* [Liste des applications disponibles](/apps_fr)
|
* [Introduction générale au packaging d'apps](/packaging_apps_start_fr)
|
||||||
* [Préparer/empaqueter une nouvelle application](/packaging_apps_fr)
|
* [Introduction technique au packaging d'apps](/packaging_apps_fr)
|
||||||
* [Développer avec Docker](/docker_fr)
|
* [Déployer un environnement de développement avec VirtualBox](packaging_apps_virtualbox_fr)
|
||||||
* [Présentation du fonctionnement de YunoHost](/package_list_fr)
|
* [Manifest](packaging_apps_manifest_fr)
|
||||||
* [Se créer un environnement de développement](/ynh_dev_fr)
|
* [Scripts](packaging_apps_scripts_fr)
|
||||||
* Documentation
|
* [Gestion des arguments](packaging_apps_arguments_management_fr)
|
||||||
* [Création d’un compte pour modifier la documentation](/accounting_fr)
|
* [Configuration nginx](packaging_apps_nginx_conf_fr)
|
||||||
* [Écrire de la documentation](/write_documentation_fr)
|
* [Multi-instance](packaging_apps_multiinstance_fr)
|
||||||
|
* [Fonctions utiles](packaging_apps_helpers_fr)
|
||||||
|
* [Utilisation de 'trap'](packaging_apps_trap_fr)
|
||||||
|
* [Ajouter son application à la liste community](https://github.com/YunoHost/Apps/#contributing)
|
||||||
|
* Tests de qualité
|
||||||
|
* [Package linter](https://github.com/YunoHost/package_linter)
|
||||||
|
* [Package check](https://github.com/YunoHost/package_check)
|
||||||
|
* [Niveaux des applications](packaging_apps_levels_fr)
|
||||||
|
* [Intégration continue des apps](https://ci-apps.yunohost.org/jenkins/)
|
||||||
|
* [Tableau de bord du CI des apps](https://dash.yunohost.org/appci/branch/stable)
|
||||||
|
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
|
||||||
|
* [Contribuer à la partie "core" de YunoHost](/dev_fr)
|
||||||
|
* [Déployer un environnement de dev avec ynh-dev](https://github.com/YunoHost/ynh-dev/blob/master/README.md)
|
||||||
|
* [Construction des paquets debian](https://github.com/YunoHost/vinaigrette/blob/master/README.md)
|
||||||
|
* [Feuilles de route du projet](https://github.com/YunoHost/issues/milestones?direction=asc&sort=title&state=open)
|
||||||
|
* Construction des images
|
||||||
|
* [x86 ISO](https://github.com/YunoHost/cd_build)
|
||||||
|
* [Images Raspberry Pi](https://github.com/YunoHost/rpi-image)
|
||||||
|
* [Autres images pour cartes ARM](https://github.com/YunoHost/arm-images)
|
||||||
|
* [Utiliser l'API YunoHost en dehors de la webadmin](/admin_api_fr)
|
||||||
|
|
|
@ -1,46 +1,46 @@
|
||||||
# Copy an image to an SD card
|
# Flashing an SD card
|
||||||
|
|
||||||
Now that you have the YunoHost image, you have to copy its content to an SD card.
|
Now that you download the YunoHost image, you have to copy its content to an SD
|
||||||
The process differs regarding your operating system.
|
card. This step is also sometimes called 'flashing' the SD card.
|
||||||
|
|
||||||
|
<div class="alert alert-warning" markdown="1">
|
||||||
|
In the context of self-hosting, it is recommended that your SD card be at least
|
||||||
|
8 GB (to have a reasonable space available for the system and a few data) and at
|
||||||
|
least Class 10 (to ensure reasonable performances).
|
||||||
|
</div>
|
||||||
|
|
||||||
<img src="/images/sdcard.jpg" width=150><img src="https://yunohost.org/images/micro-sd-card.jpg">
|
<img src="/images/sdcard.jpg" width=150><img src="https://yunohost.org/images/micro-sd-card.jpg">
|
||||||
|
|
||||||
## On Windows
|
### With Etcher
|
||||||
|
|
||||||
* Download and install **[Win32 Disk Imager](http://sourceforge.net/projects/win32diskimager/)**
|
Download <a href="https://etcher.io/" target="_blank">Etcher</a> for your
|
||||||
* Plug your SD card in
|
operating system and install it.
|
||||||
* Copy the `.img` file to your SD card using Win32 Disk Imager.
|
|
||||||
|
|
||||||
<img src="/images/win32diskimager.png">
|
<img src="/images/etcher.gif">
|
||||||
|
|
||||||
## On GNU/Linux, BSD or Mac OS
|
Plug your SD card, select your YunoHost image and click "Flash"
|
||||||
|
|
||||||
* Open a terminal
|
### With `dd`
|
||||||
* Plug your SD card in
|
|
||||||
* Identify the device name by typing:
|
If you are on Linux / Mac and know your way around command line, you may also
|
||||||
|
flash your SD card with `dd`. You can identify which device corresponds to your
|
||||||
|
SD card with `fdisk -l` or `lsblk`. Assuming your SD card is `/dev/mmcblk0` (be
|
||||||
|
careful !!), you may run :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo fdisk -l
|
dd if=/path/to/yunohost.img of=/dev/mmcblk0
|
||||||
```
|
```
|
||||||
|
|
||||||
It should be `/dev/diskN`, where `N` is a number, or `/dev/sdX`, where `X` is a letter.
|
|
||||||
|
|
||||||
Carefull to not put the digit `N` cause it will create an [non-functional SD card](https://raspberrypi.stackexchange.com/questions/11880/sd-card-doesnt-works-after-dd).
|
|
||||||
|
|
||||||
* Copy the image by typing:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo dd if=/path/to/your/.img of=/your/device/name
|
|
||||||
```
|
|
||||||
|
|
||||||
<span class="glyphicon glyphicon-warning-sign"></span> Do not forget to change `/path/to/your/.img` and `/your/device/name` with the appropriate values.
|
|
||||||
|
|
||||||
The command may take a few minutes, then your SD card will be ready to use. **:-)**
|
|
||||||
|
|
||||||
## Expand the root partition <small>(optional)</small>
|
## Expand the root partition <small>(optional)</small>
|
||||||
|
|
||||||
|
<div class="alert alert-warning" markdown="1">
|
||||||
|
This step is optionnal as it should be performed automatically during the first
|
||||||
|
boot on recent images.
|
||||||
|
</div>
|
||||||
|
|
||||||
By default, the root partition of your SD card is very small.
|
By default, the root partition of your SD card is very small.
|
||||||
You can resize it by using software like `resize2fs` (command-line) or `gparted` (graphical).
|
You can resize it by using software like `resize2fs` (command-line) or `gparted`
|
||||||
|
(graphical).
|
||||||
|
|
||||||
<img src="/images/gparted.jpg" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<img src="/images/gparted.jpg" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
||||||
|
|
||||||
|
|
|
@ -1,45 +1,51 @@
|
||||||
# Copier l’image sur une carte SD
|
# Flasher une carte SD
|
||||||
|
|
||||||
Maintenant que vous avez l’image ISO YunoHost, vous devez la copier sur une carte SD. Le processus est différent suivant votre système d’exploitation.
|
Maintenant que vous avez téléchargé l'image de YunoHost, il vous faut copier son
|
||||||
|
contenu sur une carte SD. Cette étape est aussi souvent appelé 'flasher' la
|
||||||
|
carte SD.
|
||||||
|
|
||||||
|
<div class="alert alert-warning" markdown="1">
|
||||||
|
Dans le contexte de l'auto-hébergement, il est recommandé que votre carte SD
|
||||||
|
fasse au moins 8 Go (pour disposer d'un espace raisonnable pour le système et
|
||||||
|
quelques données) et soit au moins certifiée classe 10 (pour avoir des
|
||||||
|
performances raisonnables).
|
||||||
|
</div>
|
||||||
|
|
||||||
<img src="/images/sdcard.jpg" width=150><img src="https://yunohost.org/images/micro-sd-card.jpg">
|
<img src="/images/sdcard.jpg" width=150><img src="https://yunohost.org/images/micro-sd-card.jpg">
|
||||||
|
|
||||||
## Sous Windows
|
### Avec Etcher
|
||||||
|
|
||||||
* Téléchargez et installez **[Win32 Disk Imager](http://sourceforge.net/projects/win32diskimager/)**.
|
Télécharger <a href="https://etcher.io/" target="_blank">Etcher</a> pour votre
|
||||||
* Insérez votre carte SD.
|
système d'exploitation, et installez-le.
|
||||||
* Copiez le fichier `.img` sur votre carte SD en utilisant *Win32 Disk Imager*.
|
|
||||||
|
|
||||||
<img src="/images/win32diskimager.png">
|
<img src="/images/etcher.gif">
|
||||||
|
|
||||||
## Sous GNU/Linux, BSD ou Mac OS
|
Connectez votre carte SD, sélectionnez votre image YunoHost, puis cliquez sur
|
||||||
|
'Flash'.
|
||||||
|
|
||||||
* Ouvrez un terminal.
|
### Avec `dd`
|
||||||
* Insérez votre carte SD.
|
|
||||||
* Identifiez votre matériel en tapant :
|
Si vous êtes sous Linux / Mac et que vous être à l'aise avec la ligne de
|
||||||
|
commande, vous pouvez aussi flasher votre carte SD avec `dd`. Commencez par
|
||||||
|
identifier le périphérique correspondant à votre carte SD avec `fdisk -l` ou
|
||||||
|
`lsblk`. En supposant que votre carte SD soit `/dev/mmcblk0` (faites attention
|
||||||
|
!), vous pouvez lancer :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo fdisk -l
|
dd if=/chemin/vers/yunohost.img of=/dev/mmcblk0
|
||||||
```
|
```
|
||||||
|
|
||||||
Ça devrait être `/dev/diskN`, où `N` est un chiffre, ou `/dev/sdX`, où `X` est une lettre, ou `/dev/mmcblk0`.
|
## Étendre la partition root <small>(optionnel)</small>
|
||||||
|
|
||||||
Attention à ne pas mettre le chiffre `N` car ça créera une [carte SD non fonctionnelle](https://raspberrypi.stackexchange.com/questions/11880/sd-card-doesnt-works-after-dd).
|
<div class="alert alert-warning" markdown="1">
|
||||||
|
Cette étape est optionnelle car elle est normalement effectuée automatiquement
|
||||||
|
par le système lors du premier démarrage sur les images récentes.
|
||||||
|
</div>
|
||||||
|
|
||||||
* Copiez l’image en tapant :
|
Par défaut, la partition root installée sur votre carte SD avec la commande `dd`
|
||||||
|
est très petite. Vous pouvez la redimensionner avec un logiciel comme
|
||||||
```bash
|
`resize2fs` (ligne de commande) ou `Gparted` (interface graphique) en étendant
|
||||||
sudo dd if=/chemin/vers/votre/.img of=/nom/du/matériel
|
la partition ext4 au maximum de façon à utiliser tout l’espace non alloué.
|
||||||
```
|
|
||||||
|
|
||||||
<span class="glyphicon glyphicon-warning-sign"></span> N’oubliez pas de changer `/chemin/vers/votre/.img` et `/nom/du/matériel` par les valeurs appropriées.
|
|
||||||
|
|
||||||
La commande peut prendre quelques minutes, puis votre carte SD sera prête à être utilisée. **:-)**
|
|
||||||
|
|
||||||
## Étendre la partition root <small>(facultatif, mais conseillé)</small>
|
|
||||||
|
|
||||||
Par défaut, la partition root installée sur votre carte SD avec la commande `dd` est très petite.
|
|
||||||
Vous pouvez la redimensionner avec un logiciel comme `resize2fs` (ligne de commande) ou `Gparted` (interface graphique) en étendant la partition ext4 au maximum de façon à utiliser tout l’espace non alloué.
|
|
||||||
|
|
||||||
<img src="/images/gparted.jpg" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
<img src="/images/gparted.jpg" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# Create a YunoHost Live ISO
|
# Create a YunoHost Live ISO
|
||||||
|
|
||||||
|
<div class="alert alert-danger">This page is deprecated / obsolete / outdated. Information
|
||||||
|
it contains should be updated (or should be removed).</div>
|
||||||
|
|
||||||
Tested on Debian Wheezy (should work on Ubuntu as well).
|
Tested on Debian Wheezy (should work on Ubuntu as well).
|
||||||
Original tutorial here: http://willhaley.com/blog/create-a-custom-debian-live-environment/
|
Original tutorial here: http://willhaley.com/blog/create-a-custom-debian-live-environment/
|
||||||
|
|
||||||
|
@ -144,4 +147,4 @@ cp /usr/lib/syslinux/menu.c32 image/isolinux/
|
||||||
cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd ..
|
cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
Great success! Now you can burn the .iso or use [Unetbootin](http://unetbootin.sourceforge.net/) to copy it on a USB key.
|
Great success! Now you can burn the .iso or use [Unetbootin](http://unetbootin.sourceforge.net/) to copy it on a USB key.
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# Créer une Live ISO de YunoHost
|
# Créer une Live ISO de YunoHost
|
||||||
|
|
||||||
|
<div class="alert alert-danger">This page is deprecated / obsolete / outdated. Information
|
||||||
|
it contains should be updated (or should be removed).</div>
|
||||||
|
|
||||||
Testé sur Debian Wheezy (devrait marcher sur Ubuntu également).
|
Testé sur Debian Wheezy (devrait marcher sur Ubuntu également).
|
||||||
Tutoriel original : http://willhaley.com/blog/create-a-custom-debian-live-environment/
|
Tutoriel original : http://willhaley.com/blog/create-a-custom-debian-live-environment/
|
||||||
|
|
||||||
|
@ -146,4 +149,4 @@ cp /usr/lib/syslinux/menu.c32 image/isolinux/
|
||||||
cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd ..
|
cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
Félicitations ! L’ISO peut désormais être gravée ou utilisée avec [Unetbootin](http://unetbootin.sourceforge.net/) pour la copier sur une clé USB.
|
Félicitations ! L’ISO peut désormais être gravée ou utilisée avec [Unetbootin](http://unetbootin.sourceforge.net/) pour la copier sur une clé USB.
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
This page is not created yet, you can edit it by pressing ```<ESC>``` on your keyboard or by clicking the "edit" button on the bottom-right side of your screen. You will be able to preview your changes by pressing ```<ESC>``` again or by clicking the "preview" button.
|
This page is not created yet, you can edit it by pressing ```<ESC>``` on your keyboard or by clicking the "edit" button on the bottom-right side of your screen. You will be able to preview your changes by pressing ```<ESC>``` again or by clicking the "preview" button.
|
||||||
|
|
||||||
** Note: ** If you don't have any account you will have to send the modifications manually.
|
** Note: ** You will need to provide an email adress to validate your submission.
|
||||||
|
|
||||||
###Syntax
|
###Syntax
|
||||||
|
|
||||||
This page use the markdown syntax, please refer to the documentation for further informations:
|
This page use the markdown syntax, please refer to the documentation for further informations:
|
||||||
|
|
||||||
http://daringfireball.net/projects/markdown/syntax
|
http://daringfireball.net/projects/markdown/syntax
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Cette page n’existe pas encore, vous pouvez l’éditer en appuyant sur la touche ```<Échap>``` de votre clavier, ou en cliquant sur le bouton "Éditer" en bas à droite de votre écran. Vous pourrez avoir un aperçu de vos changements en appuyant à nouveau sur la touche ```<Échap>``` ou en cliquant sur le bouton "Aperçu".
|
Cette page n’existe pas encore, vous pouvez l’éditer en appuyant sur la touche ```<Échap>``` de votre clavier, ou en cliquant sur le bouton "Éditer" en bas à droite de votre écran. Vous pourrez avoir un aperçu de vos changements en appuyant à nouveau sur la touche ```<Échap>``` ou en cliquant sur le bouton "Aperçu".
|
||||||
|
|
||||||
** Note : ** Si vous n’avez pas de compte vous devrez envoyer vos modifications manuellement.
|
** Note : ** Vous aurez besoin d'une adresse email pour valider votre proposition.
|
||||||
|
|
||||||
|
|
||||||
### Syntaxe
|
### Syntaxe
|
||||||
|
|
33
dev.md
33
dev.md
|
@ -5,7 +5,7 @@ proceed? This guide takes you through the various steps of the development and
|
||||||
contribution process.
|
contribution process.
|
||||||
|
|
||||||
If you're looking for stuff to implement or fix, the bug-tracker is
|
If you're looking for stuff to implement or fix, the bug-tracker is
|
||||||
[here](https://dev.yunohost.org/issues/) !
|
[here](https://github.com/YunoHost/issues/issues) !
|
||||||
|
|
||||||
**Come say hi to us in the [dev chatroom](xmpp:dev@conference.yunohost.org?join)** ! If you don't have an XMPP client, you can join using the widget at the bottom right of this page.
|
**Come say hi to us in the [dev chatroom](xmpp:dev@conference.yunohost.org?join)** ! If you don't have an XMPP client, you can join using the widget at the bottom right of this page.
|
||||||
|
|
||||||
|
@ -122,34 +122,3 @@ If you're looking for stuff to implement or fix, the bug-tracker is
|
||||||
should be merged in `testing` (?) !
|
should be merged in `testing` (?) !
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// Jappix mini chat
|
|
||||||
$(".actions").css('opacity', 0);
|
|
||||||
jQuery.ajaxSetup({cache: false});
|
|
||||||
|
|
||||||
var ADS_ENABLE = 'off';
|
|
||||||
var JAPPIX_STATIC = '/jappix/';
|
|
||||||
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
|
|
||||||
var ANONYMOUS = 'on';
|
|
||||||
JappixMini.launch({
|
|
||||||
connection: {
|
|
||||||
domain: "anonymous.yunohost.org",
|
|
||||||
},
|
|
||||||
application: {
|
|
||||||
network: {
|
|
||||||
autoconnect: false,
|
|
||||||
},
|
|
||||||
interface: {
|
|
||||||
showpane: false,
|
|
||||||
animate: false,
|
|
||||||
},
|
|
||||||
groupchat: {
|
|
||||||
open: ['dev@conference.yunohost.org'],
|
|
||||||
suggest: ['support@conference.yunohost.org']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
38
dev_fr.md
38
dev_fr.md
|
@ -5,7 +5,7 @@ savez pas comment procéder ? Ce guide parcours les étapes du développement et
|
||||||
processus de contribution.
|
processus de contribution.
|
||||||
|
|
||||||
Si vous chercher quelque chose à implémenter ou un bug à réparer, le
|
Si vous chercher quelque chose à implémenter ou un bug à réparer, le
|
||||||
bug tracker est [ici](https://dev.yunohost.org/issues/) !
|
bug tracker est [ici](https://github.com/yunohost/issues/issues) !
|
||||||
|
|
||||||
**Venez dire coucou sur le [salon de
|
**Venez dire coucou sur le [salon de
|
||||||
dev](xmpp:dev@conference.yunohost.org?join)** ! Si vous n'avez pas de client
|
dev](xmpp:dev@conference.yunohost.org?join)** ! Si vous n'avez pas de client
|
||||||
|
@ -15,7 +15,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.
|
||||||
|
|
||||||
- **Utilisez [ynh-dev](https://github.com/YunoHost/ynh-dev)** (voir le README)
|
- **Utilisez [ynh-dev](https://github.com/YunoHost/ynh-dev)** (voir le README)
|
||||||
pour mettre en place un environnement de développement - en local sur une
|
pour mettre en place un environnement de développement - en local sur une
|
||||||
machine virtuel, ou bien sur un VPS.
|
machine virtuelle, ou bien sur un VPS.
|
||||||
Ceci installera une instance fonctionelle de YunoHost, en utilisant
|
Ceci installera une instance fonctionelle de YunoHost, en utilisant
|
||||||
directement les dépôts git à l'aide de liens symboliques. De cette façon, il
|
directement les dépôts git à l'aide de liens symboliques. De cette façon, il
|
||||||
vous sera possible de modifier les fichiers, de tester les changements en
|
vous sera possible de modifier les fichiers, de tester les changements en
|
||||||
|
@ -32,7 +32,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.
|
||||||
|
|
||||||
- Allez dans `/vagrant/yunohost/`.
|
- Allez dans `/vagrant/yunohost/`.
|
||||||
|
|
||||||
- Executez `/vagrant/ynh-dev use-git yunohost`.
|
- Exécutez `/vagrant/ynh-dev use-git yunohost`.
|
||||||
|
|
||||||
- Le fichier actionsmap (`data/actionsmap/yunohost.yml`) définit les différentes
|
- Le fichier actionsmap (`data/actionsmap/yunohost.yml`) définit les différentes
|
||||||
catégories, actions et arguments de la ligne de commande YunoHost. Choisissez
|
catégories, actions et arguments de la ligne de commande YunoHost. Choisissez
|
||||||
|
@ -89,7 +89,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.
|
||||||
|
|
||||||
- `js/yunohost/controllers` contiens les parties javascript, et définit quelles
|
- `js/yunohost/controllers` contiens les parties javascript, et définit quelles
|
||||||
requêtes faire à l'API pendant le chargement d'une page donnée de l'interface,
|
requêtes faire à l'API pendant le chargement d'une page donnée de l'interface,
|
||||||
et comment traîter les données récupérées pour générer la page, en utilisant
|
et comment traiter les données récupérées pour générer la page, en utilisant
|
||||||
des templates.
|
des templates.
|
||||||
|
|
||||||
- `views` contient les templates des pages de l'interface. Dans le template,
|
- `views` contient les templates des pages de l'interface. Dans le template,
|
||||||
|
@ -131,34 +131,4 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.
|
||||||
- Après relecture, test et validation par les autres contributeurs, votre
|
- Après relecture, test et validation par les autres contributeurs, votre
|
||||||
branche sera mergée dans `testing` (?) !
|
branche sera mergée dans `testing` (?) !
|
||||||
|
|
||||||
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// Jappix mini chat
|
|
||||||
$(".actions").css('opacity', 0);
|
|
||||||
jQuery.ajaxSetup({cache: false});
|
|
||||||
|
|
||||||
var ADS_ENABLE = 'off';
|
|
||||||
var JAPPIX_STATIC = '/jappix/';
|
|
||||||
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
|
|
||||||
var ANONYMOUS = 'on';
|
|
||||||
JappixMini.launch({
|
|
||||||
connection: {
|
|
||||||
domain: "anonymous.yunohost.org",
|
|
||||||
},
|
|
||||||
application: {
|
|
||||||
network: {
|
|
||||||
autoconnect: false,
|
|
||||||
},
|
|
||||||
interface: {
|
|
||||||
showpane: false,
|
|
||||||
animate: false,
|
|
||||||
},
|
|
||||||
groupchat: {
|
|
||||||
open: ['dev@conference.yunohost.org'],
|
|
||||||
suggest: ['support@conference.yunohost.org']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ You can also redirect ports manually to your server's local IP address on the ro
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### <small>4.</small> Do your router has hairpinning ?
|
### <small>4.</small> Does your router have hairpinning ?
|
||||||
|
|
||||||
If the server is accessible from outside your local network, but unreachable with its domain name on the local network, then your router probably lacks <a href="https://en.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
|
If the server is accessible from outside your local network, but unreachable with its domain name on the local network, then your router probably lacks <a href="https://en.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
|
||||||
|
|
||||||
|
|
166
dkim.md
166
dkim.md
|
@ -1,166 +0,0 @@
|
||||||
# DKIM
|
|
||||||
|
|
||||||
<div class="alert alert-danger">This page is deprecated. DKIM is now by default integrated in YunoHost with [Rspamd](https://rspamd.com)/rmilter.</div>
|
|
||||||
Now you just need to add a zone in your DNS configuration according to the file /etc/dkim/yourdomainname.tld.mail.txt</div>
|
|
||||||
|
|
||||||
|
|
||||||
##### Note:
|
|
||||||
* This is the 2nd revision of this Work In Progress How-To activate [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) and [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) in YunoHost.
|
|
||||||
* Le DKIM and SPF prevent emails which could be sent with your domain name from a non legitim server. This avoid spam.
|
|
||||||
* Untill, this is not natively integrated in YunoHost core, it will mean to that Postfix configuration will be blocked (or each time there is a change some configuration lines will need to be added to the end of `/etc/postfix/main.cf`).
|
|
||||||
* To be fully functionnal DKIM requires a modification of your [DNS zone](/dns_config_en), which propagantion can take up to 24h.
|
|
||||||
|
|
||||||
##### Sources:
|
|
||||||
* This tutorial has been initially based on the DKMI section of: http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ from Drew Crawford.
|
|
||||||
* This tutorial has been reviewed based on https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin
|
|
||||||
|
|
||||||
Replace `DOMAIN.TLD` by your own domain name.
|
|
||||||
|
|
||||||
Changes in 2n revision:
|
|
||||||
Much easier to manage more than one DOMAIN.TLD (future proof).
|
|
||||||
Updated configuration as it seemed that the previous one was based on old software.
|
|
||||||
|
|
||||||
So, here is the thing:
|
|
||||||
### With a script
|
|
||||||
Fully automatic script: (single domain)
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/polytan02/yunohost_auto_config_basic
|
|
||||||
cd yunohost_auto_config_basic
|
|
||||||
sudo ./5_opendkim.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Manually
|
|
||||||
We start by installing the right software:
|
|
||||||
```bash
|
|
||||||
sudo aptitude install opendkim opendkim-tools
|
|
||||||
```
|
|
||||||
|
|
||||||
Then we configure opendkim
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed in the text file:
|
|
||||||
```bash
|
|
||||||
AutoRestart Yes
|
|
||||||
AutoRestartRate 10/1h
|
|
||||||
UMask 022
|
|
||||||
Syslog yes
|
|
||||||
SyslogSuccess Yes
|
|
||||||
LogWhy Yes
|
|
||||||
|
|
||||||
Canonicalization relaxed/simple
|
|
||||||
|
|
||||||
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
|
|
||||||
InternalHosts refile:/etc/opendkim/TrustedHosts
|
|
||||||
KeyTable refile:/etc/opendkim/KeyTable
|
|
||||||
SigningTable refile:/etc/opendkim/SigningTable
|
|
||||||
|
|
||||||
Mode sv
|
|
||||||
PidFile /var/run/opendkim/opendkim.pid
|
|
||||||
SignatureAlgorithm rsa-sha256
|
|
||||||
|
|
||||||
UserID opendkim:opendkim
|
|
||||||
|
|
||||||
Socket inet:8891@127.0.0.1
|
|
||||||
|
|
||||||
Selector mail
|
|
||||||
```
|
|
||||||
|
|
||||||
Connect the milter to Postfix:
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/default/opendkim
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed in the text file:
|
|
||||||
```bash
|
|
||||||
SOCKET="inet:8891@localhost"
|
|
||||||
```
|
|
||||||
|
|
||||||
Configure Postfix to use this milter:
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/postfix/main.cf
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed **at the end** in the text file:
|
|
||||||
```bash
|
|
||||||
# OpenDKIM milter
|
|
||||||
|
|
||||||
milter_protocol = 2
|
|
||||||
milter_default_action = accept
|
|
||||||
smtpd_milters = inet:127.0.0.1:8891
|
|
||||||
non_smtpd_milters = inet:127.0.0.1:8891
|
|
||||||
```
|
|
||||||
|
|
||||||
Create a directory structure that will hold the trusted hosts, key tables, signing tables and crypto keys:
|
|
||||||
```bash
|
|
||||||
sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Specify trusted hosts:
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/TrustedHosts
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed in the text file:
|
|
||||||
```bash
|
|
||||||
127.0.0.1
|
|
||||||
localhost
|
|
||||||
192.168.0.1/24
|
|
||||||
*.DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Create a key table:
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/KeyTable
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed in the text file: be very careful, it needs to be on a **single line** for each domain.
|
|
||||||
```bash
|
|
||||||
mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private
|
|
||||||
```
|
|
||||||
|
|
||||||
Create a signing table:
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/SigningTable
|
|
||||||
```
|
|
||||||
|
|
||||||
Text to be placed in the text file:
|
|
||||||
```bash
|
|
||||||
*@DOMAIN.TLD mail._domainkey.DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Now we generate the keys! smile
|
|
||||||
```bash
|
|
||||||
sudo cd /etc/opendkim/keys/DOMAIN.TLD
|
|
||||||
sudo opendkim-genkey -s mail -d DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Output the DKIM DNS line to the terminal. Then, we install it on our DNS server. My ZONE file looks like this. (Be very careful with the formatting, the "p=...." needs to be in a single line.)
|
|
||||||
```bash
|
|
||||||
cat mail.txt
|
|
||||||
|
|
||||||
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
And we don't forget to put the right rights otherwise opendkim will get grumpy...
|
|
||||||
```bash
|
|
||||||
chown -Rv opendkim:opendkim /etc/opendkim*
|
|
||||||
```
|
|
||||||
|
|
||||||
And finally, we restart everything:
|
|
||||||
```bash
|
|
||||||
sudo service opendkim restart
|
|
||||||
sudo service postfix restart
|
|
||||||
```
|
|
||||||
|
|
||||||
To test if it is all working well (don't forget that the DNS propagation can take a bit of take…) you can simply go to [mail-tester.com](http://www.mail-tester.com) and send an e-mail to the address indicated. Then follow the link and the result will appear.
|
|
||||||
|
|
||||||
# SPF
|
|
||||||
Lastly, don't forget to add a SPF key in your [DNS zone](/dns_config_en) such as:
|
|
||||||
```bash
|
|
||||||
DOMAIN.TLD 300 TXT "v=spf1 a:DOMAIN.TLD ip4:<server public IPv4> ip6:<server public IPv6> mx ?all"
|
|
||||||
```
|
|
||||||
|
|
||||||
As reminder, the SPF field shows that the only machine using the IP address shows in your DNS zone are authorized to send emails.
|
|
||||||
If you don't have IPv6 on your email server, simply delete le ip6:<...> section
|
|
171
dkim_fr.md
171
dkim_fr.md
|
@ -1,171 +0,0 @@
|
||||||
# DKIM
|
|
||||||
|
|
||||||
<div class="alert alert-danger">Cette page n’est plus à jour. Le DKIM est a présent intégré par défaut dans YunoHost avec [Rspamd](https://rspamd.com)/rmilter.
|
|
||||||
Il suffit désormais de créer une zone DNS en s'inspirant du fichier /etc/dkim/yourdomainname.tld.mail.txt</div>
|
|
||||||
|
|
||||||
Le protocole SMTP ne prévoit pas de mécanisme de vérification de l’expéditeur. Il est donc possible d’envoyer un courrier avec une adresse d’expéditeur factice ou usurpée. SPF et DKIM sont deux mécanismes d’authentification de l’expéditeur d’un email.
|
|
||||||
|
|
||||||
#### Notes :
|
|
||||||
|
|
||||||
* Ceci est la deuxième version de ce travail en cours concernant l’activation de [DKIM](https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail) et [SPF](https://fr.wikipedia.org/wiki/Sender_Policy_Framework) dans YunoHost.
|
|
||||||
* Le DKIM et le SPF empêchent le fait que des courriels puissent être envoyés avec votre nom de domaine à partir d’un autre serveur que le serveur légitime. Ceci évite le spam.
|
|
||||||
* En attendant que tout ceci soit intégré nativement dans YunoHost, cela nécessitera une modification de la configuration de Postfix dans `/etc/postfix/main.cf`.
|
|
||||||
* Pour fonctionner correctement, DKIM nécessite une modification de votre [zone DNS](/dns_config_fr). N’oubliez pas que la propagation de l’information DNS une fois modifiée peut prendre jusqu’à 24h !
|
|
||||||
|
|
||||||
#### Sources :
|
|
||||||
* Ce document a été initialement basé sur : http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ de Drew Crawford.
|
|
||||||
* Cette 2e révision s’appuie beaucoup sur : https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin
|
|
||||||
|
|
||||||
Dans la suite de ce document, replacez `DOMAIN.TLD` par votre propre nom de domaine.
|
|
||||||
|
|
||||||
Changement dans la 2de révision :
|
|
||||||
|
|
||||||
* La configuration s’adapte très facilement à plusieurs noms de domaines simultanés.
|
|
||||||
* Mise à jour des paramètres de configuration avec la dernière version de OpenDKIM disponible dans Debian 7.
|
|
||||||
|
|
||||||
Rentrons maintenant dans le cœur du sujet :
|
|
||||||
### Avec un script
|
|
||||||
Utiliser un script tout fait et répondez aux questions :
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/polytan02/yunohost_auto_config_basic
|
|
||||||
cd yunohost_auto_config_basic
|
|
||||||
sudo ./5_opendkim.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### À la main
|
|
||||||
On commence par installer les logiciels :
|
|
||||||
```bash
|
|
||||||
sudo aptitude install opendkim opendkim-tools
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite on configure openDKIM :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
Texte à insérer dans le document :
|
|
||||||
```bash
|
|
||||||
AutoRestart Yes
|
|
||||||
AutoRestartRate 10/1h
|
|
||||||
UMask 022
|
|
||||||
Syslog yes
|
|
||||||
SyslogSuccess Yes
|
|
||||||
LogWhy Yes
|
|
||||||
|
|
||||||
Canonicalization relaxed/simple
|
|
||||||
|
|
||||||
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
|
|
||||||
InternalHosts refile:/etc/opendkim/TrustedHosts
|
|
||||||
KeyTable refile:/etc/opendkim/KeyTable
|
|
||||||
SigningTable refile:/etc/opendkim/SigningTable
|
|
||||||
|
|
||||||
Mode sv
|
|
||||||
PidFile /var/run/opendkim/opendkim.pid
|
|
||||||
SignatureAlgorithm rsa-sha256
|
|
||||||
|
|
||||||
UserID opendkim:opendkim
|
|
||||||
|
|
||||||
Socket inet:8891@127.0.0.1
|
|
||||||
|
|
||||||
Selector mail
|
|
||||||
```
|
|
||||||
|
|
||||||
On connecte ensuite le milter à Postfix :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/default/opendkim
|
|
||||||
```
|
|
||||||
|
|
||||||
Texte à insérer dans le document :
|
|
||||||
```bash
|
|
||||||
SOCKET="inet:8891@localhost"
|
|
||||||
```
|
|
||||||
|
|
||||||
Configurer Postfix pour utiliser ce milter :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/postfix/main.cf
|
|
||||||
```
|
|
||||||
|
|
||||||
Texte à insérer à la fin du document :
|
|
||||||
```bash
|
|
||||||
# OpenDKIM milter
|
|
||||||
milter_protocol = 2
|
|
||||||
milter_default_action = accept
|
|
||||||
smtpd_milters = inet:127.0.0.1:8891
|
|
||||||
non_smtpd_milters = inet:127.0.0.1:8891
|
|
||||||
```
|
|
||||||
|
|
||||||
Créer la structure de dossiers qui contiendra la clé, les hôtes connues et quelques tableaux de données :
|
|
||||||
```bash
|
|
||||||
sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
On précise les hôtes de confiance :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/TrustedHosts
|
|
||||||
```
|
|
||||||
|
|
||||||
Texte à insérer dans le document :
|
|
||||||
```bash
|
|
||||||
127.0.0.1
|
|
||||||
localhost
|
|
||||||
192.168.0.1/24
|
|
||||||
*.DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Créer le tableau des clés :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/KeyTable
|
|
||||||
```
|
|
||||||
|
|
||||||
(Texte à insérer dans le document : faites très attention, ça doit rester ** sur une seule ligne ** pour chaque nom de domaine)
|
|
||||||
mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private
|
|
||||||
|
|
||||||
Créer un tableau des signatures :
|
|
||||||
```bash
|
|
||||||
sudo nano /etc/opendkim/SigningTable
|
|
||||||
```
|
|
||||||
|
|
||||||
Texte à insérer dans le document :
|
|
||||||
```bash
|
|
||||||
*@DOMAIN.TLD mail._domainkey.DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Maintenant on peut générer nos clés !
|
|
||||||
```bash
|
|
||||||
sudo cd /etc/opendkim/keys/DOMAIN.TLD
|
|
||||||
sudo opendkim-genkey -s mail -d DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
On affiche les paramètres DNS de DKIM générés par opendkim dans le terminal.
|
|
||||||
Ensuite, on installera la clé DKIM dans notre DNS. Ma zone DNS ressemble à l’exemple ci-dessous.
|
|
||||||
(Faites très attention à la casse, le "p=...." doit rester sur une seule ligne dans le DNS et pas sur plusieurs, sinon cela ne sera pas accepté ni reconnu)
|
|
||||||
```bash
|
|
||||||
cat mail.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
Et surtout, on n’oublie pas de donner les bons droits d’accès à opendkim aux fichiers créés par root...
|
|
||||||
```bash
|
|
||||||
chown -Rv opendkim:opendkim /etc/opendkim*
|
|
||||||
```
|
|
||||||
|
|
||||||
Et enfin, on redémarre le tout :
|
|
||||||
```bash
|
|
||||||
sudo service opendkim restart
|
|
||||||
sudo service postfix restart
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour tester que tout fonctionne bien (n’oubliez pas que la propagation DNS peut prendre jusqu’à 24h...) vous pouvez tout simplement vous rendre sur [mail-tester.com](http://www.mail-tester.com/), envoyer un courriel à l’adresse indiquée et cliquer pour voir le résultat.
|
|
||||||
|
|
||||||
# SPF
|
|
||||||
Enfin, n’oubliez pas d’ajouter une clé SPF dans votre [zone DNS](/dns_config_fr) (ou un champ TXT si SPF n’est pas disponible) :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
DOMAIN.TLD 1800 TXT "v=spf1 a:DOMAIN.TLD ip4:<IPv4 publique du serveur> ip6:<IPv6 publique> mx ?all"
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour rappel, le champ SPF indique que seule la machine utilisant l’adresse IP indiquée dans votre zone DNS est autorisée à envoyer des courriels.
|
|
||||||
Si vous n’avez pas d’IPv6 sur votre serveur, supprimez simplement la section ip6:<…>
|
|
9
dns.md
9
dns.md
|
@ -22,17 +22,18 @@ There are also different **types** of DNS records, which means that a domain can
|
||||||
|
|
||||||
You have several choices here. Note that you can mix and match solutions if you have multiple domains: for example, you can have `my-server.nohost.me` using solution **1.**, and `my-server.org` using solution **2.**, both leading to the same Yunohost server.
|
You have several choices here. Note that you can mix and match solutions if you have multiple domains: for example, you can have `my-server.nohost.me` using solution **1.**, and `my-server.org` using solution **2.**, both leading to the same Yunohost server.
|
||||||
|
|
||||||
1. You can use YunoHost's DNS service, which will automatically configure your DNS for you. You must choose a domain that ends with `.nohost.me` or `noho.st` for this, which may be inconvenient for you (you would then only be able to use an email address like `john@my-server.noho.st`).
|
1. You can use YunoHost's DNS service, which will automatically configure your DNS for you. You must choose a domain that ends with `.nohost.me`, `.noho.st` or `.ynh.fr` for this, which may be inconvenient for you (you would then only be able to use an email address like `john@my-server.noho.st`).
|
||||||
**This is the recommended option if you are just starting out with self-hosting.**
|
|
||||||
|
**This is the recommended option if you are just starting out with self-hosting.**
|
||||||
|
|
||||||
2. You can use the DNS service offered by your **registrar** (Gandi, NameCheap, BookMyName or others) to configure your domain name. Here is the [standard DNS configuration](/dns_config). The DNS service of your router can also be used, more info on [how to setup a local domain](dns_local_network).
|
2. You can use the DNS service offered by your **registrar** (Gandi, NameCheap, BookMyName or others) to configure your domain name. Here is the [standard DNS configuration](/dns_config). The DNS service of your router can also be used, more info on [how to setup a local domain](dns_local_network).
|
||||||
You can also check out these pages for specific [registrar](/registrar_en) documentation: [OVH](https://www.ovh.co.uk/index.xml), [Gandi](http://gandi.net), [NameCheap](http://namecheap.com) or [BookMyName](http://bookmyname.com).
|
You can also check out these pages for specific [registrar](/registrar_en) documentation: [OVH](https://www.ovh.co.uk/index.xml), [Gandi](http://gandi.net), [NameCheap](http://namecheap.com) or [BookMyName](http://bookmyname.com).
|
||||||
|
|
||||||
**Warning**: If you choose this option, you will have more configuration possibilities, but nothing will be done for you. For example, if you want to use `webmail.my-server.org`, you must add it manually to the DNS records with your registrar.
|
**Warning**: If you choose this option, you will have more configuration possibilities, but nothing will be done for you. For example, if you want to use `webmail.my-server.org`, you must add it manually to the DNS records with your registrar.
|
||||||
|
|
||||||
3. Your YunoHost instance has its own DNS service, which means it will automatically configure its own DNS records, and that you can leave the setup to the instance itself. To do this, you must explain to your **registrar** that your YunoHost instance is the authoritative DNS server for your domain name.
|
3. Your YunoHost instance has its own DNS service, which means it will automatically configure its own DNS records, and that you can leave the setup to the instance itself. To do this, you must explain to your **registrar** that your YunoHost instance is the authoritative DNS server for your domain name.
|
||||||
|
|
||||||
<br>**Warning**: If you choose this option, all configuration options will be done automatically, you will retain a good deal of flexibility, but if your server gets knocked offline you will run into many problems. **Choose this only if you are certain.**
|
**Warning**: If you choose this option, all configuration options will be done automatically, you will retain a good deal of flexibility, but if your server gets knocked offline you will run into many problems. **Choose this only if you are certain.**
|
||||||
|
|
||||||
4. Once your DNS service is running, your server can use it but it needs to be configured, this is the [DNS resolver](/dns_resolver_en).
|
4. Once your DNS service is running, your server can use it but it needs to be configured, this is the [DNS resolver](/dns_resolver_en).
|
||||||
|
|
||||||
|
|
126
dns_config.md
126
dns_config.md
|
@ -1,64 +1,82 @@
|
||||||
## DNS zone configuration
|
# DNS zone configuration
|
||||||
|
|
||||||
Sample DNS zone configuration for `domain.tld` domain name:
|
DNS (domain name system) is a system that converts human-readable addresses
|
||||||
|
(domain names) into machine-understandable addresses (IP). For your server to be
|
||||||
|
easily accessible by human beings, and for some services like mail to work
|
||||||
|
properly, DNS must be configured.
|
||||||
|
|
||||||
#### Use yunohost command to generate my DNS ZONE
|
If you're using a nohost.me / noho.st domain, the configuration should be
|
||||||
|
performed automatically. If you're using your own domain name (e.g. bought via
|
||||||
|
a registrar), you should manually configure your domain on your registrar's
|
||||||
|
interface.
|
||||||
|
|
||||||
|
## Recommended DNS configuration
|
||||||
|
|
||||||
|
YunoHost provides a recommended DNS configuration, available via :
|
||||||
|
- the webadmin, in Domain > your.domain.tld > DNS configuration ;
|
||||||
|
- or the command line, `yunohost domain dns-conf your.domain.tld`
|
||||||
|
|
||||||
|
For specific needs or specific setups, and if you know what you're doing, you
|
||||||
|
might want or have to tweak these or add additional ones (e.g. to handle
|
||||||
|
subdomains).
|
||||||
|
|
||||||
|
The recommended configuration typically looks like this :
|
||||||
|
|
||||||
Connect to your server using yunohost and run the following as root
|
|
||||||
```bash
|
```bash
|
||||||
yunohost domain dns-conf domain.tld
|
#
|
||||||
|
# Basic ipv4/ipv6 records
|
||||||
|
#
|
||||||
|
@ 3600 IN A 111.222.33.44
|
||||||
|
* 3600 IN A 111.222.33.44
|
||||||
|
|
||||||
|
# (If your server is IPv6 capable, there are some AAAA records)
|
||||||
|
@ 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111
|
||||||
|
* 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111
|
||||||
|
|
||||||
|
#
|
||||||
|
# XMPP
|
||||||
|
#
|
||||||
|
_xmpp-client._tcp 3600 IN SRV 0 5 5222 your.domain.tld.
|
||||||
|
_xmpp-server._tcp 3600 IN SRV 0 5 5269 your.domain.tld.
|
||||||
|
muc 3600 IN CNAME @
|
||||||
|
pubsub 3600 IN CNAME @
|
||||||
|
vjud 3600 IN CNAME @
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mail (MX, SPF, DKIM and DMARC)
|
||||||
|
#
|
||||||
|
@ 3600 IN MX 10 your.domain.tld.
|
||||||
|
@ 3600 IN TXT "v=spf1 a mx ip4:111.222.33.44 -all"
|
||||||
|
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=someHuuuuuuugeKey"
|
||||||
|
_dmarc 3600 IN TXT "v=DMARC1; p=none"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Redirection from the domain name to the IP address
|
Though it might be easier to understand it if displayed like this :
|
||||||
```bash
|
|
||||||
@ 1800 IN A 111.222.333.444 # (Minimal) IPv4
|
|
||||||
@ 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 # IPv6
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Redirection from the domain name and subdomains to the IP address
|
|
||||||
```bash
|
|
||||||
* 1800 IN A 111.222.333.444 # Wildcard: *.domain.tld and domain.tld redirection to the IP address
|
|
||||||
* 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Subdomains
|
| Type | Name | Value |
|
||||||
```bash
|
| :-----: | :--------------------: | :--------------------------------------------------: |
|
||||||
www 1800 IN CNAME @ # accesible at www.domain.tld
|
| **A** | **@** | `111.222.333.444` (your IPv4) |
|
||||||
```
|
| A | * | `111.222.333.444` (your IPv4) |
|
||||||
|
| AAAA | @ | `2222:444:8888:3333:bbbb:5555:3333:1111` (your IPv6) |
|
||||||
|
| AAAA | * | `2222:444:8888:3333:bbbb:5555:3333:1111` (your IPv6) |
|
||||||
|
| **SRV** | **_xmpp-client._tcp** | `0 5 5222 your.domain.tld.` |
|
||||||
|
| **SRV** | **_xmpp-server._tcp** | `0 5 5269 your.domain.tld.` |
|
||||||
|
| CNAME | muc | `@` |
|
||||||
|
| CNAME | pubsub | `@` |
|
||||||
|
| CNAME | vjud | `@` |
|
||||||
|
| **MX** | **@** | `your.domain.tld.` (and priority: 10) |
|
||||||
|
| TXT | @ | `"v=spf1 a mx ip4:111.222.33.44 -all"` |
|
||||||
|
| TXT | mail._domainkey | `"v=DKIM1; k=rsa; p=someHuuuuuuugeKey"` |
|
||||||
|
| TXT | _dmarc | `"v=DMARC1; p=none"` |
|
||||||
|
|
||||||
#### XMPP
|
#### A few notes about this table
|
||||||
```bash
|
|
||||||
_xmpp-client._tcp 1800 IN SRV 0 5 5222 domain.tld. # (Minimal) clients connection
|
|
||||||
_xmpp-server._tcp 1800 IN SRV 0 5 5269 domain.tld. # (Minimal) servers connection
|
|
||||||
|
|
||||||
muc 1800 IN CNAME @ # multi-user chat rooms at muc.domain.tld
|
- Not all these lines are absolutely necessary. For a minimal setup, you only need the records in bold.
|
||||||
anonymous 1800 IN CNAME @ # connection without account at `anonymous.domain.tld`
|
- The dot at the end of `your.domain.tld.` is important ;) ;
|
||||||
bosh 1800 CNAME @ # BOSH
|
- `@` corresponds to `your.domain.tld`, and e.g. `muc` corresponds to `muc.your.domain.tld` ;
|
||||||
_xmppconnect 1800 TXT "_xmpp-client-xbosh=https://bosh.domain.tld:5281/http-bind"
|
- These are example values ! See your generated conf for the actual values you should use ;
|
||||||
pubsub 1800 IN CNAME @
|
- We recommend a [TTL](https://en.wikipedia.org/wiki/Time_to_live#DNS_records) of 3600 (1 hour). But you can use something else if you
|
||||||
vjud 1800 IN CNAME @
|
know what you're doing ;
|
||||||
```
|
- Don't put an IPv6 record if you're not sure IPv6 really works on your server !
|
||||||
|
You might have issues with Let's Encrypt if it doesn't.
|
||||||
#### Email
|
|
||||||
```bash
|
|
||||||
@ 1800 IN MX 10 domain.tld. # (Minimal)
|
|
||||||
@ 1800 IN TXT "v=spf1 a mx -all"
|
|
||||||
```
|
|
||||||
|
|
||||||
You should also consult the [DKIM documentation](#/dkim). DKIM allows yours mails not to be considered by spam by other mail service. In fact DKIM ask you to add an entry in your zone.
|
|
||||||
|
|
||||||
#### Set up
|
|
||||||
Replace:
|
|
||||||
- "`domain.tld`" with your own domain preserving the dot at the end.
|
|
||||||
- IP samples values with your server IP addresses:
|
|
||||||
* `111.222.333.444`: [IPv4](http://ip.yunohost.org/).
|
|
||||||
* `2001:AABB:CCDD:EEFF:1122:3344:5566:7788`: [IPv6](http://ip6.yunohost.org/).
|
|
||||||
|
|
||||||
DNS lines for subdomains, XMPP and email does not work without a redirection from the domain name to the IP address (one line is enough) because they depend on it.
|
|
||||||
|
|
||||||
<div class="alert alert-info"><b>To begin:</b> lines with "(Minimal)" are the minimal required DNS entries to make redirection work from the domain name to the IP adress, XMPP and email.</div>
|
|
||||||
|
|
||||||
<div class="alert alert-warning"><b>Warning:</b> <b>@</b> is the default domain name currently defined, some registrar (like OVH) does not accept it, so replace @ by your domain name (domain.tld**.**) with a dot at the end.</div>
|
|
||||||
|
|
||||||
#### Time to live
|
|
||||||
All DNS lines above have `1800` value (30 minutes). It corresponds to [Time to live (TTL)](https://en.wikipedia.org/wiki/Time_to_live#DNS_records) which represents and indicate time, in seconds, during which the DNS line can be kept in the cache. After this time, the information must me considered obsolete and must be updated.
|
|
||||||
|
|
130
dns_config_fr.md
130
dns_config_fr.md
|
@ -1,66 +1,82 @@
|
||||||
## Configuration de la zone DNS
|
# Configuration de la zone DNS
|
||||||
|
|
||||||
Exemple de configuration des entrées de la zone DNS pour le nom de domaine `domain.tld` :
|
DNS (système de nom de domaine) est un élément essentiel d'Internet qui permet
|
||||||
|
de convertir des adresses compréhensible par les êtres humains (les noms de
|
||||||
|
domaines) en adresses compréhensibles par la machine (les IPs). Pour que
|
||||||
|
votre serveur soit facilement accessible par d'autres êtres humains, et pour
|
||||||
|
que certains services comme le mail fonctionnent correctement, il est nécessaire
|
||||||
|
de configurer la zone DNS de votre domaine.
|
||||||
|
|
||||||
#### Utiliser la commande yunohost pour générer ma zone DNS
|
Si vous utilisez un domaine en nohost.me / noho.st domain, la configuration
|
||||||
|
devrait être faite automatiquement. Si vous utilisez votre propre nom de domaine
|
||||||
|
(e.g. acheté chez un registrar), il vous faut configurer manuellement votre
|
||||||
|
domaine via l'interface de votre registrar.
|
||||||
|
|
||||||
|
## Configuration DNS recommandée
|
||||||
|
|
||||||
|
YunoHost fournit une configuration DNS recommandée, accessible via :
|
||||||
|
- la webadmin, dans Domaines > votre.domain.tld > Configuration DNS ;
|
||||||
|
- ou la ligne de commande, `yunohost domain dns-conf votre.domaine.tld`
|
||||||
|
|
||||||
|
Pour certains besoins ou installations particulières, et si vous savez ce que
|
||||||
|
vous faites, il vous faudra peut-être modifier cette recommandation ou ajouter
|
||||||
|
d'autres enregistrements (e.g. pour gérer des sous-domaines).
|
||||||
|
|
||||||
|
La configuration recommandée ressemble typiquement à :
|
||||||
|
|
||||||
Connecter vous à votre serveur et lancer la commande suivante.
|
|
||||||
```bash
|
```bash
|
||||||
yunohost domain dns-conf domain.tld
|
#
|
||||||
|
# Enregistrements IPv4/IPv6 basiques
|
||||||
|
#
|
||||||
|
@ 3600 IN A 111.222.33.44
|
||||||
|
* 3600 IN A 111.222.33.44
|
||||||
|
|
||||||
|
# (Si votre serveur supporter l'IPv6, il a des enregistrements AAAA)
|
||||||
|
@ 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111
|
||||||
|
* 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111
|
||||||
|
|
||||||
|
#
|
||||||
|
# XMPP
|
||||||
|
#
|
||||||
|
_xmpp-client._tcp 3600 IN SRV 0 5 5222 votre.domaine.tld.
|
||||||
|
_xmpp-server._tcp 3600 IN SRV 0 5 5269 votre.domaine.tld.
|
||||||
|
muc 3600 IN CNAME @
|
||||||
|
pubsub 3600 IN CNAME @
|
||||||
|
vjud 3600 IN CNAME @
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mail (MX, SPF, DKIM et DMARC)
|
||||||
|
#
|
||||||
|
@ 3600 IN MX 10 votre.domaine.tld.
|
||||||
|
@ 3600 IN TXT "v=spf1 a mx ip4:111.222.33.44 -all"
|
||||||
|
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=uneGrannnnndeClef"
|
||||||
|
_dmarc 3600 IN TXT "v=DMARC1; p=none"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Redirection du nom de domaine vers l’adresse IP
|
Mais il est peut-être plus facile de la comprendre si affichée de la façon
|
||||||
```bash
|
suivante :
|
||||||
@ 1800 IN A 111.222.333.444 # (Minimum) IPv4
|
|
||||||
@ 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 # IPv6
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Redirection du nom de domaine et de tous les sous-domaines vers l’adresse IP
|
| Type | Nom | Valeur |
|
||||||
```bash
|
| :-----: | :--------------------: | :----------------------------------------------------: |
|
||||||
* 1800 IN A 111.222.333.444 # Wildcard : *.domain.tld et domain.tld pointent vers l’adresse IP.
|
| **A** | **@** | `111.222.333.444` (votre IPv4) |
|
||||||
* 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788
|
| A | * | `111.222.333.444` (votre IPv4) |
|
||||||
```
|
| AAAA | @ | `2222:444:8888:3333:bbbb:5555:3333:1111` (votre IPv6) |
|
||||||
|
| AAAA | * | `2222:444:8888:3333:bbbb:5555:3333:1111` (votre IPv6) |
|
||||||
|
| **SRV** | **_xmpp-client._tcp** | `0 5 5222 votre.domaine.tld.` |
|
||||||
|
| **SRV** | **_xmpp-server._tcp** | `0 5 5269 votre.domaine.tld.` |
|
||||||
|
| CNAME | muc | `@` |
|
||||||
|
| CNAME | pubsub | `@` |
|
||||||
|
| CNAME | vjud | `@` |
|
||||||
|
| **MX** | **@** | `votre.domaine.tld.` (et priorité: 10) |
|
||||||
|
| TXT | @ | `"v=spf1 a mx ip4:111.222.33.44 -all"` |
|
||||||
|
| TXT | mail._domainkey | `"v=DKIM1; k=rsa; p=uneGrannnndeClef"` |
|
||||||
|
| TXT | _dmarc | `"v=DMARC1; p=none"` |
|
||||||
|
|
||||||
#### Sous-domaines
|
#### Quelques notes à propos de cette table
|
||||||
```bash
|
|
||||||
www 1800 IN CNAME @ # accessible sur www.domain.tld
|
|
||||||
```
|
|
||||||
|
|
||||||
#### XMPP
|
- Tous ces enregistrements ne sont pas nécessaires. Pour une installation minimale, seuls les enregistrements en gras sont nécessaires.
|
||||||
```bash
|
- Le point à la fin de `votre.domaine.tld.` est important ;) ;
|
||||||
_xmpp-client._tcp 1800 IN SRV 0 5 5222 domain.tld. # (Minimum) connexions avec les clients
|
- `@` corresponds à `votre.domaine.tld`, et par ex. `muc` corresponds à `muc.votre.domaine.tld` ;
|
||||||
_xmpp-server._tcp 1800 IN SRV 0 5 5269 domain.tld. # (Minimum) connexions entre serveurs
|
- Les valeurs montrées sont des valeurs d'exemple ! Référez-vous à la configuration générée chez vous pour savoir quelles valeurs utiliser.
|
||||||
|
- Nous recommandons un [TTL](https://fr.wikipedia.org/wiki/Time_to_Live#Le_Time_to_Live_dans_le_DNS) de 3600 (1 heure). Mais vous pouvez utiliser une autre valeur si vous savez ce que vous faîtes ;
|
||||||
muc 1800 IN CNAME @ # salons de discussion sur `muc.domain.tld`
|
- Ne mettez pas d'enregistrement IPv6 si vous n'êtes pas certains que l'IPv6 fonctionne sur votre serveur ! Vous aurez des problèmes avec Let's Encrypt si ce n'est pas le cas.
|
||||||
anonymous 1800 IN CNAME @ # connexion sans compte sur `anonymous.domain.tld`
|
|
||||||
bosh 1800 CNAME @ # BOSH
|
|
||||||
_xmppconnect 1800 TXT "_xmpp-client-xbosh=https://bosh.domain.tld:5281/http-bind"
|
|
||||||
pubsub 1800 IN CNAME @
|
|
||||||
vjud 1800 IN CNAME @
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Email
|
|
||||||
```bash
|
|
||||||
@ 1800 IN MX 10 domain.tld. # (Minimum)
|
|
||||||
@ 1800 IN TXT "v=spf1 a mx -all"
|
|
||||||
```
|
|
||||||
<br />
|
|
||||||
|
|
||||||
Vous devriez aussi consulter [la documentation de DKIM](#/dkim_fr). DKIM permet d'éviter que vos mails soit considérés comme SPAM et DKIM nécessite une entrée spécifique dans votre zone DNS.
|
|
||||||
|
|
||||||
#### Mise en place
|
|
||||||
Remplacez :
|
|
||||||
* « `domain.tld` » par votre propre nom de domaine en conservant le point à la fin.
|
|
||||||
* les adresses IP d’exemple par celles de votre serveur :
|
|
||||||
* `111.222.333.444` : [IPv4](http://ip.yunohost.org/).
|
|
||||||
* `2001:AABB:CCDD:EEFF:1122:3344:5566:7788` : [IPv6](http://ip6.yunohost.org/).
|
|
||||||
|
|
||||||
Les entrées DNS sous domaines, XMPP et email ne fonctionnent pas sans une redirection du nom de domaine vers l’adresse IP (une ligne est suffisante) étant donné qu’elles en sont dépendantes.
|
|
||||||
|
|
||||||
<div class="alert alert-info">**Pour débuter :** les lignes avec « (Minimum) » sont les entrées DNS minimales requises pour avoir une redirection du nom de domaine vers l’adresse IP, XMPP et le courrier électronique qui fonctionnent.</div>
|
|
||||||
|
|
||||||
<div class="alert alert-warning">**Attention :** le **@** représente le nom de domaine par défaut que l’on est en train de définir, certains bureaux d’enregistrement ne l’acceptent pas (ex : OVH). Il faut donc remplacer le « @ » par votre nom de domaine (domain.tld**.**) sans oublier un point à la fin.</div>
|
|
||||||
|
|
||||||
#### Time to live
|
|
||||||
Toutes les entrées DNS ci-dessus ont la valeur `1800` (30 minutes). Elle correspond au
|
|
||||||
[Time to live (TTL)](https://fr.wikipedia.org/wiki/Time_to_Live#Le_Time_to_Live_dans_le_DNS) qui représente et indique le temps, en secondes, durant lequel l’entrée DNS peut être conservée en cache. Passé ce délai, l’information doit être considérée comme obsolète et doit être mise à jour.
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ La configuration des DNS est une étape cruciale pour que votre serveur soit acc
|
||||||
|
|
||||||
### Qu’est-ce que c’est ?
|
### Qu’est-ce que c’est ?
|
||||||
|
|
||||||
**N’hésitez à pas regarder la très bonne conférence de Stéphane Bortzmeyer :
|
**N’hésitez pas à regarder la très bonne conférence de Stéphane Bortzmeyer :
|
||||||
http://www.iletaitunefoisinternet.fr/dns-bortzmeyer/**
|
http://www.iletaitunefoisinternet.fr/dns-bortzmeyer/**
|
||||||
|
|
||||||
DNS signifie « Domain Name Server » en anglais, et est souvent employé pour désigner la configuration de vos noms de domaine. Vos noms de domaines doivent en effet pointer vers quelque chose (en général une adresse IP).
|
DNS signifie « Domain Name Server » en anglais, et est souvent employé pour désigner la configuration de vos noms de domaine. Vos noms de domaines doivent en effet pointer vers quelque chose (en général une adresse IP).
|
||||||
|
@ -27,7 +27,7 @@ Il existe également des **types** d’enregistrement DNS, ce qui veut dire qu
|
||||||
|
|
||||||
Plusieurs choix s’offrent à vous. Notez que vous pouvez cumuler ces solutions si vous possédez plusieurs domaines : par exemple vous pouvez avoir `mon-serveur.nohost.me` en utilisant la solution **1.**, et `mon-serveur.org` en utilisant la solution **2.**, redirigeant vers le même serveur YunoHost.
|
Plusieurs choix s’offrent à vous. Notez que vous pouvez cumuler ces solutions si vous possédez plusieurs domaines : par exemple vous pouvez avoir `mon-serveur.nohost.me` en utilisant la solution **1.**, et `mon-serveur.org` en utilisant la solution **2.**, redirigeant vers le même serveur YunoHost.
|
||||||
|
|
||||||
1. Vous pouvez utiliser le service de DNS de YunoHost, qui s’occupera de configurer tout seul les DNS de votre instance YunoHost. Vous devrez en revanche choisir un domaine se terminant par `.nohost.me` ou `.noho.st`, ce qui peut être inconvenant (vous aurez alors des adresses email telles que `jean@mon-serveur.noho.st`).
|
1. Vous pouvez utiliser le service de DNS de YunoHost, qui s’occupera de configurer tout seul les DNS de votre instance YunoHost. Vous devrez en revanche choisir un domaine se terminant par `.nohost.me`, `.noho.st` ou `.ynh.fr`, ce qui peut être inconvenant (vous aurez alors des adresses email telles que `jean@mon-serveur.noho.st`).
|
||||||
**C’est la méthode recommandée si vous débutez.**
|
**C’est la méthode recommandée si vous débutez.**
|
||||||
|
|
||||||
2. Vous pouvez utiliser le service de DNS de votre **registrar** (Gandi, OVH, BookMyName ou autre) pour configurer vos noms de domaine. Voici la [configuration DNS standard](/dns_config_fr). Il est aussi possible d'utiliser une redirection DNS locale, plus d'infos sur comment [Accéder à son serveur depuis le réseau local](/dns_local_network_fr).
|
2. Vous pouvez utiliser le service de DNS de votre **registrar** (Gandi, OVH, BookMyName ou autre) pour configurer vos noms de domaine. Voici la [configuration DNS standard](/dns_config_fr). Il est aussi possible d'utiliser une redirection DNS locale, plus d'infos sur comment [Accéder à son serveur depuis le réseau local](/dns_local_network_fr).
|
||||||
|
|
|
@ -19,7 +19,7 @@ You may retrieve your server private IP adress through different means:
|
||||||
|
|
||||||
## Configure DNS of Internet box or router
|
## Configure DNS of Internet box or router
|
||||||
|
|
||||||
The goal here is to create a network wide redirection handled by your router. The idea is to create a DNS redirection to your server's IP. You should access your router's configuration and look for DNS configuration, then add a redirection to your server's IP (e.g. redirect "yunohot.local" to 192.168.1.21).
|
The goal here is to create a network wide redirection handled by your router. The idea is to create a DNS redirection to your server's IP. You should access your router's configuration and look for DNS configuration, then add a redirection to your server's IP (e.g. redirect "yunohost.local" to 192.168.1.21).
|
||||||
|
|
||||||
### SFR Box
|
### SFR Box
|
||||||
If you haven't found your server private IP, you may find it using the SFR box admin panel:
|
If you haven't found your server private IP, you may find it using the SFR box admin panel:
|
||||||
|
|
|
@ -19,7 +19,7 @@ Vous pouvez retrouver l’adresse privée de votre serveur de différentes mani
|
||||||
|
|
||||||
## Configurer le DNS de la box ou du routeur
|
## Configurer le DNS de la box ou du routeur
|
||||||
|
|
||||||
L'idée ici est de créer une redirection qui sera active sur tout votre réseau. Le but est de créer une redirection DNS vers l'ip de votre serveur YunoHost dans votre box. Il faut donc accéder à l'interface de configuration de votre box et aux parametrages DNS, puis créer la redirection locale (par exemple, yunohost.local renvoi sur 192.168.21).
|
L'idée ici est de créer une redirection qui sera active sur tout votre réseau. Le but est de créer une redirection DNS vers l'ip de votre serveur YunoHost dans votre box. Il faut donc accéder à l'interface de configuration de votre box et aux paramétrages DNS, puis créer la redirection locale (par exemple, yunohost.local renvoi sur 192.168.21).
|
||||||
|
|
||||||
### Box SFR
|
### Box SFR
|
||||||
Si vous ne disposez toujours pas de l’adresse IP privée de votre serveur, vous pouvez la trouver sur l’interface de votre box SFR :
|
Si vous ne disposez toujours pas de l’adresse IP privée de votre serveur, vous pouvez la trouver sur l’interface de votre box SFR :
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# YunoHost DNS Resolver
|
# YunoHost DNS Resolver
|
||||||
|
|
||||||
|
+<div class="alert alert-danger">This page is deprecated / obsolete. Information it contains should be updated (or should be removed).</div>
|
||||||
|
|
||||||
### Presentation
|
### Presentation
|
||||||
YunoHost provide a DNS service for DNS name resolution. Usually, your server is not configured to use it, it's your ISP DNS. For instance, for the Free ISP with Freebox router the DNS resolver IP is `192.168.0.254`.
|
YunoHost provide a DNS service for DNS name resolution. Usually, your server is not configured to use it, it's your ISP DNS. For instance, for the Free ISP with Freebox router the DNS resolver IP is `192.168.0.254`.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# Résolveur DNS de YunoHost
|
# Résolveur DNS de YunoHost
|
||||||
|
|
||||||
|
<div class="alert alert-danger">Cette page est dépréciée / obsolète. Les informations présentées ont besoin d'être mise à jour (ou doivent être retirée).</div>
|
||||||
|
|
||||||
### Présentation
|
### Présentation
|
||||||
YunoHost est installé avec un service DNS pour la résolution des noms de domaine. En général, votre serveur n’est pas configuré, c’est celui de votre FAI.
|
YunoHost est installé avec un service DNS pour la résolution des noms de domaine. En général, votre serveur n’est pas configuré, c’est celui de votre FAI.
|
||||||
Par exemple pour une Freebox la résolution se fait par l’adresse `192.168.0.254`.
|
Par exemple pour une Freebox la résolution se fait par l’adresse `192.168.0.254`.
|
||||||
|
|
16
docker.md
16
docker.md
|
@ -2,8 +2,20 @@
|
||||||
|
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
<b>
|
<b>
|
||||||
This page isn't valid anymore, YunoHost 2.4 doesn't work anymore on Docker
|
Yunohost doesn't support Docker officially since issues with versions 2.4+.
|
||||||
because YunoHost requires systemdn and Docker has chosen to not support it (and
|
In question, YunoHost 2.4 doesn't work anymore on Docker
|
||||||
|
because YunoHost requires systemd and Docker has chosen to not support it natively (and
|
||||||
there are other problems link to the firewall and services).
|
there are other problems link to the firewall and services).
|
||||||
</b>
|
</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
## Community images
|
||||||
|
|
||||||
|
However, community images exist and are available on Docker Hub :
|
||||||
|
|
||||||
|
* AMD64 (classic)
|
||||||
|
* https://hub.docker.com/r/domainelibre/yunohost2/ (Yunohost v2.7)
|
||||||
|
* ARMV7 (raspberry pi 2/3 ...)
|
||||||
|
* https://hub.docker.com/r/domainelibre/yunohost2-arm/ (Yunohost v2.7)
|
||||||
|
* ARMV6 (raspberry pi 1)
|
||||||
|
* https://hub.docker.com/r/tuxalex/yunohost-armv6/
|
||||||
|
|
17
docker_fr.md
17
docker_fr.md
|
@ -2,9 +2,20 @@
|
||||||
|
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
<b>
|
<b>
|
||||||
Cette page n'est plus valide, YunoHost 2.4 ne marche PLUS sous Docker car
|
Yunohost ne supporte plus officiellement Docker depuis les problèmes rencontrés avec la version 2.4+.
|
||||||
YunoHost dépend désormait de systemd et que docker a décidé qu'ils ne le
|
En cause, YunoHost dépend désormait de systemd et docker a décidé qu'ils ne le
|
||||||
supporteraient pas (et il y a d'autres problèmes liés au firewall et aux
|
supporteraient pas nativement (et il y a d'autres problèmes liés au firewall et aux
|
||||||
services).
|
services).
|
||||||
</b>
|
</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
## Images communautaires
|
||||||
|
|
||||||
|
Cependant il existe des images communautaires disponibles sur Docker Hub :
|
||||||
|
|
||||||
|
* AMD64 (classique)
|
||||||
|
* https://hub.docker.com/r/domainelibre/yunohost2/ (Yunohost v2.7)
|
||||||
|
* ARMV7 (raspberry pi 2/3 ...)
|
||||||
|
* https://hub.docker.com/r/domainelibre/yunohost2-arm/ (Yunohost v2.7)
|
||||||
|
* ARMV6 (raspberry pi 1)
|
||||||
|
* https://hub.docker.com/r/tuxalex/yunohost-armv6/
|
||||||
|
|
14
docs.md
14
docs.md
|
@ -23,9 +23,11 @@ YunoHost's documentation has 3 different sections:
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row text-center" style="margin-top: 2em;">
|
* Project's life:
|
||||||
<div class="col col-md-5 col-md-offset-3">
|
* [Frequently asked questions](/faq_en)
|
||||||
<a class="btn btn-default btn-lg" href="/sitemap"><span class="glyphicon glyphicon-list"></span> Sitemap</a>
|
* [Project organization](/project_organization)
|
||||||
<p><small class="text-muted">List of all pages of the web site</small></p>
|
* [Blog](https://forum.yunohost.org/c/announcement)
|
||||||
</div>
|
* [Forum](https://forum.yunohost.org)
|
||||||
</div>
|
* [Chat rooms](/chat_rooms_en)
|
||||||
|
* [Communication](/communication_en)
|
||||||
|
* [Support / Help](/help)
|
||||||
|
|
33
docs_ar.md
Normal file
33
docs_ar.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#<div dir="auto">الدليل</div>
|
||||||
|
|
||||||
|
<p dir="rtl" class="lead">
|
||||||
|
دليل واي يونوهوست YunoHost يرتكز أساسًا على ثلاثة محاور :
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="row text-center">
|
||||||
|
|
||||||
|
<div dir="rtl" class="col col-md-4 col-md-offset-1">
|
||||||
|
<a class="btn btn-success btn-lg" href="/userdoc_fr"><span class="glyphicon glyphicon-user"></span> دليل المستخدم</a>
|
||||||
|
<p><small class="text-muted">كل ما يخص طريقة استخدام السيرفر يوميًا</small></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div dir="rtl" class="col col-md-4 col-md-offset-1">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/admindoc_fr"><span class="glyphicon glyphicon-lock"></span> دليل المدير</a>
|
||||||
|
<p><small class="text-muted">يتطرق إلى طريقة التنصيب و إدارة السيرفر و التطبيقات</small></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div dir="rtl" class="col col-md-5 col-md-offset-3">
|
||||||
|
<a class="btn btn-danger btn-lg" href="/contributordoc"><span class="glyphicon glyphicon-heart"></span> دليل المساهم</a>
|
||||||
|
<p><small class="text-muted">يحتوي على كافة المعلومات التي تخصنا و أسلوب عملنا و مساهمتنا</small></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
* Project's life:
|
||||||
|
* [Frequently asked questions](/faq_en)
|
||||||
|
* [Project organization](/project_organization)
|
||||||
|
* [Blog](https://forum.yunohost.org/c/announcement)
|
||||||
|
* [Forum](https://forum.yunohost.org)
|
||||||
|
* [Chat rooms](/chat_rooms_en)
|
||||||
|
* [Communication](/communication_en)
|
||||||
|
* [Support / Help](/help)
|
15
docs_fr.md
15
docs_fr.md
|
@ -23,10 +23,11 @@ La documentation de YunoHost s’articule autour de trois sections :
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row text-center" style="margin-top: 2em;">
|
* Vie du projet :
|
||||||
<div class="col col-md-5 col-md-offset-3">
|
* [Foire aux questions](/faq_fr)
|
||||||
<a class="btn btn-default btn-lg" href="/sitemap_fr"><span class="glyphicon glyphicon-list"></span> Plan du site</a>
|
- [Organisation du projet](project_organization_fr)
|
||||||
<p><small class="text-muted">Liste de toutes les pages du site</small></p>
|
* [Blog](https://forum.yunohost.org/c/announcement)
|
||||||
</div>
|
- [Forum](https://forum.yunohost.org)
|
||||||
|
- [Salons de discussions](/chat_rooms_fr)
|
||||||
</div>
|
* [Communication extérieure](/communication)
|
||||||
|
* [Support / Aide](/help_fr)
|
||||||
|
|
15
email.md
15
email.md
|
@ -1,15 +0,0 @@
|
||||||
# Email
|
|
||||||
|
|
||||||
### Summary
|
|
||||||
* [Configure email client](email_configure_client_en)
|
|
||||||
* [MX DNS zone](/dns_config_en)
|
|
||||||
* [Open ports on the router](/isp_box_config_en)
|
|
||||||
* [Migrate emails](email_migration_en)
|
|
||||||
* [Forms to remove blacklisting of your IP address](blacklist_forms_en)
|
|
||||||
* [Use DKIM](dkim_en)
|
|
||||||
|
|
||||||
#### YunoHost provides
|
|
||||||
* [Postfix](http://www.postfix.org): a SMTP email server
|
|
||||||
* [Dovecot](http://www.dovecot.org): an IMAP email server
|
|
||||||
* [Rspamd](https://rspamd.com): an antispam
|
|
||||||
* [RoundCube](/apps): a webmail
|
|
|
@ -1,40 +1,28 @@
|
||||||
## Configuration desktop email client
|
## Configuring email client
|
||||||
|
|
||||||
*[Documentation linked to YunoHost email](/email_fr)*.
|
You can fetch and send emails using your YunoHost instance from desktop email clients such as Mozilla Thunderbird or on your smartphone with applications like K-9 Mail.
|
||||||
|
|
||||||
You can access your emails via desktop email clients such as Mozilla Thunderbird.
|
##### Generic settings
|
||||||
|
|
||||||
#### Requirements
|
| Protocol | Port | Encryption | Authentication | Username |
|
||||||
* Email address
|
| :--: | :-: | :--: | :--: | :--: |
|
||||||
* Password of the user account
|
| IMAP | 993 | SSL/TLS | Normal password | `username` (without the `@domain.tld`) |
|
||||||
|
| SMTP | 587 | STARTTLS | Normal password | `username` (without the `@domain.tld`) |
|
||||||
|
|
||||||
##### Settings
|
### <img src="images/thunderbird.png" width=50> Configure Mozilla Thunderbird (on a desktop computer)
|
||||||
| Protocol | Port | Encryption |
|
|
||||||
| :--: | :-: | :--: |
|
|
||||||
| IMAP | 993 | SSL/TLS |
|
|
||||||
| SMTP | 465 | SSL/TLS |
|
|
||||||
|
|
||||||
#### Mozilla Thunderbird
|
The automatic detection tool of Thunderbird does not work yet with YunoHost. You will need to set it up manually. To do so, add the account information, then select port 993 with SSL/TLS for IMAP, and port 587 with STARTTLS for SMTP. Afterwards select 'Normal Password' for Authentication and click on 'Advanced Config'. You will need to accept the certificate exceptions for fetching mails and after you send your first mail. Don't forget to remove the dot before the domain name.
|
||||||
|
|
||||||
The automatic detection tool of Thunderbird does not work with YunoHost. You will need to set it up manually. To do so, add the account information, then select SSL/TLS for IMAP and SMTP. Afterwards select 'Normal Password' for Authentication and click on 'Advanced Config'. You will need to accept the certificate exceptions for fetching mails and after you send your first mail. Remove dot before domain name.
|
<img src="/images/thunderbird_config_1.png" width=900>
|
||||||
|
<img src="/images/thunderbird_config_2.png" width=900>
|
||||||
<img src="/images/thunderbird-config.png" width=900>
|
|
||||||
|
|
||||||
* [Manage alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases)
|
* [Manage alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases)
|
||||||
|
|
||||||
#### For Android
|
### <img src="images/k9mail.png" width=50> Configure K-9 Mail (on Android)
|
||||||
[K-9 Mail](https://en.wikipedia.org/wiki/K-9_Mail) application works.
|
|
||||||
|
|
||||||
#### For Firefox OS
|
Follow the following steps. (As for thunderbird, you might need to accept certificates at some points)
|
||||||
|
|
||||||
Tested with Firefox OS 2.6.
|
<a href="/images/k9mail_config_1.png"><img src="/images/k9mail_config_1.png" width=200/></a>
|
||||||
On the home screen, enter the user name and the email address. Then use manual configuration:
|
<a href="/images/k9mail_config_2.png"><img src="/images/k9mail_config_2.png" width=200/></a>
|
||||||
|
<a href="/images/k9mail_config_3.png"><img src="/images/k9mail_config_3.png" width=200/></a>
|
||||||
<a href="/images/ffos_email_config_home_screen_empty.png"><img src="/images/ffos_email_config_home_screen_empty.png" width=200/></a> <a href="/images/ffos_email_config_home_screen_fill.png"><img src="/images/ffos_email_config_home_screen_fill.png" width=200/></a>
|
<a href="/images/k9mail_config_4.png"><img src="/images/k9mail_config_4.png" width=200/></a>
|
||||||
|
|
||||||
Configure manually the form as shown on following screenshots:
|
|
||||||
|
|
||||||
<a href="/images/ffos_email_config_manual_conf_empty.png"><img src="/images/ffos_email_config_manual_conf_empty.png" width=200/></a> <a href="/images/ffos_email_config_manual_conf_fill.png"><img src="/images/ffos_email_config_manual_conf_fill.png" width=200/></a>
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/images/ffos_email_config_manual_conf_2_empty.png"><img src="/images/ffos_email_config_manual_conf_2_empty.png" width=200/></a> <a href="/images/ffos_email_config_manual_conf_2_fill.png"><img src="/images/ffos_email_config_manual_conf_2_fill.png" width=200/></a>
|
|
||||||
|
|
|
@ -1,40 +1,28 @@
|
||||||
## Configuration client email de bureau
|
## Configuration desktop email client
|
||||||
|
|
||||||
*[Documentation en rapport avec l’email de YunoHost](/email_fr)*.
|
Vous pouvez récupérer et envoyer des emails avec votre instance YunoHost grâce à des logiciels comme Mozilla Thunderbird, ou sur votre smartphone grâce à des applications comme K-9 Mail.
|
||||||
|
|
||||||
Il est possible d’accéder à ses emails grâce à un client lourd de messagerie électronique tel que Mozilla Thunderbird.
|
##### Réglages génériques
|
||||||
|
|
||||||
#### Prérequis
|
| Protocole | Port | Chiffrement | Authentification | Login |
|
||||||
* Adresse email principale
|
| :--: | :-: | :--: | :--: | :--: |
|
||||||
* Mot de passe du compte utilisateur
|
| IMAP | 993 | SSL/TLS | Mot de passe normal | `nom_dutilisateur` (sans `@domain.tld`) |
|
||||||
|
| SMTP | 587 | STARTTLS | Mot de passe normal | `nom_dutilisateur` (sans `@domain.tld`) |
|
||||||
|
|
||||||
#### Réglages génériques
|
### <img src="images/thunderbird.png" width=50> Configurer Mozilla Thunderbird
|
||||||
| Protocole | Port | Chiffrement |
|
|
||||||
| :--: | :-: | :--: |
|
|
||||||
| IMAP | 993 | SSL/TLS |
|
|
||||||
| SMTP | 465 | SSL/TLS |
|
|
||||||
|
|
||||||
#### Mozilla Thunderbird
|
L'outil de détection automatique de Thunderbird ne fonctionne actuellement pas avec YunoHost. Il vous faudra remplir les champs manuellement. Commencez par remplir les informations de base (Nom, adresse et mot de passe), cliquez sur Continuer puis Configuration Manuelle. Enlevez le `.` avant le nom de domaine. Sélectionnez le port 993 avec SSL/TLS pour IMAP, et le port 587 avec STARTTLS pour SMTP. Sélectionnez 'Mot de passe normal' pour l'authentification. Testez la configuration puis validez. (Il vous faudra ensuite possiblement accepter des certificats pour que tout fonctionne correctement.)
|
||||||
L’utilitaire de détection automatique de Thunderbird ne fonctionne pas avec le serveur email de YunoHost. Il faut donc passer en configuration manuelle. N’oubliez pas d’enlever le point devant le nom de domaine.
|
|
||||||
|
|
||||||
<img src="/images/thunderbird-config.png" width=900>
|
<img src="/images/thunderbird_config_1.png" width=900>
|
||||||
|
<img src="/images/thunderbird_config_2.png" width=900>
|
||||||
|
|
||||||
* [Gestion des alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases)
|
* [Gérer les alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases)
|
||||||
|
|
||||||
#### Pour Android
|
### <img src="images/k9mail.png" width=50> Configurer K-9 Mail (sur Android)
|
||||||
L’application [K-9 Mail](https://github.com/k9mail) fonctionne.
|
|
||||||
|
|
||||||
|
Suivez les instructions suivantes. (Comme pour Thunderbird, il vous faudra peut-être accepter des certificats à un moment)
|
||||||
|
|
||||||
#### Pour Firefox OS
|
<a href="/images/k9mail_config_1.png"><img src="/images/k9mail_config_1.png" width=200/></a>
|
||||||
|
<a href="/images/k9mail_config_2.png"><img src="/images/k9mail_config_2.png" width=200/></a>
|
||||||
Testé avec Firefox OS 2.6.
|
<a href="/images/k9mail_config_3.png"><img src="/images/k9mail_config_3.png" width=200/></a>
|
||||||
Sur la page d’accueil, entrez votre nom d’utilisateur et l’adresse email, puis allez dans la configuration manuelle :
|
<a href="/images/k9mail_config_4.png"><img src="/images/k9mail_config_4.png" width=200/></a>
|
||||||
|
|
||||||
<a href="/images/ffos_email_config_home_screen_empty.png"><img src="/images/ffos_email_config_home_screen_empty.png" width=200/></a> <a href="/images/ffos_email_config_home_screen_fill.png"><img src="/images/ffos_email_config_home_screen_fill.png" width=200/></a>
|
|
||||||
|
|
||||||
Configurer manuellement le formulaire comme indiqué sur les captures d’écran suivantes :
|
|
||||||
|
|
||||||
<a href="/images/ffos_email_config_manual_conf_empty.png"><img src="/images/ffos_email_config_manual_conf_empty.png" width=200/></a> <a href="/images/ffos_email_config_manual_conf_fill.png"><img src="/images/ffos_email_config_manual_conf_fill.png" width=200/></a>
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/images/ffos_email_config_manual_conf_2_empty.png"><img src="/images/ffos_email_config_manual_conf_2_empty.png" width=200/></a> <a href="/images/ffos_email_config_manual_conf_2_fill.png"><img src="/images/ffos_email_config_manual_conf_2_fill.png" width=200/></a>
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue