This commit is contained in:
ariasuni 2018-01-01 00:22:40 +01:00
commit 58a06eae2a
94 changed files with 2281 additions and 1631 deletions

View file

@ -2,7 +2,7 @@
<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 * [Jappix](/apps): a web XMPP client
## Desktop XMPP client ## Desktop XMPP client

View file

@ -4,6 +4,7 @@ Yunohost has an administrator web interface. The other way to administer your Yu
**Please note** that the web interface is an active work-in-progress and has far fewer features than the CLI moulinette. **Please note** that the web interface is an active work-in-progress and has far fewer features than the CLI moulinette.
### Access ### Access
You can access your administrator web interface at this address: https://example.org/yunohost/admin (replace 'example.org' with your own domain name) You can access your administrator web interface at this address: https://example.org/yunohost/admin (replace 'example.org' with your own domain name)
@ -12,20 +13,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 +24,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.

View file

@ -4,27 +4,18 @@ YunoHost est fourni avec une interface graphique dadministration. Lautre m
**Attention** : linterface dadministration donne accès à beaucoup moins de fonctionnalités que la moulinette, car elle est en développement actif. **Attention** : linterface dadministration donne accès à beaucoup moins de fonctionnalités que la moulinette, car elle est en développement actif.
### Accès ### Accès
Linterface admin est accessible depuis votre instance YunoHost à ladresse https://exemple.org/yunohost/admin (remplacez exemple.org par la bonne valeur) Linterface admin est accessible depuis votre instance YunoHost à ladresse 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,7 +25,6 @@ $ 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 dune application ### Comment déplacer le dossier dune 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 daccè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 daccès.

View file

@ -28,9 +28,8 @@
* [Avec OVH](/OVH_fr) * [Avec OVH](/OVH_fr)
* [Accéder à son domaine depuis le réseau local](/dns_local_network_fr) * [Accéder à son domaine depuis le réseau local](/dns_local_network_fr)
* [Nom de domaine en Nohost.me](/dns_nohost_me_fr) * [Nom de domaine en Nohost.me](/dns_nohost_me_fr)
* [Applications officielles](/apps_fr) * [Applications](/apps_fr)
* [Mettre à jour ses applications](app_update_fr) * [Mettre à jour ses applications](app_update_fr)
* [Applications en cours](apps_in_progress_fr)
* [Applications souhaitées](apps_wishlist_fr) * [Applications souhaitées](apps_wishlist_fr)
* [Nextcloud](app_nextcloud_fr) * [Nextcloud](app_nextcloud_fr)
* [Fournisseurs daccès à Internet](/isp_fr) * [Fournisseurs daccès à Internet](/isp_fr)

View file

@ -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

262
app_netdata.md Normal file
View 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/

32
app_piwigo.md Normal file
View 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
View 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/

View file

@ -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)

View file

@ -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 dactualité utilisant les protocoles RSS et atom. Tiny Tiny RSS est un lecteur de flux dactualité utilisant les protocoles RSS et atom.
@ -11,11 +11,11 @@ Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitr
Il est possible dutiliser le client Android ttrss-reader pour consulter ces flux : Il est possible dutiliser 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 linterface web, dans Actions -> Configuration, cochez « Activer laccès par API » Sur linterface web, dans Actions -> Configuration, cochez « Activer laccès par API »
puis dans ttrss-reader sur Android, ladresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom dutilisateur, mot de passe. (pas besoin dutiliser lauthentification HTTP) puis dans ttrss-reader sur Android, ladresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom dutilisateur, mot de passe. (pas besoin dutiliser lauthentification HTTP)
**Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement lapp ttrss via ladministration de YunoHost pour que la connexion puisse se faire. **Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement lapp ttrss via ladministration 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)

320
apps.md
View file

@ -1,44 +1,138 @@
#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-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}_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 +145,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+' 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.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>

View file

@ -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 d'empaquetage. </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 class="alert alert-info">Les empaqueteurs 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'applications 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>

View file

@ -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>

View file

@ -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 dapplications sont mises à disposition par les packagers.
<div class="alert alert-danger">Ces applications **nont 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 dadministration](/admin) ou avec la moulinette :
```bash
yunohost app install https://github.com/<packageur>/<dépôt_app>
```
Nhésitez pas à vous créer un compte GitHub pour faire part de vos remarques aux packagers (sous forme d«&nbsp;issues&nbsp;») ou à leur proposer des améliorations (sous forme de «&nbsp;pull requests&nbsp;»).
<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 lapplication</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>

View file

@ -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,11 +9,12 @@ 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)
- [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) - [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog)
- [Auth0 SSO Dashboard](https://github.com/auth0/auth0-sso-dashboard) - [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension)
- [Blynk](https://github.com/blynkkk/blynk-library) - [Blynk](https://github.com/blynkkk/blynk-library)
- [Bolt](http://bolt.cm) - [Bolt](http://bolt.cm)
- [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)
@ -24,14 +25,10 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [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/)
- [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) - [Coquelicot](https://coquelicot.potager.org) [package](https://github.com/M5oul/coquelicot_ynh)
- [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)
- [Darkwire.io](https://github.com/seripap/darkwire.io) - [Darkwire.io](https://github.com/seripap/darkwire.io)
@ -43,38 +40,38 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Emby](https://emby.media) - [Emby](https://emby.media)
- [Emoncms](https://github.com/emoncms/emoncms) - [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)
- [FileTea](https://filetea.me) - [FileTea](https://filetea.me)
- [FoOlSlide](http://foolcode.github.io/FoOlSlide/) Open source comicbook/manga management software - [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](http://gitit.net)
- [GitLab](http://gitlab.org)
- [Goaccess](https://goaccess.io) Web log analyser (replaces piwik without js tracking scripts) - [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](https://hackmd.io)
- [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)
- [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)
- [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)
- [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
@ -85,23 +82,22 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [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)
- [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29) - [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29)
- [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)
- [MediaCrush](https://imgrush.com) - [MediaCrush](https://imgrush.com)
- [MinigalNano](https://github.com/sebsauvage/MinigalNano) - [MinigalNano](https://github.com/sebsauvage/MinigalNano)
- [Mirakel](http://mirakel.azapps.de/taskwarrior.html) - [Mirakel](http://mirakel.azapps.de/taskwarrior.html)
- [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) - [Nuage](https://nuage.kerjean.me/login)
- [ONLYOFFICE](http://onlyoffice.org) - [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)
@ -112,7 +108,6 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [pdfy](https://github.com/joepie91/pdfy) - [pdfy](https://github.com/joepie91/pdfy)
- [PeerTube](https://github.com/Chocobozzz/PeerTube) - [PeerTube](https://github.com/Chocobozzz/PeerTube)
- [Pelias](https://github.com/pelias/pelias) - [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)
@ -124,44 +119,39 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [ProcessMaker](http://www.processmaker.com) - [ProcessMaker](http://www.processmaker.com)
- [Pulse](https://ind.ie/pulse) - [Pulse](https://ind.ie/pulse)
- [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) - [remotestorage-server](http://remotestorage.io/provide)
- [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)
- [Restya](http://restya.com) - [Restya](http://restya.com)
- [uMap](https://umap.openstreetmap.fr/en)
- [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)
- [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) - [Taskwarrior](https://taskwarrior.org)
- [Taiga](https://taiga.io) - [Taiga](https://taiga.io)
- [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)
- [TwitRSS.me](http://twitrss.me/) ([Github](https://github.com/ciderpunx/twitrssme)) Scrapes Twitter to create RSS feeds.
- [Twister](http://twister.net.co) - [Twister](http://twister.net.co)
- [Unvis](https://github.com/phixofor/unvis.it) - [Unvis](https://github.com/lodjuret/unvis.it)
- [Unsee](https://github.com/unsee-cc) - [Unsee](https://github.com/unsee-cc)
- [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](http://datenstrom.se/yellow) - [YellowCMS](http://datenstrom.se/yellow)
- [YesWiki](http://yeswiki.net/wa.php?wiki=AccueiL) - [YesWiki](http://yeswiki.net/wa.php?wiki=AccueiL)
- [ZeroTier](https://github.com/zerotier/ZeroTierOne) - [ZeroTier](https://github.com/zerotier/ZeroTierOne)

View file

@ -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 nest maintenue quen <a href="/apps_wishlist_en">version anglaise</a>. Merci de vous y référer. La liste des applications souhaitées nest maintenue quen <a href="/apps_wishlist_en">version anglaise</a>. Merci de vous y référer.

View file

@ -29,7 +29,7 @@ deb http://repo.yunohost.org/debian/ jessie stable testing unstable
## Workflow ## Workflow
Le but du workflow est déviter toute intervention manuelle (lancement dun script, etc.) sur le serveur, et de maîtriser la gestion des paquets via GitHub uniquement. Le but du workflow est déviter toute intervention manuelle (lancement dun script, etc.) sur le serveur, et de maîtriser la gestion des paquets via GitHub uniquement. (Edit: les webhooks ne sont plus fonctionnels, il est nécessaire de lancer la création des paquets à la main)
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. 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.
@ -137,7 +137,7 @@ Puis passer dans la branche `unstable` et merger la branche `testing`. Un nouvea
#### Publier une release testing ou stable #### Publier une release testing ou stable
Pour l'instant, on passe par une release via GitHub pour déclencher le build du paquet. Pour l'instant, on passe par une release via GitHub pour déclencher le build du paquet. (Edit: les webhooks ne sont plus fonctionnels, il est nécessaire de lancer la création des paquets à la main)
Aller sur https://github.com/YunoHost/{moulinette, yunohost, yunohost-admin, ssowat}/releases/new Aller sur https://github.com/YunoHost/{moulinette, yunohost, yunohost-admin, ssowat}/releases/new
@ -153,6 +153,14 @@ Ex: "debian/2.4.1"
Reprendre le changelog depuis `debian/changelog`. Remercier les contributeurs/traducteurs Reprendre le changelog depuis `debian/changelog`. Remercier les contributeurs/traducteurs
( Pour voir le dernier commit : `git show HEAD` ) ( Pour voir le dernier commit : `git show HEAD` )
5/ Création des paquets
Une fois connecté à `veganaise2`, il faut utiliser la commande `ynh-build` pour lancer la création des paquets.
Exemples de commandes:
```bash
ynh-build yunohost stable 2.6.5
ynh-build moulinette testing 2.6.9
```
#### Paquets non YunoHost #### 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. 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.

View file

@ -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 ?

View file

@ -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>&nbsp;&nbsp; Helping users <span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp; 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>
@ -109,32 +109,3 @@ Seed (share) YunoHost images with Torrent system: [live](http://build.yunohost.o
<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>

View file

@ -33,7 +33,7 @@ Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essa
<span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp; Aidez les utilisateurs <span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp; 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 sappuie 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 sappuie 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>
@ -105,32 +105,3 @@ Seedez (partagez) avec le système de Torrent les images de YunoHost : [live](h
<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>

View file

@ -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

View file

@ -2,7 +2,7 @@
Cette page nexiste 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 nexiste 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 navez pas de compte vous devrez envoyer vos modifications manuellement. ** Note : ** Vous aurez besoin d'une adresse email pour valider votre proposition.
### Syntaxe ### Syntaxe

31
dev.md
View file

@ -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>

View file

@ -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>

168
dkim.md
View file

@ -1,166 +1,8 @@
# DKIM # 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> <div class="alert alert-info">
Now you just need to add a zone in your DNS configuration according to the file /etc/dkim/yourdomainname.tld.mail.txt</div> DKIM is now integrated by default in YunoHost with [Rspamd](https://rspamd.com)/rmilter.
Make sure to add the TXT record for mail._domainkey from [the recommended DNS
configuration](dns_config) for DKIM to be fully operational.
</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

View file

@ -1,171 +1,9 @@
# DKIM # DKIM
<div class="alert alert-danger">Cette page nest plus à jour. Le DKIM est a présent intégré par défaut dans YunoHost avec [Rspamd](https://rspamd.com)/rmilter. <div class="alert alert-info">
Il suffit désormais de créer une zone DNS en s'inspirant du fichier /etc/dkim/yourdomainname.tld.mail.txt</div> DKIM est maintenant intégré de base dans YunoHost grâce à [Rspamd](https://rspamd.com)/rmilter.
Il vous suffit d'ajouter l'enregistrement DNS de type TXT recommandé pour
mail._domainkey tel que donné par [la configuration DNS recommandée](dns_config_fr)
pour que les signatures DKIM soient pleinement fonctionelles.
</div>
Le protocole SMTP ne prévoit pas de mécanisme de vérification de lexpéditeur. Il est donc possible denvoyer un courrier avec une adresse dexpéditeur factice ou usurpée. SPF et DKIM sont deux mécanismes dauthentification de lexpéditeur dun email.
#### Notes :
* Ceci est la deuxième version de ce travail en cours concernant lactivation 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 dun 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). Noubliez pas que la propagation de linformation 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 sappuie 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 sadapte 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 à lexemple 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 noublie pas de donner les bons droits daccè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 (noubliez 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 à ladresse indiquée et cliquer pour voir le résultat.
# SPF
Enfin, noubliez pas dajouter une clé SPF dans votre [zone DNS](/dns_config_fr) (ou un champ TXT si SPF nest 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 ladresse IP indiquée dans votre zone DNS est autorisée à envoyer des courriels.
Si vous navez pas dIPv6 sur votre serveur, supprimez simplement la section ip6:<…>

View file

@ -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.

View file

@ -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 fourni 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 faîtes, il vous faudra peut-être modifier cette recommendation 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 ladresse 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 ladresse IP | Type | Nom | Valeur |
```bash | :-----: | :--------------------: | :----------------------------------------------------: |
* 1800 IN A 111.222.333.444 # Wildcard : *.domain.tld et domain.tld pointent vers ladresse 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 recommendons 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 dexemple 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 ladresse IP (une ligne est suffisante) étant donné quelles 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 ladresse 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 lon est en train de définir, certains bureaux denregistrement ne lacceptent 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 lentrée DNS peut être conservée en cache. Passé ce délai, linformation doit être considérée comme obsolète et doit être mise à jour.

View file

@ -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`.

View file

@ -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 nest pas configuré, cest 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 nest pas configuré, cest celui de votre FAI.
Par exemple pour une Freebox la résolution se fait par ladresse `192.168.0.254`. Par exemple pour une Freebox la résolution se fait par ladresse `192.168.0.254`.

View file

@ -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/

View file

@ -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/

View file

@ -19,6 +19,8 @@ Lutilitaire de détection automatique de Thunderbird ne fonctionne pas avec l
<img src="/images/thunderbird-config.png" width=900> <img src="/images/thunderbird-config.png" width=900>
Note : si votre instance Yunohost gère plusieurs noms de domaine, il faut utiliser celui définit comme "nom de domaine par défaut" dans l'interface de gestion des noms de domaines. Et ce, même si le domaine de votre adresse mail en est un autre.
* [Gestion des alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases) * [Gestion des alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases)
#### Pour Android #### Pour Android

125
faq.md
View file

@ -1,17 +1,124 @@
# Frequently asked questions # Frequently Asked Questions
#### YunoHost ported on Ubuntu?
YunoHost team does not have energy to port and maintain YunoHost on Ubuntu.
#### YunoHost is distributed under which license? #### Under which licence is YunoHost distributed?
YunoHost packages are under free licenses GNU AGPL v.3. YunoHost packages are under free licenses GNU AGPL v.3.
YunoHost is based on Debian, so on licenses of Debian based elements. YunoHost is based on Debian, so on licenses of Debian based elements.
Applications and applications packages have there respectives licenses. Applications and applications packages have their respectives licenses.
#### Can we host many independents websites with differents domain names?
We can host many websites cause YunoHost is multi-domain and that some applications for websites management, like *WordPress* or *Web App Multi Custom*, are multi-instances, which means that the application can be installed many times.
#### Why can I access to applications via the IP address? #### What is the goal of YunoHost?
The [SSO](https://github.com/Kloadut/SSOwat/) does not allow access to the user part (apps included) via an IP address. For this purpose, you should use a domain name. One trick could be to modify the [`hosts` file (last §)](dns_local_network_en) of your desktop computer with a domain name that you don't need to own.
We believe that decentralizing the Internet, and people taking back control and
responsability over their own data and services, is a crucial issue to guarantee
a free and democratic society.
The YunoHost project aims to democratize self-hosting.
It provides a software that aim to make it easy for people to run and
administrate their own server, with minimal knowledge and time required.
#### But what does YunoHost *do* exactly?
YunoHost may be called a distribution or an operating system, but it's actually
"just" a simple layer added over the top of Debian, which does most of the hard
work for you.
For instance, if you wanted to install Wordpress, you would need to type a bunch
of commands to create some users, setup a web server, setup a SQL server,
download the wordpress archive, uncompress it, configure the web server,
configure the SQL database, and finally configure wordpress. YunoHost handle
the technical mess and "type all these commands for you", so that you can focus
on what really matters.
More info on [this page](whatsyunohost) !
#### Can I host my own personnal website with YunoHost?
Yes ! Have a look at the [Custom Web app](https://github.com/YunoHost-Apps/my_webapp_ynh).
It provides an "empty shell" : after installing it, just upload your files
(via SSH/SCP or SFTP) to the right location. You can have PHP and a SQL database
if you need.
#### Can I host many independents websites with different domain names?
Yes ! YunoHost is multi-user and multi-domain. Some applications like *WordPress* or *Web App Multi Custom*, are multi-instances, which means that the application can be installed many times.
#### Why can't I access to applications via the IP address?
The [SSO](https://github.com/Kloadut/SSOwat/) (single sign-on) cannot properly authenticate users when they access your server with only its IP. If you really can't configure the DNS properly, you can temporarily work around it by [modifying the `hosts` file (last §)](dns_local_network_en) on your computer.
#### What's YunoHost's business model?
At the moment, YunoHost is maintained only by volunteers working in their free
time. Basically no money is involved in the project (apart from server fees
or stickers :P), which also means that we are independent and not
pressured by economical concerns.
Right now, the team is not too enthusiast about bringing money in the project.
With that said, some contributors have professional projects which involve
YunoHost.
#### Can I make donations to the project?
At the moment we don't have any system to receive money donations. We do however
receive some in-kind contributions from association, like servers.
#### How can I contribute to the project?
There are [many ways to contribute](contribute) :).
Don't hesitate to come talk to us about your ideas!
A common misconception for newcomers in free software projects is to think that
they are "not skilled enough". In practice, nobody is "skilled" :). What really
matter is : [liking what you do](https://www.youtube.com/watch?v=zIbR5TAz2xQ&t=113s),
being friendly with other human beings, being patient and stubborn with machines,
and having some free time. Other than that, just doing what you can is already awesome!
#### What's YunoHost's political model?
It is described in [this document](https://github.com/YunoHost/project-organization/blob/master/yunohost_project_organization.md) :).
#### Will you port YunoHost to [insert favorite distro] ?
Short answer: No. We don't have the energy for it and this is irrelevant.
<a data-toggle="collapse" data-target="#willyouportyunohost" href="#">Long answer</a>
<div id="willyouportyunohost" class="collapse">
<p>If you care about distrowars, or think 'Debian is dirty', you are not the public of YunoHost.</p>
<p>YunoHost is aimed at non-tech people who just want their server to work. Debian has its flaws, but it's (one of?) the most widely known and used distribution for servers. It's stable. Most self-hosted softwares are one way or another compatible with Debian. It's easily hackable by anybody who's been doing a bit of CLI on their personal Ubuntu/Mint computer. There is no killer feature in other distributions that makes it relevant for YunoHost to switch or port it.</p>
<p>If this does not convince you, there are other projects running on other distributions or with different philosophy.</p>
</div>
#### I checked how apps packaging work. Why are you reinventing [insert favorite package format] ?
Short answer: We are not.
Medium answer: Apps were packaged in .deb in the past. It was a nightmare. We're happy now ;).
<a data-toggle="collapse" data-target="#whyareyoureinventingpackaging" href="#">Long answer</a>
<div id="whyareyoureinventingpackaging" class="collapse">
<p>YunoHost aims to make packaging easy. The idea from the beginning was to keep it as simple as « if you can install the app manually, then you can easily copy/paste steps into a basic install/remove package with no particular training ». This is not the case with Debian packages.</p>
<p>Turns out, YunoHost apps packaging holds a subtly different purpose than traditional packaging like .deb. Debian packages fulfill the low-level purpose of installing files, commands, programs and services on the system. It is often your duty to configure them properly, simply because there is no standard server setup. Typically, web apps requires a lot of configuration because they rely on a web server and a database (and the single sign-on).</p>
<p>YunoHost manipulate high-level abstractions (apps, domains, users, ...) and defines a standard setup (Nginx, Postfix, Metronome, SSOwat, ...) and, because of this, can handle the configuration for the user.</p>
<p>If you still think deb packages can be hacked to do this, see previous answers.</p>
</div>

118
faq_fr.md
View file

@ -1,17 +1,127 @@
# Foire aux questions # Foire aux questions
#### Est-ce que YunoHost est porté sous Ubuntu? #### Sous quelle licence est distribué YunoHost?
Léquipe de YunoHost na pas lénergie de porter ni de maintenir YunoHost sur Ubuntu.
#### YunoHost est distribuée sous quelle licence?
Les paquets qui composent YunoHost sont sous licence libre GNU AGPL v.3. Les paquets qui composent YunoHost sont sous licence libre GNU AGPL v.3.
YunoHost est basé sur Debian, donc sur les licences des éléments sur lesquels Debian est basé. YunoHost est basé sur Debian, donc sur les licences des éléments sur lesquels Debian est basé.
Les applications et les packages dapplications ont leurs licences respectives. Les applications et les packages dapplications ont leurs licences respectives.
#### Quel est l'objectif de YunoHost?
Nous pensons que la décentalization d'Internet, et la reprise du contrôle et
de la responsabilité des données et services par les citoyens est un enjeu
crucial pour garantir une société libre et démocratique.
Le projet YunoHost cherche à démocratiser l'auto-hébergement.
Nous fournissons un logiciel qui cherche à rendre simple le fait de gérer et
d'administrer un serveur soi-même, en minimisant les compétences et le temps
requis.
#### Mais qu'est-ce que ça fait *vraiment*?
YunoHost peut être appelé une distribution ou un système d'exploitation, mais
dans les fait, c'est une "simple" couche par dessus Debian, qui gère les
manipulations pénibles à votre place.
Par exemple, pour installer un Wordpress à la main, il vous faudrait taper
toute une série de commande pour créer des utilisateurs, mettre en place un
serveur web, mettre en place un serveur SQL, télécharger l'archive de Wordpress,
la décompresser, configurer le serveur web, configurer la base de données SQL,
et finalement configurer Wordpress. YunoHost gère toute cette partie technique
et "tape les commandes à votre place", pour que vous puissiez vous concentrer
sur ce qui compte vraiment.
Plus d'informations sur [cette page](whatsyunohost) !
#### Puis-je gérer mon propre site web avec YunoHost?
Oui ! Il faut regarder du côté de [cette app](https://github.com/YunoHost-Apps/my_webapp_ynh).
Elle fournit une "coquille vide" : après l'installation, il suffit d'uploader
vos fichiers (via SSH/SCP ou SFTP) au bon endroit. Il est aussi possible
d'avoir du PHP et une base de donnée SQL si besoin.
#### Peut-on héberger plusieurs sites indépendants avec des noms de domaines différents? #### Peut-on héberger plusieurs sites indépendants avec des noms de domaines différents?
On peut tout à fait héberger plusieurs sites web car YunoHost est multi-domaine et que certaines applications de gestion de sites web, comme *WordPress* ou *Web App Multi Custom*, sont multi-instances, cest-à-dire que lapplication peut-être installée plusieurs fois. On peut tout à fait héberger plusieurs sites web car YunoHost est multi-domaine et que certaines applications de gestion de sites web, comme *WordPress* ou *Web App Multi Custom*, sont multi-instances, cest-à-dire que lapplication peut-être installée plusieurs fois.
#### Pourquoi je ne peux pas accéder à mes applications avec ladresse IP? #### Pourquoi je ne peux pas accéder à mes applications avec ladresse IP?
Le [SSO](https://github.com/Kloadut/SSOwat/) ne permet pas daccéder à la partie utilisateur (applications incluses) avec une adresse IP. Pour cela, il faut utiliser un nom de domaine. Une des astuces consiste à modifier le [fichier `hosts` (dernier §)](dns_local_network_fr) de son ordinateur de bureau avec un nom de domaine que lon nest pas obligé de posséder.
Pour des raisons techniques, le [SSO](https://github.com/Kloadut/SSOwat/) ne permet pas aux utilisateurs de se logger à l'espace utilisateur lorsque l'on accède au serveur uniquement avec l'IP. Si vous ne pouvez réellement pas configurer un nom de domaine, une solution temporaire peut être de modifier le [fichier `hosts` (dernier §)](dns_local_network_fr) de son ordinateur.
#### Quel est le modèle économique de YunoHost ?
À l'heure actuelle, YunoHost est maintenu uniquement par une équipe de bénévole
travaillant pendant leur temps libre. Il n'y a pas d'argent impliqué dans le
projet (hormis quelques frais de serveurs et stickers :P), ce qui signifie
également que nous sommes indépendant de toute préocuppations économiques.
Pour le moment, l'équipe est assez peu enthousiaste à l'idée d'include de
l'argent dans la projet. Cependant, certains contributeurs mène des activités
professionelles qui sont liées à YunoHost.
#### Puis-je faire un don au projet ?
Pour le moment, nous n'avons pas mis en place de moyen pour recevoir des dons.
Cependant, nous bénéficions de contributions en nature apportées par des associations,
comme des serveurs.
#### Comment puis-je contributer au projet ?
Il y existe [plusieurs façons de contribuer](contribute) :).
N'hésitez pas à venir nous parler de vos idées!
Une idée répandue parmis les nouveaux contributeurs aux logiciels libres est
de ne pas être "assez compétent". En pratique, croyez-le, personne n'est
compétent :). Ce qui compte vraiment est : [d'aimer ce que vous faites](https://www.youtube.com/watch?v=zIbR5TAz2xQ&t=113s),
être sympatique avec les autres êtres humains du projet, être patient et têtu
avec les machines, et avoir du temps libre. À part ça, juste faire ce que vous
pouvez, c'est déjà trop cool!
#### Quel est le modèle politique de YunoHost ?
Il est décrit dans [ce document](https://github.com/YunoHost/project-organization/blob/master/yunohost_project_organization.md) :).
#### Pouvez-vous porter YunoHost sur [ma distro préféré] ?
Réponse courte : Non. L'équipe n'a pas l'énergie et ce n'est pas pertinent pour le but recherché par YunoHost.
<a data-toggle="collapse" data-target="#willyouportyunohost" href="#">Réponse longue</a>
<div id="willyouportyunohost" class="collapse">
<p>Si vous vous préoccupez des guéguérres de distro, ou pensez que 'Debian c'est sale', vous n'êtes pas le public de YunoHost.</p>
<p>YunoHost vise un public de non-technophile ou de bidouilleurs qui veulent simplement que le serveur fonctionne sans devoir investir des semaines entières. Debian a propbablement des défauts, mais c'est une (la?) distribution la plus connue et utilisée pour gérer des serveurs. C'est une distribution stable. La plupart des services auto-hébergeables sont compatibles d'une manière ou d'une autre avec Debian. Elle est facilement bidouillable par quelqu'un qui a déjà utilisé la ligne de commande sur son ordinateur personnel. Il n'y a pas de "killer feature" particulière dans les autres distributions qui rendrait pertinent de porter YunoHost dessus.</p>
<p>Si cela ne vous conviens pas, il existe d'autres projets sous d'autres distributions ou avec d'autres philosophies.</p>
</div>
#### J'ai regardé comment le packaging des apps fonctionne. Pourquoi réinventez-vous [mon format de package préféré] ?
Réponse courte: Ce n'est pas ce que nous faisons.
Réponse moyenne: Par le passé, les apps étaient gérées via des .deb. C'était cauchemardesque. On est heureux maintenant ;).
<a data-toggle="collapse" data-target="#whyareyoureinventingpackaging" href="#">Long answer</a>
<div id="whyareyoureinventingpackaging" class="collapse">
<p>YunoHost cherche a garder un système de packaging simple. L'idée depuis le départ était que « si tu sais installer l'app à la main, alors tu peux facilement créer un package basique en copiant-collant les étapes, sans besoin de connaissances particulière ». Ce n'est pas le cas des paquets Debian.</p>
<p>Il se trouve que l'objectif des paquets d'application YunoHost est subtilement différent des paquets traditionnels (comme les .deb de Debian) qui remplissent le rôle d'installer des éléménts bas-niveaux tels que des fichiers, commandes, programmes ou services sur le système. Il est à la charge de l'administrateur de les configurer ensuite proprement, simplement parce qu'il n'existe pas d'environnement standard. Typiquement, les applications web requiert beaucoup de configuration car elles ont besoin de s'interfacer avec un serveur web et une base de données (et le système de connexion unique / SSO).</p>
<p>YunoHost manipule des abstractions haut-niveau (apps, domaines, utilisateurs, ...) et défini un environnement standard (Nginx, Postfix, Metronome, SSOwat, ...) et, grâce à cela, peut gérer la configuration à la place de l'administrateur.</p>
<p>Si vous restez persuadé que l'on peut néanmoins bricoler les paquets .deb pour gérer tout cela, voir les réponses précédentes.</p>
</div>

66
help.md
View file

@ -1,5 +1,65 @@
#About this site # Looking for help?
Unless specifically mentioned, the content of this website is licensed under the [Creative Commons ```CC-BY-SA``` license](http://creativecommons.org/licenses/by-sa/3.0/). <h3>Connect to the support chatroom</h3>
<center>
<div class="alert alert-info" markdown="1" style="max-width:700px;">
<strong>ProTips™</strong>
<ul style="text-align:left;">
<li>Don't ask to ask, just ask !</li>
<li><em>Be patient</em>, it can take a few minutes before someone sees your messages.</li>
</ul>
</div>
<strong>Nickname</strong> : <input id="nickname" value="foobar" type="text">
</br>
</br>
<button id="joinChatroom" type="button" class="btn btn-success" style="font-weight:bold;">
<span class="glyphicon glyphicon-comment"></span> Join the chatroom
</button>
</br>
</br>
<em>Note : you can also connect using your favorite XMPP client to </br>
support@conference.yunohost.org</em>
</center>
<h3>... or ask on the forum !</h3>
<center>
<button id="goForum" type="button" class="btn btn-success" style="font-weight:bold;">
<span class="glyphicon glyphicon-comment"></span> Go to the forum
</button>
</center>
<h3>You've found a bug ?</h3>
<center>
<br>
<em>Please report it on our bugtracker or contact the developers</em><br><br>
<button id="goBugtracker" type="button" class="btn btn-warning" style="font-weight:bold;">
<span class="glyphicon glyphicon-exclamation-sign"></span> Report a bug
</button>
<button id="goDevroom" type="button" class="btn btn-warning" style="font-weight:bold; margin-left:40px">
<span class="glyphicon glyphicon-comment"></span> Contact the developers
</button>
</br>
</br>
<em>Note : you can also connect to the devrooms, using your favorite XMPP client, to </br>
dev@conference.yunohost.org and apps@conference.yunohost.org</em>
</center>
<script>
document.getElementById("joinChatroom").onclick = function() {
var nickname = document.getElementById("nickname").value;
window.location.href = "https://chat.yunohost.org/?nick="+nickname;
}
document.getElementById("goForum").onclick = function() {
var nickname = document.getElementById("nickname").value;
window.location.href = "https://forum.yunohost.org/latest";
}
document.getElementById("goBugtracker").onclick = function() {
window.location.href = "https://dev.yunohost.org/projects/yunohost/issues";
}
document.getElementById("goDevroom").onclick = function() {
window.location.href = "https://chat.yunohost.org/";
}
</script>
This wiki is powered by [Simone](https://github.com/Kloadut/Simone).

View file

@ -1,5 +1,65 @@
propos de ce site # Besoin d'aide ?
Sauf mention contraire, le contenu de ce site est sous [licence Creative Common ```CC-BY-SA```](http://creativecommons.org/licenses/by-sa/3.0/fr/) <h3>Connectez-vous au salon de support</h3>
<center>
<div class="alert alert-info" markdown="1" style="max-width:750px;">
<strong>ProTips™</strong>
<ul style="text-align:left;">
<li>Pas besoin de demander si vous pouvez poser une question - posez-la directement !</li>
<li><em>Soyez patient</em>, cela peut prendre plusieurs minutes avant que quelqu'un remarque vos messages.</li>
</ul>
</div>
<strong>Pseudonyme</strong> : <input id="nickname" value="foobar" type="text">
</br>
</br>
<button id="joinChatroom" type="button" class="btn btn-success" style="font-weight:bold;">
<span class="glyphicon glyphicon-comment"></span> Rejoindre le salon
</button>
</br>
</br>
<em>Note : vous pouvez aussi vous connecter via votre client XMPP favori à</br>
support@conference.yunohost.org</em>
</center>
<h3>... ou demandez sur le forum !</h3>
<center>
<button id="goForum" type="button" class="btn btn-success" style="font-weight:bold;">
<span class="glyphicon glyphicon-comment"></span> Aller sur le forum
</button>
</center>
<h3>Vous avez trouvé un bug ?</h3>
<center>
<br>
<em>Vous pouvez rapporter le bug sur le bugtracker ou contacter les développeurs</em><br><br>
<button id="goBugtracker" type="button" class="btn btn-warning" style="font-weight:bold;">
<span class="glyphicon glyphicon-exclamation-sign"></span> Rapporter un bug
</button>
<button id="goDevroom" type="button" class="btn btn-warning" style="font-weight:bold; margin-left:40px">
<span class="glyphicon glyphicon-comment"></span> Contacter les développeurs
</button>
</br>
</br>
<em>Note : vous pouvez aussi vous connecter aux salons de dev, via votre client XMPP favori, à</br>
dev@conference.yunohost.org et apps@conference.yunohost.org</em>
</center>
<script>
document.getElementById("joinChatroom").onclick = function() {
var nickname = document.getElementById("nickname").value;
window.location.href = "https://chat.yunohost.org/?nick="+nickname;
}
document.getElementById("goForum").onclick = function() {
var nickname = document.getElementById("nickname").value;
window.location.href = "https://forum.yunohost.org/latest";
}
document.getElementById("goBugtracker").onclick = function() {
window.location.href = "https://dev.yunohost.org/projects/yunohost/issues";
}
document.getElementById("goDevroom").onclick = function() {
window.location.href = "https://chat.yunohost.org/";
}
</script>
Ce wiki est propulsé par [Simone](https://github.com/Kloadut/Simone).

View file

@ -39,6 +39,7 @@ OVH1_domain_select.png
OVH2_domain_DNS.png OVH2_domain_DNS.png
OVH3_zoneDNS.png OVH3_zoneDNS.png
Pidgin-add-acount.png Pidgin-add-acount.png
piwigo.png
postinstall_cli.png postinstall_cli.png
postinstall_error.png postinstall_error.png
postinstall_web.png postinstall_web.png

BIN
images/piwigo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Binary file not shown.

View file

@ -44,7 +44,7 @@
<div class="call-to-action"> <div class="call-to-action">
<a class="btn btn-primary btn-lg" href="/try">Try it</a> <a class="btn btn-primary btn-lg" href="/try">Try it</a>
<a class="btn btn-success btn-lg" href="/install">Get started</a> <a class="btn btn-success btn-lg" href="/install">Get started</a>
<p class="text-muted"><small><a href="https://forum.yunohost.org/t/en-fr-sortie-de-yunohost-2-6-aaron-swartz-yunohost-2-6-release-aaron-swartz/3065">YunoHost v2.6</a></small></p> <p class="text-muted"><small><a href="https://forum.yunohost.org/t/yunohost-2-7-stable-release-eben-moglen-sortie-de-yunohost-2-7-stable-eben-moglen/3376">YunoHost v2.7</a></small></p>
</div> </div>
<div class="row cf"> <div class="row cf">
@ -97,7 +97,7 @@
<a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org/" target="_blank">Forum</a> <a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org/" target="_blank">Forum</a>
<a class="btn btn-lg btn-block btn-default" href="chat_rooms_en" target="_blank">Chat rooms</a> <a class="btn btn-lg btn-block btn-default" href="chat_rooms_en" target="_blank">Chat rooms</a>
<a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Latest news</a> <a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Latest news</a>
<a class="btn btn-lg btn-block btn-danger btn-support" href="/support">Support</a> <a class="btn btn-lg btn-block btn-danger btn-support" href="/help_fr">Support</a>
</div> </div>
<div class="col-md-7 text-right"> <div class="col-md-7 text-right">
<h1>Explore <small>what you can do with a server, and why it is important</small></h1> <h1>Explore <small>what you can do with a server, and why it is important</small></h1>
@ -152,32 +152,3 @@
</script> </script>
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
<script type="text/javascript">
// Jappix mini chat
jQuery.ajaxSetup({cache: false});
$(".actions").css('opacity', 0);
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: ['support@conference.yunohost.org'],
suggest: ['dev@conference.yunohost.org']
}
},
});
</script>

View file

@ -40,7 +40,7 @@
<div class="call-to-action"> <div class="call-to-action">
<a class="btn btn-primary btn-lg" href="/try_fr">Essayer</a> <a class="btn btn-primary btn-lg" href="/try_fr">Essayer</a>
<a class="btn btn-success btn-lg" href="/install_fr">Installer</a> <a class="btn btn-success btn-lg" href="/install_fr">Installer</a>
<p class="text-muted"><small><a href="https://forum.yunohost.org/t/en-fr-sortie-de-yunohost-2-6-aaron-swartz-yunohost-2-6-release-aaron-swartz/3065">YunoHost v2.6</a></small></p> <p class="text-muted"><small><a href="https://forum.yunohost.org/t/yunohost-2-7-stable-release-eben-moglen-sortie-de-yunohost-2-7-stable-eben-moglen/3376">YunoHost v2.7</a></small></p>
</div> </div>
<hr /> <hr />
@ -90,13 +90,13 @@
<div class="row cf"> <div class="row cf">
<div class="col-md-4 button-list"> <div class="col-md-4 button-list">
<a class="btn btn-lg btn-block btn-primary"href="/whatsyunohost_fr">Quest-ce que YunoHost ?</a> <a class="btn btn-lg btn-block btn-primary" href="/whatsyunohost_fr">Quest-ce que YunoHost ?</a>
<a class="btn btn-lg btn-block btn-info" href="/docs_fr">Documentation</a> <a class="btn btn-lg btn-block btn-info" href="/docs_fr">Documentation</a>
<a class="btn btn-lg btn-block btn-success" href="/contribute_fr">Comment contribuer</a> <a class="btn btn-lg btn-block btn-success" href="/contribute_fr">Comment contribuer</a>
<a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org" target="_blank">Forum</a> <a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org" target="_blank">Forum</a>
<a class="btn btn-lg btn-block btn-default" href="chat_rooms_fr" target="_blank">Salons de discussions</a> <a class="btn btn-lg btn-block btn-default" href="chat_rooms_fr" target="_blank">Salons de discussions</a>
<a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Dernières nouvelles</a> <a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Dernières nouvelles</a>
<a class="btn btn-lg btn-block btn-danger btn-support" href="/support_fr">Support</a> <a class="btn btn-lg btn-block btn-danger btn-support" href="/help_fr">Support</a>
</div> </div>
<div class="col-md-7 text-right"> <div class="col-md-7 text-right">
@ -152,32 +152,3 @@
</script> </script>
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
<script type="text/javascript">
// Jappix mini chat
jQuery.ajaxSetup({cache: false});
$(".actions").css('opacity', 0);
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: ['support@conference.yunohost.org'],
suggest: ['dev@conference.yunohost.org']
}
},
});
</script>

View file

@ -32,6 +32,3 @@ To connect directly to your computer or with [SSH](/ssh) (only on local network:
* User: **root** * User: **root**
* Password: **yunohost** * Password: **yunohost**
---
***Need help during one of these steps? [Get support!](/support)***

View file

@ -31,5 +31,7 @@ Pour se connecter directement sur lordinateur (uniquement en local) :
* Utilisateur : **root** * Utilisateur : **root**
* Mot de passe : **yunohost** * Mot de passe : **yunohost**
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [moyens de support](/support_fr).*** ## Cas spécifiques / avancés
Si l'ordinateur n'a pas de carte graphique mais a un port série : il faut modifier l'ISO pour démarrer avec la console série. Une solution est d'utiliser [un script qui modifie les options de démarrage](https://github.com/luffah/debian-mkserialiso).

View file

@ -8,7 +8,8 @@ Once you have access to your server, either directly or by SSH, you can install
1. Install git 1. Install git
```bash ```bash
sudo apt-get install git dialog sudo apt-get update
sudo apt-get install ca-certificates dialog git
``` ```
2. Clone the Yunohost install script repository 2. Clone the Yunohost install script repository
@ -16,7 +17,7 @@ sudo apt-get install git dialog
git clone https://github.com/YunoHost/install_script /tmp/install_script git clone https://github.com/YunoHost/install_script /tmp/install_script
``` ```
3. The root user must have a password set, if it isn't the case, set it (whithout the install script failed): 3. The root user must have a password set, if it isn't the case, set it (otherwise, the install script fails):
```bash ```bash
sudo passwd root sudo passwd root
``` ```

View file

@ -36,6 +36,3 @@
#### Build image #### Build image
* [Create an ARM board image](/build_arm_image_en) * [Create an ARM board image](/build_arm_image_en)
---
***Need help during one of these steps? [Get support!](/support)***

View file

@ -33,6 +33,3 @@
#### Créer une image #### Créer une image
* [Créer une image pour la carte ARM](build_arm_image_en) * [Créer une image pour la carte ARM](build_arm_image_en)
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [moyens de support](/support_fr).***

View file

@ -22,6 +22,3 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh
<a class="btn btn-lg btn-default" href="/postinstall">2. Post-install</a> <a class="btn btn-lg btn-default" href="/postinstall">2. Post-install</a>
---
***Need help during one of these steps? [Get support!](/support)***

View file

@ -22,7 +22,3 @@ Sur une plateforme ARM, un VPS, un serveur dédié, un ordinateur x86 standard,
<a class="btn btn-lg btn-default" href="/postinstall_fr">2. Post-installation</a> <a class="btn btn-lg btn-default" href="/postinstall_fr">2. Post-installation</a>
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [moyens de support](/support_fr).***

View file

@ -56,6 +56,3 @@ sudo passwd root
4. Then follow the <a href="/install_manually">generic manual install procedure</a>. 4. Then follow the <a href="/install_manually">generic manual install procedure</a>.
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***

View file

@ -56,6 +56,3 @@ sudo passwd root
4. Poursuivez avec la <a href="/install_manually_fr">procédure d'installation manuelle générique</a>. 4. Poursuivez avec la <a href="/install_manually_fr">procédure d'installation manuelle générique</a>.
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [outils de support](/support_fr).***

View file

@ -73,6 +73,3 @@ After the reboot, you will see this screen:
* You can get more information on the post-installation here: **[yunohost.org/postinstall](/postinstall)** * You can get more information on the post-installation here: **[yunohost.org/postinstall](/postinstall)**
---
***Need help during one of these steps? [Get support!](/support)***

View file

@ -72,6 +72,3 @@ Après le redémarrage, vous devriez voir cet écran :
* Vous pouvez obtenir plus dinformation sur la post-installation ici : **[yunohost.org/postinstall_fr](/postinstall_fr)** * Vous pouvez obtenir plus dinformation sur la post-installation ici : **[yunohost.org/postinstall_fr](/postinstall_fr)**
* Le mode de passe root est "yunohost" * Le mode de passe root est "yunohost"
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [moyens de support](/support_fr).***

View file

@ -18,6 +18,3 @@
<a class="btn btn-lg btn-default" href="/postinstall">2. Post-install</a> <a class="btn btn-lg btn-default" href="/postinstall">2. Post-install</a>
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***

View file

@ -18,7 +18,3 @@
<a class="btn btn-lg btn-default" href="/postinstall_fr">2. Post-installation</a> <a class="btn btn-lg btn-default" href="/postinstall_fr">2. Post-installation</a>
---
***Si vous avez besoin daide lors de ces étapes, nhésitez pas à utiliser les différents [moyens de support](/support_fr).***

5
isp.md
View file

@ -20,4 +20,9 @@ A list of French and Belgian ISPs is available on the [french page](/isp_fr).
| --- | --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- | --- |
| Global Village Telecom | Multiple | Yes | No. Only for Fix IP| No | No | Yes, extra charge. | | Global Village Telecom | Multiple | Yes | No. Only for Fix IP| No | No | Yes, extra charge. |
### Ireland
| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP |
| --- | --- | --- | --- | --- | --- | --- |
| Whizzy Internet | Multiple | Yes | Yes| Yes | Yes | Yes |
If you want to add international ISPs information, please do consider [modifying this page](/write_documentation). If you want to add international ISPs information, please do consider [modifying this page](/write_documentation).

View file

@ -1,35 +1,46 @@
# Configuration box/router # Configure port-forwarding
<a class="btn btn-lg btn-default" href="http://ports.yunohost.org">Check ports are open</a> If you are self-hosting at home and without a VPN, you need to forward ports on your home router ("Internet box"). If you want a short explanation on what is and why you need port forwarding, have a look in [this page](port_forwarding).
#### Access to box/routeur administration ### 0. Diagnose ports opened
In the URL bar of your web browser put:
```bash
192.168.0.1 or 192.168.1.1
```
Then you will need to authentificate.
#### Opening ports After configuring port forwarding, you should be able to validate with this small tool that your ports are correctly forwarded :
Opening following ports are necessary to make works differents services.
<a class="btn btn-default" href="http://ports.yunohost.org">Check which ports are forwarded</a>
### 1. Access your box/router administration interface
Your box/router admin interface is usually reachable via http://192.168.0.1 or http://192.168.1.1. Then, you will probably need to authenticate yourself with your internet server provider's credentials.
### 2. Find the local IP of your server
Identify what is the local IP of your server, either :
- from your box/router interface, which might list devices connected
- from the YunoHost webadmin, in 'State of the server', 'Network'
- from the command line in your server, by running `ip a | grep "scope global" | awk '{print $2}'`
A local IP address typically looks like `192.168.xx.yy`, or `10.0.xx.yy`.
### 3. Forwarding ports
In your router admin interface, look for something like 'router configuration' or 'port forwarding'. The naming differs among the various kinds of boxes.
Opening the ports listed below is necessary for the various services available in YunoHost to work. For each of them, the 'TCP' forwarding is needed. Some interfaces refer to 'external' and 'internal' ports : these are the same in our case.
**TCP:**
* Web: 80 <small>(HTTP)</small>, 443 <small>(HTTPS)</small> * Web: 80 <small>(HTTP)</small>, 443 <small>(HTTPS)</small>
* [SSH](/ssh_en): 22 * [SSH](/ssh_en): 22
* [XMPP](/XMPP_en): 5222 <small>(clients)</small>, 5269 <small>(servers)</small> * [XMPP](/XMPP_en): 5222 <small>(clients)</small>, 5269 <small>(servers)</small>
* [Email](/email_en): 25, 465 <small>(SMTP)</small>, 587 <small>(SMTP with SSL)</small>, 993 <small>(IMAP)</small> * [Email](/email_en): 25, 465 <small>(SMTP)</small>, 587 <small>(SMTP with SSL)</small>, 993 <small>(IMAP)</small>
* [DNS](/dns_en): 53
##### UPnP <div class="alert alert-warning" markdown="1">
UPnP permit automatically forward ports. <span class="glyphicon glyphicon-warning-sign"></span> Some internet service providers block port 25 (mail SMTP) by default to fight spam. Some other ISP don't allow to use port 80/443 (web) freely, though it's less likely. Depending on the ISP, it might be possible to open them in the admin interface... Check [this page](isp_en) for more info.
</div>
In some case, after changing your box configuration (ex: add IPv6, or unlock SMTP…) and a reboot. It happens that ports are no longer forwarded. So you have to reload your firewall configuration: ## Automatic port forwarding / UPnP
A technology called UPnP is available on some internet boxes / routers and allows to automatically forward ports by the machine who needs them. If UPnP is enabled in your local network, then running this command should automatically open the port for you :
```bash ```bash
sudo yunohost firewall reload sudo yunohost firewall reload
``` ```
##### Manual forward ports
In the case that UPnP doesnt works, manual ports forward are necessary.
##### Email
Internet service porviders blocks port 25 to avoid spam. To send mails, youll need to forward port 25.

View file

@ -1,44 +1,51 @@
# Configuration box/routeur # Configurer la redirection des ports
<a class="btn btn-lg btn-default" href="http://ports.yunohost.org">Vérifier que les ports sont ouverts</a> Si vous vous auto-hébergez à la maison et sans VPN, il vous faut rediriger les ports de votre routeur ("machin-box"). Si vous souhaitez une explication courte de ce qu'est et pourquoi vous avez besoin de rediriger les ports, vous pouvez jeter un oeil à [cette page](port_forwarding_fr). [Cette page](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html) propose également des explications détaillées sur le fonctionnement des ports, et les étapes de configuration pour différents routeurs.
### Accès à ladministration de la box/routeur ### 0. Diagnostiquer les ports ouverts
Allez à ladresse suivante : http://192.168.0.1 (ou celle-ci http://192.168.1.1). Puis authentifier-vous.
### Tutoriel Une fois que vous aurez configuré la redirection, vous devriez pouvoir valider avec ce petit outil que vos ports sont bien redirigés :
* [Tutoriel pour les ouvrir les ports sur les boxs dOrange, Free, SFR, Dartybox, Belgacom et sur les routeurs Netgear](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html).
### Redirection des ports <a class="btn btn-default" href="http://ports.yunohost.org">Vérifier la redirection des ports</a>
La redirection des ports suivants est nécessaire au fonctionnement des différents services.
**TCP :** ### 1. Accéder à l'interface d'administration de votre box/routeur
* Web : 80 <small>(HTTP)</small>, 443 <small>(HTTPS)</small>
* [SSH](ssh_fr) : 22
* [XMPP](XMPP_fr) : 5222 <small>(clients)</small>, 5269 <small>(serveurs)</small>
* [Courriel](email_fr) : 25, 465 <small>(SMTP)</small>, 587 <small>(SMTP avec chiffrement)</small>, 993 <small>(IMAP)</small>
* [DNS](dns_fr) : 53
**UDP:** L'interface d'administration est généralement accessible via http://192.168.0.1 ou http://192.168.1.1.
* [DNS](dns_fr) : 53 Ensuite, il vous faudra peut-être vous authentifier avec les identifiants
fournis par votre fournisseur d'accès internet (FAI).
--- ### 2. Trouver l'IP locale de votre serveur
#### UPnP Identifiez quelle est l'IP locale de votre serveur, soit :
- depuis l'interface de votre routeur/box, qui liste peut-être les dispostifis
connectés.
- depuis la webadmin de YunoHost, dans 'État du serveur', 'Réseau'
- depuis la ligne de commande dans votre serveur, par exemple avec `ip a | grep "scope global" | awk '{print $2}'`
LUPnP permet douvrir automatiquement les ports. Si ce nest pas le cas par défaut, vous pouvez lactiver via linterface dadministration de votre routeur. Une adresse IP locale ressemble généralement à `192.168.xx.yy`, ou `10.0.xx.yy`.
Dans certains cas après avoir changé la configuration de votre box (ex : sur Freebox ajout dIPv6, débloquer le SMTP…) et après lavoir rebooté. Il se peut que vos ports ne soient plus redirigés. Il faut donc réautoriser ces ports par le firewall : ### 3. Rediriger les ports
Dans l'interface d'administration de votre box/routeur, il vous faut trouver
une catégorie comme 'Configuration du routeur', ou 'Redirections de ports'. Le
nom diffère suivant le type / marque de la box...
Il vous faut ensuite rediriger chacun des ports listés ci-dessous vers l'IP locale de votre serveur pour que les différents services de YunoHost fonctionnent. Pour chacun d'eux, une redirection 'TCP' est nécessaire. Certains interfaces font références à un port 'externe' et un port 'interne' : dans notre cas il s'agit du même.
* Web: 80 <small>(HTTP)</small>, 443 <small>(HTTPS)</small>
* [SSH](/ssh_fr): 22
* [XMPP](/XMPP_fr): 5222 <small>(clients)</small>, 5269 <small>(servers)</small>
* [Email](/email_fr): 25, 465 <small>(SMTP)</small>, 587 <small>(SMTP with SSL)</small>, 993 <small>(IMAP)</small>
<div class="alert alert-warning" markdown="1">
<span class="glyphicon glyphicon-warning-sign"></span> Certains fournisseurs d'accès internet bloquent le port 25 (mail SMTP) par défaut pour combattre le spam. D'autres (plus rares) ne permettent pas d'utiliser librement les ports 80/443. En fonction de votre FAI, il peut être possible d'ouvrir ces ports dans l'interface... Voir [cette page](isp_fr) pour plus d'informations.
</div>
## Redirection automatique / UPnP
Une technologie nommée UPnP est disponible sur certains routeurs/box et permet de rediriger automatiquement des ports vers une machine qui le demande. Si UPnP est activé chez vous, exécuter cette commande devrait automatiquement rediriger les bons ports :
```bash ```bash
sudo yunohost firewall reload sudo yunohost firewall reload
``` ```
#### Redirection manuelle des ports
Dans le cas où lUPnP ne fonctionne pas, la redirection manuelle des ports est nécessaire. Encore une fois, référez-vous à linterface dadministration de votre routeur.
ATTENTION (CPU ARM) : lactivation de lUPnP est inefficace avec les serveurs équipés dun processeur ARM (remarque valable pour YunoHost v2.2). Une redirection manuelle des ports du routeur est alors requise.
#### Le courrier électronique
Les fournisseurs daccès à Internet bloquent souvent le port 25 pour éviter que les ordinateurs de votre réseau nenvoient des spams sur Internet à votre insu. Pour pouvoir envoyer des emails, il vous faut donc ouvrir le port 25, ou désactiver loption « blocage SMTP sortant » dans ladministration de votre routeur.

View file

@ -33,4 +33,4 @@ Pour une liste plus complète et précise, référez-vous à la très bonne docu
| **Proximus** | BBox2 | oui (activé) | oui | **non** | **non** | **non** | | **Proximus** | BBox2 | oui (activé) | oui | **non** | **non** | **non** |
| | BBox3 | oui (activé) | oui | **non** | **non** | **non** | | | BBox3 | oui (activé) | oui | **non** | **non** | **non** |
| **Scarlet** | BBox2 | oui (activé) | oui | **non** | **non** | **non** | | **Scarlet** | BBox2 | oui (activé) | oui | **non** | **non** | **non** |
**Proximus** ne serait pas ouvert à lauto-hébergement. Louverture des ports serait plus difficile afin déviter tout SPAM. Il serait préférable de passer par [Neutrinet](http://neutrinet.be), un des [membres de la Fédération French Data Network](http://www.ffdn.org/fr/membres). **Proximus** ne serait pas ouvert à lauto-hébergement. Louverture des ports serait plus difficile afin déviter tout SPAM. Il serait préférable de passer par [Neutrinet](http://neutrinet.be), un des [membres de la Fédération French Data Network](http://www.ffdn.org/fr/membres). Les ports 23, 80 et 443 sont fermés par le fournisseur par défaut, ils peuvent être débloqués à la demande (via le compte en ligne MyProximus) sur le site de Proximus.

View file

@ -1,4 +1,4 @@
#Free # Free
*Trouvez la liste dautres fournisseurs daccès Internet **[ici](/isp_fr)**.* *Trouvez la liste dautres fournisseurs daccès Internet **[ici](/isp_fr)**.*
@ -33,9 +33,9 @@ La présence conjointe de ces deux règles permettent d'accéder à votre serveu
Pour pouvoir envoyer des mails, le déblocage se fait dans la [partie client](https://subscribe.free.fr/login/). Pour pouvoir envoyer des mails, le déblocage se fait dans la [partie client](https://subscribe.free.fr/login/).
Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ». Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ».
Pour pouvoir envoyer des mails, passer le blocage en « inactif ». Pour pouvoir envoyer des mails, passer le blocage en « inactif ».
#### Fonction NAS de la Freebox #### Fonction NAS de la Freebox
@ -57,13 +57,13 @@ $ sudo mount -t cifs //mafreebox.freebox.fr/Disque\ dur/ /home/monlogin/freebox
##### Automatiser le montage ##### Automatiser le montage
Une ligne a ajouter à la fin du `/etc/fstab` : Une ligne a ajouter à la fin du `/etc/fstab` :
``` ```bash
//mafreebox.freebox.fr/Disque\040dur/ /home/monlogin/freebox cifs _netdev,guest,uid=monlogin,gid=users,iocharset=utf8 0 0 //mafreebox.freebox.fr/Disque\040dur/ /home/monlogin/freebox cifs _netdev,guest,uid=monlogin,gid=users,iocharset=utf8 0 0
``` ```
Le `_netdev` signale que c'est un périphérique réseau, afin que le système ne le monte que s'il a accès au réseau. Le `_netdev` signale que c'est un périphérique réseau, afin que le système ne le monte que s'il a accès au réseau.
`guest` est le mode d'identification à la Freebox : pour une connexion authentifié, placer vos identifiants dans un fichier sous la forme `guest` est le mode d'identification à la Freebox : pour une connexion authentifié, placer vos identifiants dans un fichier sous la forme
``` ```bash
username=your_user username=your_user
password=your_pass password=your_pass
domain=FREEBOX domain=FREEBOX

View file

@ -87,7 +87,7 @@ This Python script checks:
### Publish and ask for testing your application ### Publish and ask for testing your application
* Publishing a [post on the Forum](https://forum.yunohost.org/) with the [`App integration` category](https://forum.yunohost.org/c/app-integration), to ask for testing and feedback on your application. * Publishing a [post on the Forum](https://forum.yunohost.org/) with the [`App integration` category](https://forum.yunohost.org/c/app-integration), to ask for testing and feedback on your application.
* Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_in_progress_en). Specify its progress state: `notworking`, `inprogress`, or `working`. * Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_en). Specify its progress state: `notworking`, `inprogress`, or `working`.
- Subscribe to the [Apps mailing list](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) to be informed about packaging evolution. - Subscribe to the [Apps mailing list](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) to be informed about packaging evolution.

View file

@ -69,7 +69,7 @@ Il sagit dun script Python qui vérifie :
### Publiez et demandez des tests de votre application ### Publiez et demandez des tests de votre application
* Demandez des tests et des retours sur votre application en publiant un [post sur le Forum](https://forum.yunohost.org/) dans la [catégorie `App integration`](https://forum.yunohost.org/c/app-integration). * Demandez des tests et des retours sur votre application en publiant un [post sur le Forum](https://forum.yunohost.org/) dans la [catégorie `App integration`](https://forum.yunohost.org/c/app-integration).
* Faire une demande dajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin quelle soit affichée dans [la liste des apps non officielles](apps_in_progress_fr). Préciser également son état davancement : `notworking`, `inprogress` ou `working`. * Faire une demande dajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin quelle soit affichée dans [la liste des apps non officielles](apps_fr). Préciser également son état davancement : `notworking`, `inprogress` ou `working`.
- Inscrivez-vous à la [mailing list Apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) pour être tenu au courant des évolutions du packaging. - Inscrivez-vous à la [mailing list Apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) pour être tenu au courant des évolutions du packaging.

View file

@ -0,0 +1,442 @@
# Packing Applications : Good Practise Guidelines
<div class="alert alert-danger">
<b>
This page is under development. As long as this warning is not removed. Consider this information as potentially false.
The name YEP is not a priori definitive, neither the levels nor the good practices in itself.
</b>
</div>
### Introduction
The purpose of this document is to list the various best practices concerning the creation of YunoHost application packages.
Each good practice is numbered with a number suffixed by the letters YEP (YunoHost Enhancement Proposals), so that it can be easily referenced in the ([package checker](https://github.com/YunoHost/package_check) and [package linter](https://github.com/YunoHost/package_linter)) tools, but also during the reviews of code.
Each YEP is associated with:
* a status indicating whether the rule has been validated or is still under discussion (draft, validated, refused, obsolete);
* an indication of the type of test to be carried out (manual or auto if an automatic tool can verify);
* an indication of the app level from which the rule is required (NOTWORKING, INPROGRESS, WORKING, OFFICIAL), some rules are optional;
### YEP Index
| ID | Title | Status | Test | Level |
| ---- | -------- | -------- | ------ | -------- |
| ** YEP 1 ** | ** Communicate with the community ** | | | |
| YEP 1.1 | App name and deposit | validated | manual | NOTWORKING (0) |
| YEP 1.2 | Register the app on a known "directory" | validated | manual | NOTWORKING (0) |
| YEP 1.3 | Indicate the license associated with the package | validated | AUTO | WORKING (5) |
| YEP 1.4 | Inform about intention to maintain package | draft | manual | OFFICIAL (6) |
| YEP 1.5 | Regularly update app status | draft | manual | WORKING (2) |
| YEP 1.6 | Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL (6) |
| YEP 1.7 | Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL (6) |
| YEP 1.8 | Publish test requests | validated | manual | OFFICIAL (6) |
| YEP 1.9 | Document the app | validated | AUTO | OFFICIAL (6) |
| YEP 1.10 | Keep a clean version history | draft | manual | OFFICIAL (6) |
| YEP 1.11 | Add app to [YunoHost bugtracker](https://dev.yunohost.org) | draft | manual | OFFICIAL (NA) |
| | | | | |
| ** YEP 2 ** | ** Stabilize an app ** | ** Status ** | ** Test ** | ** Level ** |
| YEP 2.1 | Respect the manifest format | validated | Home | INPROGRESS (5) |
| YEP 2.2 | Using bash for main scripts | validated | Home | WORKING (1) |
| YEP 2.3 | Save replies during installation | validated | manual | WORKING (3) |
| YEP 2.4 | Detect and manage errors | draft | manual | WORKING (8) |
| YEP 2.5 | Copy files correctly | draft | manual | WORKING (1) |
| YEP 2.6 | Cancel action if input values are incorrect | validated | manual | WORKING (7) |
| YEP 2.7 | Give sufficient permissions to bash | validated | Home | WORKING (1) |
| YEP 2.8 | Correctly Changing a System Configuration | draft | manual | WORKING (8) |
| YEP 2.9 | Remove all traces of the app when deleting | draft | manual | WORKING (6) |
| YEP 2.10 | Configure application logs | draft | manual | WORKING (9) |
| YEP 2.11 | Use a variable rather than the id app directly | validated | manual | OFFICIAL (9) |
| YEP 2.12 | Using Helpers | validated | Home | OFFICIAL (5) |
| YEP 2.13 | Translate the package in English | draft | manual | OFFICIAL (9) |
| YEP 2.14 | Fill a conf file correctly | draft | manual | OFFICIAL (9) |
| YEP 2.15 | Follow the instructions for installing the application | validated | manual | OFFICIAL (1) |
| YEP 2.16 | Check availability of dependencies on ARM, x86 and x64 | validated | manual | OFFICIAL (8) |
| YEP 2.17 | Take the original version into account when updating | validated | manual | OFFICIAL (9) |
| | | | | |
| ** YEP 2.18 ** | ** Stabilize a webapp ** | ** Status ** | ** Test ** | ** Level ** |
| YEP 2.18.1 | Launch the script to install a webapp correctly | validated | manual | WORKING (5) |
| YEP 2.18.2 | Manage installation at the root of a domain name | validated | Home | WORKING (2) |
| YEP 2.18.3 | Manage installation on a subdomain | validated | Home | WORKING (2) |
| YEP 2.18.4 | Manage installation on a path `/path` | validated | Home | OFFICIAL (2) |
| YEP 2.18.5 | Manage the YunoHost tile for easy navigation between applications | validated | manual | OFFICIAL (8) |
| | | | | |
| ** YEP 3 ** | ** Secure an app ** | ** Status ** | ** Test ** | ** Level ** |
| YEP 3.1 | Do not ask or store LDAP password | draft | manual | NOTWORKING (?) |
| YEP 3.2 | Open a port correctly | draft | manual | WORKING (7) |
| YEP 3.3 | Facilitating Source Integrity Control | draft | manual | OFFICIAL (6) |
| YEP 3.4 | Isolate app | draft | manual | OFFICIAL (8) |
| YEP 3.5 | Follow the recommendations of the app's documentation | validated | manual | OFFICIAL (6) |
| YEP 3.6 | Update versions containing CVE | draft | manual | OFFICIAL (6) |
| | | | | |
| ** YEP 4 ** | ** Integrate an app ** | ** Status ** | ** Test ** | ** Level ** |
| 4.1 | Link to ldap | validated | manual | OFFICIAL (4) |
| YEP 4.2 | Link authentication to sso | validated | manual | OFFICIAL (4) |
| YEP 4.2.1 | Sign Out | validated | manual | OFFICIAL (9) |
| YEP 4.3 | Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL (6) |
| YEP 4.4 | Provide a YunoHost Restore Functional script | validated | Home | OFFICIAL (6) |
| YEP 4.5 | Using Hooks | validated | manual | OPTIONAL (8) |
| YEP 4.6 | Manage multi-instance | validated | manual | OPTIONAL (2) |
| YEP 4.7 | Add a module to the CLI | validated | manual | OPTIONAL |
| YEP 4.8 | Add a module to the web admin | draft | manual | OPTIONAL |
### YEP 1
#### Communicating with the community
The YEP 1 is a meta YEP, it explains what it takes to interact with the community around a YunoHost application package.
#### YEP 1.1
##### App name and deposit | validated | manual | NOTWORKING |
Each YunoHost application has an id registered in the application manifest.
This identifier must be unique between each application packet.
It is therefore recommended to verify its availability by consulting the list of applications referenced in the known applications repositories (official, community, internetcube).
In addition, the identifier must respect the regular expression `^[a-z1-9]((_|-)?[A-z1-9])+$`.
In other words, it must respect the following rules:
* be in lowercase
* start with a letter or number
* be alphanumeric (the underscore is allowed)
* do not contain two underscores or dashes that follow one another
* do not end with an underscore or dash
For application names containing spaces, virtually all current packages simply remove them without replacing them with dashes or underscores.
By convention, the YunoHost application repositories are always named their ID followed by the string "\ _ynh". Thus one can distinguish the upstream repository of the application, the deposit of the yunohost package. This notation also makes it possible to find applications not listed by the search engines of platforms offering version managers (GitHub for example).
Example: ID: Example Filing Name: example_ynh
#### YEP 1.2
##### Register the app on a known "directory" | validated | manual | NOTWORKING |
It is advised from the beginning of the packaging to register an app on one of the YunoHost application depots.
These deposits have several functions:
* communicate the existence of a package;
* indicate the latest version associated with the package (to allow the update of the app by YunoHost);
* indicate the state of operation of the packet;
* indicate information about the support of a package.
For the `official.json` and` community.json` lists, registration is on [the git apps repository](https://github.com/YunoHost/apps).
#### YEP 1.3
##### Indicate the license associated with the package | draft | AUTO | WORKING |
The license of the packet must be specified in a `LICENSE` file at the root of the packet. Be careful not to confuse with the license of the application that will be installed whose acronym is to be entered in the `license` field of the manifest.
The application lists official.json and community.json only accept packages with a free license, as well as the license for the contained application. Some free applications require non-free dependencies (example: mp3, drivers, etc.). In this case, you should add `&dep-non-free` to the acronym and if possible give details in the README.md of the package, in this case the integration will be accepted on a case-by-case basis.
In the future, YunoHost will probably display details about the license of the application. To achieve this, the acronym must be the one from this [list of licenses listed in the SPDX](https://spdx.org/licenses/) (if there are 2 acronyms, the one containing the version number). For consistency, the case must be respected.
If the license is not present in the list, in this case it is necessary to indicate `free` or `non-free` depending on whether it is free or not and give the user the opportunity to inquire in the README .md (link, explanations, ...).
Example: for a GNU Lesser General Public License (LGPL), version 3 the acronym is `LGPL-3.0` if non-free dependencies are used in this case it will be necessary to put LGPL-3.0 & dep-non-free `in the manifesto.
If an application has modules linked to another license (Example: Odoo 9 LGPL-3.0 + a module licensed AGPL-3.0), in this case we will indicate the two licenses separated by a `&`.
If two separate applications are in the same installation package and have separate licenses, in this case we can use `,` to separate the licenses.
In both cases, the maintainer is encouraged to consider creating two separate packages. The manifest of each application is used to ask app-type questions to refer to another application already installed.
Reminder: a question of type `app` answers the identifier of one of the apps already installed.
Some interesting links to help with the choice of license:
* [Explanatory sheets on free licenses](https://www.inria.fr/content/download/5896/48452/version/2/file/INRIA_recueil_fiches_licences_libres_vf.pdf)
* [GNU project licensing documentation](https://www.gnu.org/licenses/licenses.html)
* [A Guide to the GNU Project to Help Choose a License](https://www.gnu.org/licenses/license-recommendations.en.html)
#### YEP 1.4
##### Inform about intention to maintain package | draft | manual | OFFICIAL |
The maintainer of the application must undertake to maintain its app over time if he wishes it to join the list of official applications.
This involves monitoring updates to the upstream application, adhering to the new packaging rules and responding to user requests.
#### YEP 1.5
##### Regularly update app status | draft | manual | WORKING |
#### YEP 1.6
##### Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL |
In order to keep up with the evolution of the packaging format and best practices, it is recommended to:
* subscribe to the discussion list `apps @ list.yunohost.org`
* follow [the forum's Apps category](https://forum.yunohost.org/c/apps-packaging)
To follow the evolution of YunoHost more generally:
* join XMPP dev@conference.yunohost.org ([three days of logs are available](https://im.yunohost.org/logs/dev/))
* follow [Annoucement category of the forum](https://forum.yunohost.org/c/announcement)
* follow discussions on contrib@list.yunohost.org
#### YEP 1.7
##### Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL |
Adding an app to the [YunoHost-Apps organization](https://github.com/YunoHost-Apps) lets you share apps with other contributors who might be tempted to package the targeted application .
It is also a way to quickly deploy a security patch if necessary in the event that the maintainer is unavailable.
Transfer Procedure: Ask the [chat room](chat_rooms_en) to be invited to the organization by providing the name of their GitHub account.
Once the invitation is accepted, [transfer its deposit to the organization by following this tutorial](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/# Transferring-a-repository-to-another-user-account-or-to-an-organization).
#### YEP 1.8
##### Publish test requests | validated | manual | OFFICIAL |
In order to ensure the proper functioning of a package, it is necessary to publish an announcement in order to open the tests on the package. This announcement can be done on the forum in [Forum Apps category](https://forum.yunohost.org/c/apps).
It is recommended to indicate if some tests have not been conducted.
* Check package with Package linter.
* Installation in subfolder.
* Installation at the root of a domain or subdomain.
* Deletion, in the 2 cases of previous installations.
* Access to the web interface of the application, with the / final in the address, and omitting it.
* Upgrade on the same version of the package.
* Upgrade from an older version of the package.
* Private installation (secured by SSO).
* Public installation.
* Multi-instance installation.
* User name error.
* Domain name error.
* Poorly written path (path / instead of / path for example).
* Port already used by another application.
* Source corrupted after download.
* Error downloading source.
* Folder already used by another application.
* Backup and restore.
#### YEP 1.9
##### Document the app | validated | AUTO | OFFICIAL |
Above all, it is appropriate to make a correct description of the app in the `description` field of the manifest. Keyword insertion in this description can be a good idea, as a user might be required to search (CTRL + F) among all applications.
There is also README.md, which must and can contain:
* the name of the app
* a brief summary of what it does
* any additional installation if the script is not sufficient
* instructions to use it (for example to connect your smartphone or computer)
* the location to report a malfunction / request
* the roadmap / TODO
* possibly prerequisites in terms of ram memories, processor etc. (some equipment has less than 512MB of ram)
#### YEP 1.10
##### Keep a clean version history | draft | manual | OFFICIAL |
#### YEP 1.11
##### Add app to [YunoHost bugtracker](https://dev.yunohost.org) | draft | manual | OFFICIAL |
### YEP 2
#### Stabilize an app
#### YEP 2.1
##### Respect the manifest format | validated | Home | INPROGRESS |
The manifest allows to describe an app so that YunoHost can apply the good treatments. For more information see [dedicated documentation](https://yunohost.org/#/packaging_apps_manifest).
#### YEP 2.2
##### Using bash for main scripts | validated | Home | WORKING |
Action scripts (install, upgrade, remove, backup and restore) must be in the bash so that the cli / api yunohost can call them correctly.
That being said, there is nothing to prevent other scripts or function libraries from using these scripts. These are not obliged to be in bash.
However, careful attention must be paid to the correct display of logs of information, warning, or errors. So that a user of the cli / api yunohost can understand the operation of the script just executed and if necessary repair its YunoHost instance.
#### YEP 2.3
##### Save the answers during the installation | validated | manual | WORKING |
During installation, it is necessary to save each answer to the questions in the manifest. Indeed, even if at the beginning it is not necessary to write an update script, thereafter it will probably be the case. However, without the initial information, the update can be more tedious.
#### YEP 2.4
##### Detecting and Managing Errors | draft | manual | WORKING |
The install, upgrade, backup, and restore scripts must detect errors to avoid further scripting in case of blocking error or empty variable usage.
The use of trap and set -eu is recommended to detect and treat errors ([Discussion in progress](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-and-or-trap/2249/5))
It is also necessary to check the contents of the variables before removing the remove script. For example, an `rm -Rf /var/www/$app` with `$app` empty would have a disastrous result.
At the beginning of the scripts, before any modifications, it is necessary to check the existence of the users mentioned at the installation, as well as the availability of the requested path, the availability of the final file of the application and the size of the passwords if necessary .
Do not forget that in case of installation error the removal script will be launched automatically by the yunohost cli.
#### YEP 2.5
##### Copy files correctly | draft | manual | WORKING |
#### YEP 2.6
##### Cancel action if input values are incorrect | validated | manual | WORKING |
Each script should verify that the input values are correct.
Here are some examples :
* Check that the domain name exists
* Check that the user exists
* Check that the chosen path is available
If one of the values is incorrect, it is necessary to cancel any modifications made previously to the instance. The best thing is to do all these checks before changing the system.
#### YEP 2.7
##### Give sufficient permissions to bash | validated | Home | WORKING |
Some instructions require sudo rights. In this case, do not forget to prefix these instructions with `sudo`.
In other cases it is necessary to give rights using chmod and chown.
#### YEP 2.8
##### Correctly changing a system configuration | draft | manual | WORKING |
Changes to the system must be reversible so that the removal of the application is of no consequence to the system leaves no residue.
For this purpose, the `.d` folders of the system configurations must be used as much as possible. Where it is not possible to do otherwise, clearly indicate the configuration as modified by an application and ensure that the changes will be removed when it is removed.
#### YEP 2.9
##### Remove all traces of the app when deleting | draft | manual | WORKING |
Except for dependencies (eg, Debian packages) used by other services or applications.
#### YEP 2.10
##### Configure application logs | draft | manual | WORKING |
If possible, the application should use a log file, which will preferably be in /var/log.
If the log is set up by the install script and not by the application itself, a log-rotate configuration file will have to be added to handle the logs of the application.
#### YEP 2.11
##### Using a variable rather than the app id directly | validated | manual | OFFICIAL |
It is advisable to make the scripts as generic as possible, a good way to do this is to use a variable for the app's name to avoid it being found everywhere in scripts. This will make it easier for another package builder to use the script for another app.
#### YEP 2.12
##### Using Helpers | validated | Home | OFFICIAL |
In order to simplify packaging, standardize practices, avoid errors and increase the lifetime of a script vis-à-vis future versions of YunoHost. A set of helpers to do many actions is proposed.
For more information :
* consult [helpers documentation](https://yunohost.org/#/packaging_apps_helpers)
* explore [helpers directory](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d)
#### YEP 2.13
##### Translate the package in English | draft | manual | OFFICIAL |
#### YEP 2.14
##### Fill a conf file correctly | draft | manual | OFFICIAL |
* Just to clear up a little this YEP, but it remains in draft form. *
The goal is to find a more reliable method than sed to modify the configuration files. sed can possibly have edge effects by modifying unwanted parts of the configuration file, especially with the use of regex.
#### YEP 2.15
##### Follow the instructions for installing the application | validated | manual | OFFICIAL |
#### YEP 2.16
##### Check availability of dependencies on ARM, x86, and x64 | validated | manual | OFFICIAL |
YunoHost installs on ARM, x86 and x64. A package should therefore be tested on these three processor architectures.
Some packages are not available on ARM, in this case it is advisable to study other solutions or to indicate in the README.md that the application does not work on ARM and to block the installation by detection of type d 'architecture.
#### YEP 2.17
##### Take the original version into account when updating | validated | manual | OFFICIAL |
The update script must be able to run even if the previous updates have not been performed.
For example, it should be possible to perform update jumps from an N-x version to an N version. To do this, it is advisable to save the version numbers in the app settings.
### YEP 2.18
##### Stabilizing a webapp
The majority of YunoHost applications are web apps, but some are not. The YEP 2.18.x develop certain specificities related to the web app.
#### YEP 2.18.1
##### Launch the script to install a webapp correctly | validated | manual | WORKING |
Often a web app installs itself from forms displayed on a web page. This practice, while practical for a human, is less so for a program.
It is therefore necessary to check if the application does not propose a solution of installation on command line.
If this is not the case, the -H option of curl should be used. In some cases, DNS redirection may not be active at the time of installation.
`` `Bash
curl -kL -H "Host: $domain" --data "&param1=Text1&param2=text2" https: //localhost$path/install.php > /dev/null 2>&1
`` `
#### YEP 2.18.2
##### Manage installation at the root of a domain name | validated | Home | WORKING |
A web app should be able to install itself at the root of a domain name.
#### YEP 2.18.3
##### Manage installation on a subdomain | validated | Home | WORKING |
A web app should be able to install itself on a subdomain directly without subfolders.
#### YEP 2.18.4
##### Manage installation on a path `/path` | validated | Home | OFFICIAL |
A web app should be able to install on a path `/path`.
#### YEP 2.18.5
##### Manage the YunoHost tile to easily navigate between applications | validated | manual | OFFICIAL |
Except in rare cases it is advisable to integrate the tile YunoHost which allows to return to the menu of the SSO. This integration is done in the nginx configuration.
Some users have replaced this square with a script adding a menu at the top of each webapp.
### YEP 3
#### Securing an app
#### YEP 3.1
##### Do not ask or store LDAP password | draft | manual | NOTWORKING |
#### YEP 3.2
##### Open a port correctly | draft | manual | WORKING |
If the application requires the opening of a port, it is necessary to check beforehand that this port is not already used by another application. If so, the install script must be able to find another available port.
It should also be checked whether the port should be open on the router, beyond the local network. If this is not the case, the `--no-upnp` argument must be added to the` yunohost firewall allow` command in order to limit the port opening to the LAN only.
#### YEP 3.3
##### Facilitating Source Integrity Control | draft | manual | OFFICIAL |
The upstream application should not be integrated into tarball in the source folder of the package, as this adds to the package and the git repository and does not allow verification of the integrity of the source.
The source must be downloaded from the official website, then its integrity must be checked before installing it.
#### YEP 3.4
##### Isolate app | draft | manual | OFFICIAL |
In order to avoid edges in case of possible compromise of the application, it must be insulated in order not to affect the other applications.
To do this, it is necessary to isolate the application in its execution folder by restricting its environment by a chroot, either by a mechanism internal to the application where possible (for example for an ftp server), or by the use of phpfpm.
Similarly, to restrict the scope of the user running the application, it is preferable to use a user dedicated to the application. Whose rights are restricted to the use of the application only.
However, this should not exempt from a maximum restriction of rights on application files. As much as possible, the files must belong to root, and the dedicated user must have write rights only on files that specifically request it.
#### YEP 3.5
##### Follow the recommendations in the app's documentation | validated | manual | OFFICIAL |
Typically, an application provides documentation to help system administrators perform the installation. It is advisable to follow the recommendations, including the permissions to be granted per file or directory.
However, the package maintainer must remain vigilant, some documentation may be erroneous or insufficient.
#### YEP 3.6
##### Update versions with CVE | draft | manual | OFFICIAL |
The [CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), or Common Vulnerabilities and Exposures, identify security vulnerabilities common to applications. The corrections of these flaws may concern the application and it is important in this case to follow these updates as closely as possible.
More generally, the application can propose a patch for a specific vulnerability to itself.
Generally, this YEP involves tracking an information channel to track application security updates and reacting quickly by updating the package accordingly.
As specified in YEP 1.7, if a security patch is to be deployed urgently, another YunoHost member may be required to commit to the package if necessary.
### YEP 4
#### Embedding an app
This meta YEP deals with the integration of an app with the YunoHost environment. Good integration is generally a guarantee of quality and comfort for users.
#### YEP 4.2
##### Linking Authentication to sso | validated | manual | OFFICIAL |
The Single Sign On makes it possible to avoid having to create the same users for each app. Thus, a YunoHost user can connect via the Single Sign On to all the apps.
To do this, you must link your app to the LDAP and / or use hooks to duplicate the account credentials in the app's database.
Once this is done, the maintainer can use the REMOTE_USER HTTP statement to check whether a user is logged on or not. In general, modules exist (whether at the level of the technology, the framework or even the app itself).
If required, SSOwat can be used to secure access to one or more parts of the app. It may be relevant to secure access to an administration page with the SSO rather than a `.htaccess` and make the rest of the app accessible to all visitors.
#### YEP 4.2.1
##### Logout | validated | manual | OFFICIAL |
When you click on a disconnect action within the app, it should disconnect the user from the SSO. Otherwise, there is a risk that the user will inadvertently leave an open session.
#### YEP 4.3
##### Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL |
The application must have a backup script to allow users to back up the application, its configuration, and its data.
#### YEP 4.4
##### Provide a functional YunoHost restoration script | validated | Home | OFFICIAL |
The application must have a restore script to allow users to restore an application previously backed up with the backup script.
#### YEP 4.5
##### Using Hooks | validated | manual | OPTIONAL |
YunoHost offers the possibility to launch actions with each processing carried out by the command line. This can be practical in many cases.
Examples:
* Add / delete a user in the app database when using `yunohost user create` or` yunohost user remove`
* Manage the addition of a new domain name during the `yunohost domain add` action
* Run a script after the firewall has been reloaded
List of hooks:
* post_domain_add
* post_domain_remove
* post_user_create
* post_user_delete
* post_backup_create
* post_backup_restore
* pre_backup_delete
* post_backup_delete
* post_app_addaccess
* post_app_removeaccess
* post_app_clearaccess
* post_app_addaccess
* post_iptable_rules
These scripts are to be placed in a `hooks` directory as in this package: https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks.
#### YEP 4.6
##### Manage multi-instance | validated | manual | OPTIONAL |
It is sometimes practical to be able to install the same app several times. For example, for several different domain names.
However, be careful about how to handle file paths, dependencies, ports used, etc. so that there is no collision.
#### YEP 4.7
##### Add a module to the CLI | validated | manual | OPTIONAL |
You can create a module to add commands to the yunohost command line.
To do this, you need to add an actionmaps to `/usr/share/moulinette/actionsmap/`. This actionmaps must start with `ynh_`.
The packages [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) and [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) are old (and not up to date) can be used as the basis for this type of module.
#### YEP 4.8
##### Add a module to the web admin | draft | manual | OPTIONAL |

View file

@ -79,10 +79,12 @@ Chaque YEP est associée à :
| YEP 4.8 | Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL | | YEP 4.8 | Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL |
### YEP 1 - Communiquer avec la communauté ### YEP 1
#### Communiquer avec la communauté
La YEP 1 est une meta YEP, elle explique ce qu'il faut faire pour échanger avec la communauté autour d'un paquet d'application YunoHost. La YEP 1 est une meta YEP, elle explique ce qu'il faut faire pour échanger avec la communauté autour d'un paquet d'application YunoHost.
#### YEP 1.1 - Nommer son app et son dépôt | validé | manuel | NOTWORKING | #### YEP 1.1
##### Nommer son app et son dépôt | validé | manuel | NOTWORKING |
Chaque application YunoHost possède un id inscrit dans le manifeste de l'application. Chaque application YunoHost possède un id inscrit dans le manifeste de l'application.
Cet identifiant doit être unique entre chaque paquet d'application. Cet identifiant doit être unique entre chaque paquet d'application.
Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (official, community, internetcube). Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (official, community, internetcube).
@ -100,7 +102,8 @@ Par convention, les dépôts d'applications YunoHost sont toujours nommés de le
Exemple : ID : exemple Nom de dépôt : exemple_ynh Exemple : ID : exemple Nom de dépôt : exemple_ynh
#### YEP 1.2 - Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING | #### YEP 1.2
##### Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING |
Il est conseillé dès le début du packaging d'inscrire une app sur un des dépôts d'application YunoHost. Il est conseillé dès le début du packaging d'inscrire une app sur un des dépôts d'application YunoHost.
Ces dépôts ont plusieurs fonctions : Ces dépôts ont plusieurs fonctions :
@ -111,7 +114,8 @@ Ces dépôts ont plusieurs fonctions :
Pour les listes `official.json` et `community.json`, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps). Pour les listes `official.json` et `community.json`, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps).
#### YEP 1.3 - Indiquer la licence associée au paquet | brouillon | AUTO | WORKING | #### YEP 1.3
##### Indiquer la licence associée au paquet | brouillon | AUTO | WORKING |
La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste. La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste.
Les listes d'applications official.json et community.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. Les listes d'applications official.json et community.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas.
@ -135,12 +139,15 @@ Quelques liens intéressants pour aider au choix de licence:
* [La documentation sur les licences du projet GNU](https://www.gnu.org/licenses/licenses.fr.html) * [La documentation sur les licences du projet GNU](https://www.gnu.org/licenses/licenses.fr.html)
* [Un guide du projet GNU pour aider au choix d'une licence](https://www.gnu.org/licenses/license-recommendations.fr.html) * [Un guide du projet GNU pour aider au choix d'une licence](https://www.gnu.org/licenses/license-recommendations.fr.html)
#### YEP 1.4 - Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL | #### YEP 1.4
##### Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL |
Le mainteneur de l'application doit s'engager à maintenir son app sur la durée si il souhaite que celle-ci rejoigne la liste des applications officielles. Le mainteneur de l'application doit s'engager à maintenir son app sur la durée si il souhaite que celle-ci rejoigne la liste des applications officielles.
Cela implique de surveiller les mises à jour de l'application upstream, de respecter les nouvelles règles de packaging et de répondre aux demandes des utilisateurs. Cela implique de surveiller les mises à jour de l'application upstream, de respecter les nouvelles règles de packaging et de répondre aux demandes des utilisateurs.
#### YEP 1.5 - Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING | #### YEP 1.5
#### YEP 1.6 - Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL | ##### Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING |
#### YEP 1.6
##### Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL |
Afin de suivre l'évolution du format de packaging ainsi que des bonnes pratiques, il est recommandé de: Afin de suivre l'évolution du format de packaging ainsi que des bonnes pratiques, il est recommandé de:
* s'inscrire à la liste de discussion `apps@list.yunohost.org` * s'inscrire à la liste de discussion `apps@list.yunohost.org`
* suivre [la catégorie Apps packaging du forum](https://forum.yunohost.org/c/apps-packaging) * suivre [la catégorie Apps packaging du forum](https://forum.yunohost.org/c/apps-packaging)
@ -150,7 +157,8 @@ Pour suivre l'évolution de YunoHost de façon plus générale :
* suivre [la catégorie Annoucement du forum](https://forum.yunohost.org/c/announcement) * suivre [la catégorie Annoucement du forum](https://forum.yunohost.org/c/announcement)
* suivre les discussions sur contrib@list.yunohost.org * suivre les discussions sur contrib@list.yunohost.org
#### YEP 1.7 - Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL | #### YEP 1.7
##### Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL |
L'ajout d'une app sur l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) permet de faire connaitre l'apps auprès des autres contributeurs qui pourraient être tentés de packager l'application visée. L'ajout d'une app sur l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) permet de faire connaitre l'apps auprès des autres contributeurs qui pourraient être tentés de packager l'application visée.
C'est aussi un moyen pour permettre de déployer rapidement un correctif de sécurité si nécessaire dans le cas où le mainteneur ne serait pas disponible. C'est aussi un moyen pour permettre de déployer rapidement un correctif de sécurité si nécessaire dans le cas où le mainteneur ne serait pas disponible.
@ -158,7 +166,8 @@ C'est aussi un moyen pour permettre de déployer rapidement un correctif de séc
Procédure de transfert : demander sur le [salon de discussion `Apps`](chat_rooms_fr) à être invité à lorganisation en lui fournissant le nom de son compte GitHub. Procédure de transfert : demander sur le [salon de discussion `Apps`](chat_rooms_fr) à être invité à lorganisation en lui fournissant le nom de son compte GitHub.
Une fois linvitation acceptée, [transférer son dépôt sur lorganisation en suivant ce tutoriel](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/#transferring-a-repository-to-another-user-account-or-to-an-organization). Une fois linvitation acceptée, [transférer son dépôt sur lorganisation en suivant ce tutoriel](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/#transferring-a-repository-to-another-user-account-or-to-an-organization).
#### YEP 1.8 - Publier des demandes de test | validé | manuel | OFFICIAL | #### YEP 1.8
##### Publier des demandes de test | validé | manuel | OFFICIAL |
Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/apps). Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/apps).
Il est recommandé d'indiquer si certains tests n'ont pas été menés. Il est recommandé d'indiquer si certains tests n'ont pas été menés.
@ -182,7 +191,8 @@ Il est recommandé d'indiquer si certains tests n'ont pas été menés.
* Dossier déjà utilisé par une autre application. * Dossier déjà utilisé par une autre application.
* Backup et restore. * Backup et restore.
#### YEP 1.9 - Documenter l'app | validé | AUTO | OFFICIAL | #### YEP 1.9
##### Documenter l'app | validé | AUTO | OFFICIAL |
Avant tout, il convient de faire une description correcte de l'app dans le champ `description` du manifest. L'insertion de mot clé dans cette description peut être une bonne idée, dans la mesure où un utilisateur pourrait être amené à faire une recherche (CTRL+F) parmi toutes les applications. Avant tout, il convient de faire une description correcte de l'app dans le champ `description` du manifest. L'insertion de mot clé dans cette description peut être une bonne idée, dans la mesure où un utilisateur pourrait être amené à faire une recherche (CTRL+F) parmi toutes les applications.
Il y a également le README.md, ce dernier doit et peut contenir : Il y a également le README.md, ce dernier doit et peut contenir :
@ -194,24 +204,31 @@ Il y a également le README.md, ce dernier doit et peut contenir :
* la roadmap/TODO * la roadmap/TODO
* éventuellement les pré-requis en termes de mémoires ram, processeur etc. (certains équipements ont moins de 512Mo de ram) * éventuellement les pré-requis en termes de mémoires ram, processeur etc. (certains équipements ont moins de 512Mo de ram)
#### YEP 1.10 - Garder un historique de version propre | brouillon | manuel | OFFICIAL | #### YEP 1.10
#### YEP 1.11 - Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL | ##### Garder un historique de version propre | brouillon | manuel | OFFICIAL |
#### YEP 1.11
##### Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL |
### YEP 2 - Stabiliser une app ### YEP 2
#### YEP 2.1 - Respecter le format du manifeste | validé | auto | INPROGRESS | #### Stabiliser une app
#### YEP 2.1
##### Respecter le format du manifeste | validé | auto | INPROGRESS |
Le manifeste permet de décrire une app afin que YunoHost puisse lui appliquer les bons traitements. Pour plus d'information voir la [documentation dédiée](https://yunohost.org/#/packaging_apps_manifest). Le manifeste permet de décrire une app afin que YunoHost puisse lui appliquer les bons traitements. Pour plus d'information voir la [documentation dédiée](https://yunohost.org/#/packaging_apps_manifest).
#### YEP 2.2 - Utiliser bash pour les scripts principaux | validé | auto | WORKING | #### YEP 2.2
##### Utiliser bash pour les scripts principaux | validé | auto | WORKING |
Les scripts d'action (install, upgrade, remove, backup et restore) doivent être en bash afin que la cli/api yunohost puisse correctement les appeler. Les scripts d'action (install, upgrade, remove, backup et restore) doivent être en bash afin que la cli/api yunohost puisse correctement les appeler.
Ceci étant, rien n'empêche à l'intérieur de ces scripts de faire appel à d'autres scripts ou bibliothèques de fonction. Ceux-ci ne sont pas obligés d'être en bash. Ceci étant, rien n'empêche à l'intérieur de ces scripts de faire appel à d'autres scripts ou bibliothèques de fonction. Ceux-ci ne sont pas obligés d'être en bash.
Cependant, il faudra porter une attention particulière à l'affichage correct des logs d'information, de warning, ou d'erreurs. Afin qu'un utilisateur de la cli/api yunohost puisse comprendre le fonctionnement du script venant d'être exécuté et au besoin réparer son instance YunoHost. Cependant, il faudra porter une attention particulière à l'affichage correct des logs d'information, de warning, ou d'erreurs. Afin qu'un utilisateur de la cli/api yunohost puisse comprendre le fonctionnement du script venant d'être exécuté et au besoin réparer son instance YunoHost.
#### YEP 2.3 - Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING | #### YEP 2.3
##### Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING |
Lors de l'installation, il est nécessaire de sauvegarder chaque réponse aux questions du manifeste. En effet, même si au début il n'est pas nécessaire d'écrire un script de mise à jour, par la suite ce sera sans doute le cas. Or, sans les informations initiales, la mise à jour peut être plus fastidieuse. Lors de l'installation, il est nécessaire de sauvegarder chaque réponse aux questions du manifeste. En effet, même si au début il n'est pas nécessaire d'écrire un script de mise à jour, par la suite ce sera sans doute le cas. Or, sans les informations initiales, la mise à jour peut être plus fastidieuse.
#### YEP 2.4 - Détecter et gérer les erreurs | brouillon | manuel | WORKING | #### YEP 2.4
##### Détecter et gérer les erreurs | brouillon | manuel | WORKING |
Les scripts install, upgrade, backup et restore doivent détecter les erreurs pour éviter la poursuite des scripts en cas d'erreur bloquante ou d'usage de variable vide. Les scripts install, upgrade, backup et restore doivent détecter les erreurs pour éviter la poursuite des scripts en cas d'erreur bloquante ou d'usage de variable vide.
L'usage de trap et de set -eu est recommandé pour détecter et traiter les erreurs ([Discussion en cours à ce sujet](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-et-ou-trap/2249/5)) L'usage de trap et de set -eu est recommandé pour détecter et traiter les erreurs ([Discussion en cours à ce sujet](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-et-ou-trap/2249/5))
Il est nécessaire également de vérifier le contenu des variables avant les suppressions du script remove. Par exemple un `rm -Rf /var/www/$app` avec `$app` vide aurait un résultat désastreux. Il est nécessaire également de vérifier le contenu des variables avant les suppressions du script remove. Par exemple un `rm -Rf /var/www/$app` avec `$app` vide aurait un résultat désastreux.
@ -220,8 +237,10 @@ Au début des scripts, avant toutes modifications, il faut vérifier l'existence
N'oubliez pas qu'en cas d'erreur d'installation le script de suppression sera lancé automatiquement par la cli yunohost. N'oubliez pas qu'en cas d'erreur d'installation le script de suppression sera lancé automatiquement par la cli yunohost.
#### YEP 2.5 - Copier correctement des fichiers | brouillon | manuel | WORKING | #### YEP 2.5
#### YEP 2.6 - Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING | ##### Copier correctement des fichiers | brouillon | manuel | WORKING |
#### YEP 2.6
##### Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING |
Chaque script devrait vérifier que les valeurs d'entrées sont correctes. Chaque script devrait vérifier que les valeurs d'entrées sont correctes.
Voici quelques exemples : Voici quelques exemples :
@ -232,53 +251,66 @@ Voici quelques exemples :
Dans le cas où l'une des valeurs est incorrecte, il est alors nécessaire d'annuler toutes modifications réalisées préalablement sur l'instance. Le mieux étant de faire tous ces contrôles avant de modifier le système. Dans le cas où l'une des valeurs est incorrecte, il est alors nécessaire d'annuler toutes modifications réalisées préalablement sur l'instance. Le mieux étant de faire tous ces contrôles avant de modifier le système.
#### YEP 2.7 - Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING | #### YEP 2.7
##### Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING |
Certaines instructions nécessitent les droits sudo. Il faut dans ce cas ne pas oublier de préfixer ces instructions par `sudo `. Certaines instructions nécessitent les droits sudo. Il faut dans ce cas ne pas oublier de préfixer ces instructions par `sudo `.
Dans d'autres cas il est nécessaire de donner des droits à l'aide de chmod et de chown. Dans d'autres cas il est nécessaire de donner des droits à l'aide de chmod et de chown.
#### YEP 2.8 - Modifier correctement une configuration système | brouillon | manuel | WORKING | #### YEP 2.8
##### Modifier correctement une configuration système | brouillon | manuel | WORKING |
Les modifications du système doivent être réversible pour que la suppression de l'application soit sans conséquences pour le système ne laisse pas de résidus. Les modifications du système doivent être réversible pour que la suppression de l'application soit sans conséquences pour le système ne laisse pas de résidus.
Pour celà, il faut recourir autant que possible aux dossiers `.d` des configurations système. Où lorsqu'il n'est pas possible de faire autrement, d'indiquer clairement la configuration modifiée par une application et s'assurer que les modifications seront retirées lors de sa suppression. Pour celà, il faut recourir autant que possible aux dossiers `.d` des configurations système. Où lorsqu'il n'est pas possible de faire autrement, d'indiquer clairement la configuration modifiée par une application et s'assurer que les modifications seront retirées lors de sa suppression.
#### YEP 2.9 - Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING | #### YEP 2.9
##### Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING |
À lexception de dépendances (pax exemple : paquets Debian) utilisés par dautres services ou applications. À lexception de dépendances (pax exemple : paquets Debian) utilisés par dautres services ou applications.
#### YEP 2.10 - Configurer les logs de l'application | brouillon | manuel | WORKING | #### YEP 2.10
##### Configurer les logs de l'application | brouillon | manuel | WORKING |
Si possible, l'application doit utiliser un fichier de log, qui sera de préférence dans /var/log. Si possible, l'application doit utiliser un fichier de log, qui sera de préférence dans /var/log.
Si le log est mis en place par le script install et non par l'application elle-même, un fichier de configuration pour log-rotate devra être ajouté pour gérer les rotations des logs de l'application. Si le log est mis en place par le script install et non par l'application elle-même, un fichier de configuration pour log-rotate devra être ajouté pour gérer les rotations des logs de l'application.
#### YEP 2.11 - Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL | #### YEP 2.11
##### Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL |
Il est conseillé de rendre les scripts le plus générique possible, un bon moyen d'y parvenir est d'utiliser une variable pour le nom de l'app afin d'éviter qu'il se retrouve partout dans les scripts. Ainsi, un autre packageur pourra plus facilement se servir du script pour une autre app. Il est conseillé de rendre les scripts le plus générique possible, un bon moyen d'y parvenir est d'utiliser une variable pour le nom de l'app afin d'éviter qu'il se retrouve partout dans les scripts. Ainsi, un autre packageur pourra plus facilement se servir du script pour une autre app.
#### YEP 2.12 - Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL | #### YEP 2.12
##### Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL |
Afin de simplifier le packaging, d'uniformiser les pratiques, d'éviter les erreurs et d'augmenter la durée de vie d'un script vis-à-vis des futures versions de YunoHost. Un ensemble de helpers permettant de faire de nombreuses actions est proposé. Afin de simplifier le packaging, d'uniformiser les pratiques, d'éviter les erreurs et d'augmenter la durée de vie d'un script vis-à-vis des futures versions de YunoHost. Un ensemble de helpers permettant de faire de nombreuses actions est proposé.
Pour plus d'informations : Pour plus d'informations :
* consulter [la documentation des helpers](https://yunohost.org/#/packaging_apps_helpers_fr) * consulter [la documentation des helpers](https://yunohost.org/#/packaging_apps_helpers_fr)
* explorer [le répertoire des helpers](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d) * explorer [le répertoire des helpers](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d)
#### YEP 2.13 - Traduire le paquet en anglais | brouillon | manuel | OFFICIAL | #### YEP 2.13
#### YEP 2.14 - Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL | ##### Traduire le paquet en anglais | brouillon | manuel | OFFICIAL |
#### YEP 2.14
##### Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL |
*Juste pour éclaircir un peu cette YEP, mais ça reste à l'état de brouillon.* *Juste pour éclaircir un peu cette YEP, mais ça reste à l'état de brouillon.*
Le but est de trouver une méthode plus fiable que sed pour modifier les fichiers de configuration. sed pouvant éventuellement avoir des effets de bord en modifiant des parties non désirées du fichier de configuration, en particulier avec l'usage de regex. Le but est de trouver une méthode plus fiable que sed pour modifier les fichiers de configuration. sed pouvant éventuellement avoir des effets de bord en modifiant des parties non désirées du fichier de configuration, en particulier avec l'usage de regex.
#### YEP 2.15 - Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL | #### YEP 2.15
##### Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL |
#### YEP 2.16 - Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL | #### YEP 2.16
##### Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL |
YunoHost s'installe sur ARM, sur x86 et x64. Un paquet devrait donc être testé sur ces trois architectures processeur. YunoHost s'installe sur ARM, sur x86 et x64. Un paquet devrait donc être testé sur ces trois architectures processeur.
Certains paquets ne sont pas disponibles sur ARM, il convient dans ce cas d'étudier d'autres solutions ou d'indiquer dans le README.md que l'application ne fonctionne pas sur ARM et de bloquer linstallation par détection du type darchitecture. Certains paquets ne sont pas disponibles sur ARM, il convient dans ce cas d'étudier d'autres solutions ou d'indiquer dans le README.md que l'application ne fonctionne pas sur ARM et de bloquer linstallation par détection du type darchitecture.
#### YEP 2.17 - Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL | #### YEP 2.17
##### Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL |
Le script de mise à jour doit pouvoir fonctionner même si les mises à jour précédentes n'ont pas été effectuées. Le script de mise à jour doit pouvoir fonctionner même si les mises à jour précédentes n'ont pas été effectuées.
Ainsi, il doit être possible de faire des sauts de mise à jour d'une version N-x vers une version N. Pour ce faire il est conseillé d'enregistrer les numéros de version dans les settings de l'app. Ainsi, il doit être possible de faire des sauts de mise à jour d'une version N-x vers une version N. Pour ce faire il est conseillé d'enregistrer les numéros de version dans les settings de l'app.
### YEP 2.18 - Stabiliser une webapp ### YEP 2.18
##### Stabiliser une webapp
La majeure partie des applications YunoHost sont des web apps, mais certaines n'en sont pas. Les YEP 2.18.x développent certaines spécificités liées aux web app. La majeure partie des applications YunoHost sont des web apps, mais certaines n'en sont pas. Les YEP 2.18.x développent certaines spécificités liées aux web app.
#### YEP 2.18.1 - Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING | #### YEP 2.18.1
##### Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING |
Bien souvent une web app s'installe à partir de formulaires affichés sur une page web. Cette façon de faire, bien que pratique pour un humain, l'est moins pour un programme. Bien souvent une web app s'installe à partir de formulaires affichés sur une page web. Cette façon de faire, bien que pratique pour un humain, l'est moins pour un programme.
Il convient donc de vérifier si l'application ne propose pas une solution d'installation en ligne de commande. Il convient donc de vérifier si l'application ne propose pas une solution d'installation en ligne de commande.
@ -288,52 +320,65 @@ Si ce n'est pas le cas, il convient d'utiliser l'option -H de curl. En effet, da
curl -kL -H "Host: $domain" --data "&param1=Text1&param2=text2" https://localhost$path/install.php > /dev/null 2>&1 curl -kL -H "Host: $domain" --data "&param1=Text1&param2=text2" https://localhost$path/install.php > /dev/null 2>&1
``` ```
#### YEP 2.18.2 - Gérer l'installation à la racine dun nom de domaine | validé | auto | WORKING | #### YEP 2.18.2
##### Gérer l'installation à la racine dun nom de domaine | validé | auto | WORKING |
Une web app devrait pouvoir s'installer à la racine dun nom de domaine. Une web app devrait pouvoir s'installer à la racine dun nom de domaine.
#### YEP 2.18.3 - Gérer l'installation sur un sous-domaine | validé | auto | WORKING | #### YEP 2.18.3
##### Gérer l'installation sur un sous-domaine | validé | auto | WORKING |
Une web app devraient pouvoir s'installer sur un sous-domaine directement sans sous dossiers. Une web app devraient pouvoir s'installer sur un sous-domaine directement sans sous dossiers.
#### YEP 2.18.4 - Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL | #### YEP 2.18.4
##### Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL |
Une web app devraient pouvoir s'installer sur un chemin `/path`. Une web app devraient pouvoir s'installer sur un chemin `/path`.
#### YEP 2.18.5 - Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL | #### YEP 2.18.5
##### Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL |
Sauf dans de rare cas il est conseillé d'intégrer la tuile YunoHost qui permet de retourner sur le menu du SSO. Cette intégration se fait dans la configuration nginx. Sauf dans de rare cas il est conseillé d'intégrer la tuile YunoHost qui permet de retourner sur le menu du SSO. Cette intégration se fait dans la configuration nginx.
Certains utilisateurs ont remplacé ce carré par un script ajoutant un menu en haut de chaque webapp. Certains utilisateurs ont remplacé ce carré par un script ajoutant un menu en haut de chaque webapp.
### YEP 3 - Sécuriser une app ### YEP 3
#### YEP 3.1 - Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING | #### Sécuriser une app
#### YEP 3.2 - Ouvrir un port correctement | brouillon | manuel | WORKING | #### YEP 3.1
##### Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING |
#### YEP 3.2
##### Ouvrir un port correctement | brouillon | manuel | WORKING |
Si l'application nécessite l'ouverture d'un port, il est nécessaire de vérifier préalablement que ce port n'est pas déjà utilisé par une autre application. Le cas échéant, le script install doit être capable de trouver un autre port disponible. Si l'application nécessite l'ouverture d'un port, il est nécessaire de vérifier préalablement que ce port n'est pas déjà utilisé par une autre application. Le cas échéant, le script install doit être capable de trouver un autre port disponible.
Il convient également de vérifier si le port doit être ouvert sur le routeur, au delà du réseau local. Si ce n'est pas le cas, l'argument `--no-upnp` doit être ajouté à la commande `yunohost firewall allow` afin de limiter l'ouverture du port au réseau local uniquement. Il convient également de vérifier si le port doit être ouvert sur le routeur, au delà du réseau local. Si ce n'est pas le cas, l'argument `--no-upnp` doit être ajouté à la commande `yunohost firewall allow` afin de limiter l'ouverture du port au réseau local uniquement.
#### YEP 3.3 - Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL | #### YEP 3.3
##### Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL |
L'application upstream ne doit pas être intégrée en tarball dans le dossier source du package, car cela alourdit le package et le dépôt git et ne permet pas la vérification de l'intégrité de la source. L'application upstream ne doit pas être intégrée en tarball dans le dossier source du package, car cela alourdit le package et le dépôt git et ne permet pas la vérification de l'intégrité de la source.
La source doit donc être téléchargée depuis le site officiel, puis son intégritée doit être vérifiée avant de l'installer. La source doit donc être téléchargée depuis le site officiel, puis son intégritée doit être vérifiée avant de l'installer.
#### YEP 3.4 - Isoler l'app | brouillon | manuel | OFFICIAL | #### YEP 3.4
##### Isoler l'app | brouillon | manuel | OFFICIAL |
Afin d'éviter des effets de bords en cas de compromission éventuelle de l'application, celle-ci doit être isolée pour de ne pas risquer d'impacter les autres applications. Afin d'éviter des effets de bords en cas de compromission éventuelle de l'application, celle-ci doit être isolée pour de ne pas risquer d'impacter les autres applications.
Pour cela, il convient d'isoler l'application dans son dossier d'exécution en restreignant son environnement par un chroot, soit par un mécanisme interne à l'application lorsque c'est possible (par exemple pour un serveur ftp), soit par l'usage de phpfpm. Pour cela, il convient d'isoler l'application dans son dossier d'exécution en restreignant son environnement par un chroot, soit par un mécanisme interne à l'application lorsque c'est possible (par exemple pour un serveur ftp), soit par l'usage de phpfpm.
De même, pour restreindre la portée de l'utilisateur exécutant l'application, il est préférable d'utiliser un utilisateur dédiée à l'application. Dont les droits sont restreint à l'usage de l'application uniquement. De même, pour restreindre la portée de l'utilisateur exécutant l'application, il est préférable d'utiliser un utilisateur dédiée à l'application. Dont les droits sont restreint à l'usage de l'application uniquement.
Toutefois, cela ne doit pas exempter d'une restriction maximale des droits sur les fichiers de l'application. Autant que possible, les fichiers doivent appartenir à root, et l'utilisateur dédié ne doit avoir de droits d'écriture que sur les fichiers le réclamant expressément. Toutefois, cela ne doit pas exempter d'une restriction maximale des droits sur les fichiers de l'application. Autant que possible, les fichiers doivent appartenir à root, et l'utilisateur dédié ne doit avoir de droits d'écriture que sur les fichiers le réclamant expressément.
#### YEP 3.5 - Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL | #### YEP 3.5
##### Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL |
En général, une application propose une documentation afin d'aider les administrateurs systèmes à réaliser l'installation. Il est conseiller d'en suivre les recommandations, notamment celles concernant les permissions à accorder par fichier ou répertoire. En général, une application propose une documentation afin d'aider les administrateurs systèmes à réaliser l'installation. Il est conseiller d'en suivre les recommandations, notamment celles concernant les permissions à accorder par fichier ou répertoire.
Le mainteneur de paquet doit toutefois rester vigilant, certaines documentations pouvant être erronées ou insuffisante. Le mainteneur de paquet doit toutefois rester vigilant, certaines documentations pouvant être erronées ou insuffisante.
#### YEP 3.6 - Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL | #### YEP 3.6
##### Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL |
Les [CVE](https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), ou Common Vulnerabilities and Exposures, recensent les failles de sécurités communes aux applications. Les corrections de ces failles peuvent concerner l'application et il est important dans ce cas de suivre au plus près ces mises à jour. Les [CVE](https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), ou Common Vulnerabilities and Exposures, recensent les failles de sécurités communes aux applications. Les corrections de ces failles peuvent concerner l'application et il est important dans ce cas de suivre au plus près ces mises à jour.
Plus généralement, l'application peut proposer un correctif pour une faille spécifique à elle-même. Plus généralement, l'application peut proposer un correctif pour une faille spécifique à elle-même.
De manière générale, cette YEP implique de suivre un canal d'information pour suivre les mises à jour de sécurité de l'application et réagir rapidement en mettant à jour le package en conséquence. De manière générale, cette YEP implique de suivre un canal d'information pour suivre les mises à jour de sécurité de l'application et réagir rapidement en mettant à jour le package en conséquence.
Comme précisé dans la YEP 1.7, si un correctif de sécurité doit être déployé en urgence, un autre membre de YunoHost peut être amené à faire un commit sur le package si nécessaire. Comme précisé dans la YEP 1.7, si un correctif de sécurité doit être déployé en urgence, un autre membre de YunoHost peut être amené à faire un commit sur le package si nécessaire.
### YEP 4 - Intégrer une app ### YEP 4
#### Intégrer une app
Cette meta YEP traite de l'intégration d'une app avec l'environnement YunoHost. Une bonne intégration est en général un gage de qualité et de confort pour les utilisateurs. Cette meta YEP traite de l'intégration d'une app avec l'environnement YunoHost. Une bonne intégration est en général un gage de qualité et de confort pour les utilisateurs.
#### YEP 4.2 - Lier l'authentification au sso | validé | manuel | OFFICIAL | #### YEP 4.2
##### Lier l'authentification au sso | validé | manuel | OFFICIAL |
Le Single Sign On permet d'éviter d'avoir à créer les mêmes utilisateurs pour chaque app. Ainsi, un utilisateur YunoHost pourra se connecter via le Single Sign On à l'ensemble des apps. Le Single Sign On permet d'éviter d'avoir à créer les mêmes utilisateurs pour chaque app. Ainsi, un utilisateur YunoHost pourra se connecter via le Single Sign On à l'ensemble des apps.
Pour se faire, il convient de lier son app au LDAP et/ou d'utiliser des hooks pour dupliquer les identifiants du compte dans la base de données de l'app. Pour se faire, il convient de lier son app au LDAP et/ou d'utiliser des hooks pour dupliquer les identifiants du compte dans la base de données de l'app.
@ -342,16 +387,20 @@ Une fois cette opération appliquée, le mainteneur peut utiliser l'instruction
Au besoin, SSOwat permet de sécuriser l'accès à une ou plusieurs parties de l'app. Il peut ainsi être pertinent de sécuriser l'accès à une page d'administration avec le SSO plutôt qu'un `.htaccess` et de rendre le reste de l'app accessible à tous les visiteurs. Au besoin, SSOwat permet de sécuriser l'accès à une ou plusieurs parties de l'app. Il peut ainsi être pertinent de sécuriser l'accès à une page d'administration avec le SSO plutôt qu'un `.htaccess` et de rendre le reste de l'app accessible à tous les visiteurs.
#### YEP 4.2.1 - Déconnexion | validé | manuel | OFFICIAL | #### YEP 4.2.1
##### Déconnexion | validé | manuel | OFFICIAL |
Lorsque l'on clique sur une action de déconnexion au sein de l'app, celle-ci devrait déconnecter l'utilisateur du SSO. Sinon, il y a un risque que l'utilisateur laisse par mégarde une session ouverte. Lorsque l'on clique sur une action de déconnexion au sein de l'app, celle-ci devrait déconnecter l'utilisateur du SSO. Sinon, il y a un risque que l'utilisateur laisse par mégarde une session ouverte.
#### YEP 4.3 - Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL | #### YEP 4.3
##### Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL |
L'application doit disposer d'un script backup pour permettre aux utilisateurs de sauvegarder l'application, sa configuration et ses données. L'application doit disposer d'un script backup pour permettre aux utilisateurs de sauvegarder l'application, sa configuration et ses données.
#### YEP 4.4 - Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL | #### YEP 4.4
##### Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL |
L'application doit disposer d'un script restore pour permettre aux utilisateurs de restaurer une application sauvegardée préalablement avec le script backup. L'application doit disposer d'un script restore pour permettre aux utilisateurs de restaurer une application sauvegardée préalablement avec le script backup.
#### YEP 4.5 - Utiliser les hooks | validé | manuel | OPTIONAL | #### YEP 4.5
##### Utiliser les hooks | validé | manuel | OPTIONAL |
YunoHost offre la possibilité de lancer des actions à chaque traitement effectué par la ligne de commande. Ceci peut être pratique dans de nombreux cas. YunoHost offre la possibilité de lancer des actions à chaque traitement effectué par la ligne de commande. Ceci peut être pratique dans de nombreux cas.
Exemples : Exemples :
@ -377,15 +426,18 @@ Liste des hooks :
Ces scripts sont à placer dans un répertoire `hooks` comme dans ce paquet : https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks . Ces scripts sont à placer dans un répertoire `hooks` comme dans ce paquet : https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks .
#### YEP 4.6 - Gèrer le multi-instance | validé | manuel | OPTIONAL | #### YEP 4.6
##### Gèrer le multi-instance | validé | manuel | OPTIONAL |
Il est parfois pratique de pouvoir installer plusieurs fois une même app. Par exemple, pour plusieurs noms de domaine différents. Il est parfois pratique de pouvoir installer plusieurs fois une même app. Par exemple, pour plusieurs noms de domaine différents.
Il faut toutefois faire attention à la façon de gérer les chemins de fichier, les dépendances, les ports utilisés etc. de sorte qu'il n'y ait pas de collision. Il faut toutefois faire attention à la façon de gérer les chemins de fichier, les dépendances, les ports utilisés etc. de sorte qu'il n'y ait pas de collision.
#### YEP 4.7 - Ajouter un module à la CLI | validé | manuel | OPTIONAL | #### YEP 4.7
##### Ajouter un module à la CLI | validé | manuel | OPTIONAL |
Il est possible de créer un module afin d'ajouter des commandes à la ligne de commandes yunohost. Il est possible de créer un module afin d'ajouter des commandes à la ligne de commandes yunohost.
Pour ce faire, il faut ajouter un actionmaps dans `/usr/share/moulinette/actionsmap/`. Cet actionmaps doit commencer par `ynh_`. Pour ce faire, il faut ajouter un actionmaps dans `/usr/share/moulinette/actionsmap/`. Cet actionmaps doit commencer par `ynh_`.
Les paquets [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) et [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) bien quanciens (et non à jour) peuvent servir de base pour mettre en place ce genre de module. Les paquets [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) et [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) bien quanciens (et non à jour) peuvent servir de base pour mettre en place ce genre de module.
#### YEP 4.8 - Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL | #### YEP 4.8
##### Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL |

View file

@ -26,6 +26,14 @@ Après l'ajout d'un utilisateur autorisé sur une application.
Après la suppression de l'autorisation d'un utilisateur sur une application. Après la suppression de l'autorisation d'un utilisateur sur une application.
- `post_app_clearaccess` - `post_app_clearaccess`
Après l'effacement de toute les règles d'accès sur une application. Après l'effacement de toute les règles d'accès sur une application.
- `post_app_install`
Après l'installation d'une application
- `post_app_upgrade`
Après l'upgrade d'une applications
- `post_app_remove`
Après la supression d'une applications
- `post_app_change_url`
Après avoir modifié le chemin et ou le nom de domaine d'une application
- `conf_regen` - `conf_regen`
Avant et après la régénération de la configuration d'un service. Avant et après la régénération de la configuration d'un service.
Services pris en charge par regen-conf: Services pris en charge par regen-conf:
@ -84,7 +92,6 @@ password=$3 # Clear password
firstname=$4 firstname=$4
lastname=$5 lastname=$5
``` ```
##### `post_user_delete` ##### `post_user_delete`
```bash ```bash
@ -105,6 +112,13 @@ ipv6=$2 # True/False Indique si l'IPV6 est activé ou non.
backup_name=$1 backup_name=$1
``` ```
##### `post_app_install`, `post_app_upgrade`, `post_app_remove` et `post_app_change_url`
Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts_fr).
Example: pour `post_app_install` les variables sont les mêmes que pour le script `install`
##### `post_app_addaccess` et `post_app_removeaccess` ##### `post_app_addaccess` et `post_app_removeaccess`
```bash ```bash

View file

@ -12,6 +12,7 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun
"fr": "Webmail Open Source" "fr": "Webmail Open Source"
}, },
"url": "http://roundcube.net/", "url": "http://roundcube.net/",
"version": "1.0-1",
"license": "free", "license": "free",
"maintainer": { "maintainer": {
"name": "kload", "name": "kload",
@ -62,6 +63,8 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun
* **url**: software website. * **url**: software website.
* **version**: version of the package builded from the upstream version number and an incremental number for each change in the package without upstream change. Example "1.0.0-7". Must be a string.
* **license**: application license: `free` or `non-free`. Be careful to not confuse with package license which must be put in `LICENSE` file. * **license**: application license: `free` or `non-free`. Be careful to not confuse with package license which must be put in `LICENSE` file.
* **maintainer**: informations about the app maintainer for contact. * **maintainer**: informations about the app maintainer for contact.

View file

@ -12,6 +12,7 @@ Le fichier `manifest.json` définit les constantes de lapplication, un ensemb
"fr": "Webmail Open Source" "fr": "Webmail Open Source"
}, },
"url": "http://roundcube.net/", "url": "http://roundcube.net/",
"version": "1.0-1",
"license": "free", "license": "free",
"maintainer": { "maintainer": {
"name": "kload", "name": "kload",
@ -58,9 +59,11 @@ Le fichier `manifest.json` définit les constantes de lapplication, un ensemb
- **packaging_format** : version de packaging du paquet. La version **1** est la version actuelle. Cette clé a été mise en place afin de faire évoluer les versions de packaging de manière décorrélée des versions de YunoHost. - **packaging_format** : version de packaging du paquet. La version **1** est la version actuelle. Cette clé a été mise en place afin de faire évoluer les versions de packaging de manière décorrélée des versions de YunoHost.
* **description** : description complète de lapplication. Vous pouvez la détailler comme bon vous semble. Uniquement le champs `en` (english) est requis, vous pouvez également ajouter la traduction en français :) * **description** : description complète de lapplication. Vous pouvez la détailler comme bon vous semble. Uniquement le champ `en` (english) est requis, vous pouvez également ajouter la traduction en français :)
* **url**: site de lapplication. * **url** : site web de lapplication.
* **version** : version du package construit à partir du numéro de version de lapplication qui est installée et d'un incrément pour chaque changement du paquet sans changement de version de l'application. "Exemple: 1.0.0-7". Le champ doit être une chaîne de caractères.
* **license** : licence avec laquelle lapplication est distribuée : `free`, `non-free`. Attention à ne pas confondre avec la licence du paquet qui doit être mise dans le fichier `LICENSE`. * **license** : licence avec laquelle lapplication est distribuée : `free`, `non-free`. Attention à ne pas confondre avec la licence du paquet qui doit être mise dans le fichier `LICENSE`.
@ -68,7 +71,7 @@ Le fichier `manifest.json` définit les constantes de lapplication, un ensemb
- **requirements** : dépendance du paquet de lapplication à la version dun paquet Debian de YunoHost. Par exemple : "yunohost": ">> 2.3.12", le paquet `yunohost` doit être de version supérieur à `2.3.12`. - **requirements** : dépendance du paquet de lapplication à la version dun paquet Debian de YunoHost. Par exemple : "yunohost": ">> 2.3.12", le paquet `yunohost` doit être de version supérieur à `2.3.12`.
* [**multi_instance**](packaging_apps_multiinstance_fr) : capacité dune application dêtre installée plusieurs fois. * [**multi_instance**](packaging_apps_multiinstance_fr) : capacité dune application dêtre installée plusieurs fois.
* **services** : liste des services nécessaires au fonctionnement de lapplication. `nginx`, `php5-fpm`, `mysql`, `uwsgi`, `metronome`, `postfix`, `dovecot` * **services** : liste des services nécessaires au fonctionnement de lapplication. `nginx`, `php5-fpm`, `mysql`, `uwsgi`, `metronome`, `postfix`, `dovecot`
@ -77,7 +80,7 @@ Le fichier `manifest.json` définit les constantes de lapplication, un ensemb
* **name** : identifiant du paramètre * **name** : identifiant du paramètre
* **type** : (optionnel) type de paramètre parmis `domain`, `path`, `user`, `app`, `boolean` et `password`. Le champ sera caché dans le cas dun mot de passe. * **type** : (optionnel) type de paramètre parmis `domain`, `path`, `user`, `app`, `boolean` et `password`. Le champ sera caché dans le cas dun mot de passe.
* **choices** : (optionnel) restreint les réponses possibles à plusieurs choix. * **choices** : (optionnel) restreint les réponses possibles à plusieurs choix.
* **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peux avoir les valeurs `true` ou `false`. * **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peut avoir les valeurs `true` ou `false`.
* **ask** : question posée (au minimum en anglais `en`) que vous pouvez traduire dans plusieurs langues. * **ask** : question posée (au minimum en anglais `en`) que vous pouvez traduire dans plusieurs langues.
* **example** : (optionnel) valeur dexemple pour aider ladministrateur à remplir le formulaire dinstallation. * **example** : (optionnel) valeur dexemple pour aider ladministrateur à remplir le formulaire dinstallation.
* **default** : (optionnel) valeur par défaut. * **default** : (optionnel) valeur par défaut.

View file

@ -2,60 +2,65 @@
## Scripts ## Scripts
For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`. For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`. A 6th script `change_url` can also be added optionally.
These scripts will be executed as `admin` on the YunoHost instances. These scripts will be executed as `root` on the YunoHost instances.
Here is an example: Examples scripts are available in the [example app](https://github.com/YunoHost/example_ynh/tree/master/scripts)
```bash
# Retrieve arguments
domain=$1
path=$2
# Check domain/path availability
sudo yunohost app checkurl $domain$path -a roundcube
if [[ ! $? -eq 0 ]]; then
exit 1
fi
# Generate random DES key & password
deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
# Use 'roundcube' as database name and user
db_user=roundcube
# Initialize database and store mysql password for upgrade
sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql)
sudo yunohost app setting roundcube mysqlpwd -v $db_pwd
# Copy files to the right place
final_path=/var/www/roundcube
sudo mkdir -p $final_path
sudo cp -a ../sources/* $final_path
sudo cp ../conf/main.inc.php $final_path/config/
sudo cp ../conf/db.inc.php $final_path/config/
sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php
# Change variables in Roundcube configuration
sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php
sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php
sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php
sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php
# Set permissions to roundcube directory
sudo chown -R www-data: $final_path
# Modify Nginx configuration file and copy it to Nginx conf directory
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf
# Reload nginx and regenerate SSOwat conf
sudo service nginx reload
sudo yunohost app ssowatconf
```
### Usage ### Usage
You have to put everything in the `install` script in order to get the app to install without issue. It means that you have to install dependencies, create required repositories, initialize potential databases, copy sources and configure everything in the single `install` script (and of course do the reverse process in the `remove` script). You have to put everything in the `install` script in order to get the app to install without issue. It means that you have to install dependencies, create required repositories, initialize potential databases, copy sources and configure everything in the single `install` script (and of course do the reverse process in the `remove` script).
**Be careful**: for security reasons, the script is executed as the **admin** user in YunoHost. Be sure to test it as **admin** and prepend `sudo` to commands that require it. It's possible to use helpers and import function library by example from a `_common.sh` file.
### Available variables for these scripts
#### YNH_CWD
This var contains the current working directory path of the executed script. It can be useful for find out the initial path if we have move of directory during the script execution. It is used by some helpers to be sure to use the good directory.
#### YNH_APP_ID
It contains the application's identifier without the instance's number.
Example: strut
#### YNH_APP_INSTANCE_NAME
It contains the instance name which will is used in a lot of situation to manage multiple setup of the same app.
Example: strut__3
#### YNH_APP_INSTANCE_NUMBER
It contains the instance's number. Warning, it's not the number of running instances because an old app might be deleted.
Example: 3
### Specific variables to use in `install`
#### YNH_APP_ARG_XXXXXXX
An environment variable is available for each question asked in the installation.
For example, if in the manifest we have a question like this
```
{
"name": "domain",
"type": "domain",
"ask": {
"en": "Choose a domain for OpenSondage",
"fr": "Choisissez un nom de domaine pour OpenSondage",
"de": "Wählen Sie bitte einen Domain für OpenSondage"
},
"example": "domain.org"
},
```
The name of the question is `domain` so in the script we can access it with YNH_APP_ARG_DOMAIN. The usage is to create a shorter name in the script like this:
```
domain=$YNH_APP_ARG_DOMAIN
```
### Variables spécifiques pour `change_url`
#### YNH_APP_OLD_DOMAIN
The old domain where the app was installed.
#### YNH_APP_OLD_PATH
The old path where the app was installed.
#### YNH_APP_NEW_DOMAIN
The new domain where move the app.
#### YNH_APP_NEW_PATH
The new path where move the app.

View file

@ -2,60 +2,64 @@
## Les scripts ## Les scripts
Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`. Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`. Un 6ème script `change_url` peut aussi être ajouté de façon optionnelle
Ces scripts seront exécutés en tant qu`admin` sur les serveurs YunoHost. Ces scripts seront exécutés en tant que `root` sur les serveurs YunoHost.
Voici un exemple de script d`install` : Des exemples de ces scripts sont disponibles dans l'[application d'exemple](https://github.com/YunoHost/example_ynh/tree/master/scripts)
```bash
# Retrieve arguments
domain=$1
path=$2
# Check domain/path availability
sudo yunohost app checkurl $domain$path -a roundcube
if [[ ! $? -eq 0 ]]; then
exit 1
fi
# Generate random DES key & password
deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
# Use 'roundcube' as database name and user
db_user=roundcube
# Initialize database and store mysql password for upgrade
sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql)
sudo yunohost app setting roundcube mysqlpwd -v $db_pwd
# Copy files to the right place
final_path=/var/www/roundcube
sudo mkdir -p $final_path
sudo cp -a ../sources/* $final_path
sudo cp ../conf/main.inc.php $final_path/config/
sudo cp ../conf/db.inc.php $final_path/config/
sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php
# Change variables in Roundcube configuration
sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php
sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php
sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php
sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php
# Set permissions to roundcube directory
sudo chown -R www-data: $final_path
# Modify Nginx configuration file and copy it to Nginx conf directory
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf
# Reload Nginx and regenerate SSOwat conf
sudo service nginx reload
sudo yunohost app ssowatconf
```
### Utilisation ### Utilisation
Vous devez tout mettre dans le script d`install` pour que votre application soit entièrement installée. Cela signifie que vous devez installer les dépendances, créer les répertoires requis, initialiser les bases de données nécessaires, copier les sources et configurer tout dans lunique script `install` (et bien sûr faire la procédure inverse dans le script `remove`). Vous devez tout mettre dans le script d`install` pour que votre application soit entièrement installée. Cela signifie que vous devez installer les dépendances, créer les répertoires requis, initialiser les bases de données nécessaires, copier les sources et configurer tout dans lunique script `install` (et bien sûr faire la procédure inverse dans le script `remove`).
**Attention** : pour des raisons de sécurité, le script est exécuté en tant qu**admin** dans YunoHost. Assurez-vous de lessayer en tant qu**admin** et de préfixer `sudo` aux commandes requises. Il est possible d'utiliser des helpers et d'importer une librairie de fonction par exemple depuis un fichier `_common.sh`.
### Variables disponibles pour tous ces scripts
#### YNH_CWD
Cette variable contient le chemin du répertoire de travail courant du contexte d'execution du script. Elle peut être utile pour retrouver le chemin initial si on s'est déplacé pendant l'execution du script. Elle est utilisée par certains helpers pour être sûr d'utiliser le bon.
#### YNH_APP_ID
Contient l'identifiant de l'application sans le numéro d'instance
Exemple: strut
#### YNH_APP_INSTANCE_NAME
Contient le nom d'instance qui sera utilisé dans de nombreuses situation pour pouvoir gérer l'installation multiple d'une même app.
Exemple: strut__3
#### YNH_APP_INSTANCE_NUMBER
Contient le numero de l'instance. Attention il ne s'agit pas forcément du nombre d'instance toujours installée, car une ancienne application peut avoir été désinstallée.
Exemple: 3
### Variables spécifiques pour `install`
#### YNH_APP_ARG_XXXXXXX
Pour chaque question posée dans lors de l'installation une variable d'environnement est disponible.
Par exemple, si dans le manifest nous avons une question de cette forme
```
{
"name": "domain",
"type": "domain",
"ask": {
"en": "Choose a domain for OpenSondage",
"fr": "Choisissez un nom de domaine pour OpenSondage",
"de": "Wählen Sie bitte einen Domain für OpenSondage"
},
"example": "domain.org"
},
```
Le nom de la question `domain` donc dans le script on peut accéder à cette variable via $YNH_APP_ARG_DOMAIN. L'usage est de créer une variable plus courte comme ceci:
```
domain=$YNH_APP_ARG_DOMAIN
```
### Variables spécifiques pour `change_url`
#### YNH_APP_OLD_DOMAIN
L'ancien domaine où était installée l'app.
#### YNH_APP_OLD_PATH
L'ancien chemin où était installée l'app;
#### YNH_APP_NEW_DOMAIN
Le nouveau domaine où doit être installée l'app.
#### YNH_APP_NEW_PATH
Le nouveau chemin où doit être installée l'app.

6
port_forwarding.md Normal file
View file

@ -0,0 +1,6 @@
# Port forwarding
The sketch below tries to briefly summarize the role and necessity of port
forwarding when setting up a server at home.
<img src="./images/portForwarding_en.png" width="100%">

6
port_forwarding_fr.md Normal file
View file

@ -0,0 +1,6 @@
# Redirection de ports
Le schéma ci-dessous tente d'expliquer brièvement le rôle de la redirection des
ports lors de la mise en place d'un serveur à la maison.
<img src="./images/portForwarding_fr.png" width="100%">

View file

@ -4,7 +4,7 @@ The step called "**post-installation**" is actually the initial configuration of
## Access ## Access
You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`). You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`; you'll get this from the client table on your router's admin page).
<img 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);" src="/images/postinstall_web.png"> <img 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);" src="/images/postinstall_web.png">
@ -26,7 +26,7 @@ Or by running `yunohost tools postinstall` in command-line.
This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the **authentication portal**. It will thus be **visible by everyone**, choose it wisely. This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the **authentication portal**. It will thus be **visible by everyone**, choose it wisely.
* If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (i.e. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step. * If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (e.g. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step.
* If you do know what **DNS** is, you probably want to configure your own domain name here. In this case, please refer to the [DNS page](/dns) page for more informations. * If you do know what **DNS** is, you probably want to configure your own domain name here. In this case, please refer to the [DNS page](/dns) page for more informations.
@ -40,16 +40,22 @@ This password will be used to access to your server's [administration interface]
--- ---
## Troubleshooting ## Congratz!
### Secured connection fails after **post-installation** If you got so far and saw 'YunoHost has been successfully installed' (web
postinstall) or 'YunoHost has been correctly configured', then congratulations!
If you're using your own domain and depending on your browser, you might be stuck out of your Yunohost installation until you deploy an appropriate certificate. Thanks to Yunohost and [Let's Encrypt](https://letsencrypt.org/), this proves to be quite easy: just run `yunohost domain cert-install` in command-line to issue and install your certificate and _Voilà_. Refresh your browser and you're good to go. ### What now ?
--- - If you're self-hosting at home and without a VPN, you need to [make sure to
correctly forward ports on your router/Internet box](isp_box_config) ;
- If you're using your own domain name (i.e. not a .nohost.me / .noho.st), you
need to [configure it according to the recommended DNS
configuration](dns_config) ;
- If you cannot configure your domain name yet (because you didn't register it
yet, or because this is a test domain), see last paragraph
[here](dns_local_network) for a workaround ;
- Don't be too afraid of the [certificate warning](certificate), you'll probably
be able to install a Let's Encrypt certificate :).
- Have a look at [the available apps](apps) !
## And after ?
Once the post-installation finished, check if you can access to your server with your web-browser. If it is not the case, a few more configuration steps may be required.
Do not hesitate to come on our [support chatroom](/support) if you need help.

View file

@ -46,16 +46,24 @@ De manière générale, cest la **clé dentrée à votre système**, pense
--- ---
## En cas de problème ## Félicitations !
### Échec de la connection sécurisée après la **post-installation** Si vous arrivez ici après avoir vu "YunoHost a été installé avec succès" depuis
votre navigateur ou la ligne de commande, alors félicitations !
Si vous utilisez votre propre domaine et selon votre navigateur, vous pourriez vous retrouver bloqué à l'entrée de votre Yunohost tant que vous n'avez pas déployé un certificat valide. Grâce à Yunohost et [Let's Encrypt](https://letsencrypt.org/), c'est plutôt simple : exécutez simplement `yunohost domain cert-install` en ligne de commande pour émettre et installer votre certificat et _Voilà_. Rafraichissez votre navigateur et vous êtes paré. ### Et maintenant ?
--- - Si vous vous auto-hébergez à la maison et sans VPN, il vous faut vous assurer
de bien [rediriger les ports de votre box internet](isp_box_config_fr) ;
- Si vous utilisez votre propre nom de domaine (i.e. pas un nohost.me /
noho.st), il vous faut [configurer le nom de domaine d'après la configuration
recommandée](dns_config_fr) ;
- Si vous ne pouvez pas configurer le nom de domaine pour le moment (parce qu'il
n'est pas encore acheté, ou parce que c'est un domaine de test), vous pouvez
contourner temporairement le problème avec les instructions du dernier
paragraphe [ici](dns_local_network_fr) ;
- Ne soyez pas trop effrayé par [l'avertissement à propos du
certificat](certificate_fr), vous aurez probablement la possibilité
d'installer un certificat Let's Encrypt :).
- Jetez un oeil aux [applications disponibles](apps_fr) !
## Et après?
Une fois létape de post-installation exécutée, vérifiez que votre serveur est accessible en tapant le nom de domaine choisi précédemment dans votre navigateur web. Si celui-ci nest pas accessible, quelques étapes de configurations supplémentaires sont sûrement nécessaires.
Rendez-nous visite sur le [salon de support](/support_fr) si vous avez besoin daide.

View file

@ -1,47 +0,0 @@
# Regenerate certificate
If you want to generate again -- not renewing -- a certificate for a domain, you can follow those steps:
(replace **example.org** with your domain)
```bash
# Save YunoHost's SSL directory location for readability
ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA
# Save the final SSL path (do not forget to change your domain)
finalpath=/etc/yunohost/certs/example.org
# Save the serial number of the new certificate
serial=$(cat "$ssldir/serial")
# Backup current certificates for your domain
cp -a $finalpath $finalpath.back
# Remove certs and configuration file in it
rm $finalpath/{crt.pem,key.pem,openssl.cnf}
# Copy openSSL's configuration file
cp $ssldir/openssl.cnf $finalpath/
# Change yunohost.org with your domain in the configuration
# DO NOT FORGET TO REPLACE example.org !
sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf
# Generate certificate and key
openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch
# Sign certificate with your server's CA
openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch
# Copy certificate and key to the right place
cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem
cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem
# Fix permissions
chmod 755 $finalpath
chmod 640 $finalpath/key.pem $finalpath/crt.pem
chmod 600 $finalpath/openssl.cnf
# Allow metronome to access those certificates
chown root:metronome $finalpath/key.pem $finalpath/crt.pem
```

View file

@ -1,47 +0,0 @@
#Régénérer un certificat
Si vous désirez générer à nouveau — et non renouveler — un certificat pour un domain, suivre les étapes suivantes :
(remplacer **example.org** avec votre domaine)
```bash
# Sauvegarde du répertoire SSL de YunoHost, pour la lisibilité
ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA
# Sauvegarde du chemin final SSL (ne pas oublier de modifier avec votre domaine)
finalpath=/etc/yunohost/certs/example.org
# Sauvegarde du numéro de série du nouveau certificat
serial=$(cat "$ssldir/serial")
# Sauvegarde du certificat actuel du domaine
cp -a $finalpath $finalpath.back
# Suppression des certificats et des fichiers de configuration
rm $finalpath/{crt.pem,key.pem,openssl.cnf}
# Copie du fichier de configuration dopenSSL
cp $ssldir/openssl.cnf $finalpath/
# Changement de la configuration yunohost.org avec votre domaine
# NE PAS OUBLIER DE REMPLACER example.org!
sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf
# Generation du certificat et de la clé
openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch
# Signature du certificat avec le CA du serveur
openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch
# Copie du certificat et de la clé au bon endroit
cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem
cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem
# Réparation des permissions
chmod 755 $finalpath
chmod 640 $finalpath/key.pem $finalpath/crt.pem
chmod 600 $finalpath/openssl.cnf
# Autoriser metronome à accéder aux certificats
chown root:metronome $finalpath/key.pem $finalpath/crt.pem
```

View file

@ -1,26 +0,0 @@
# Roadmap
<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.4
Core:
* ✔ Helpers for app maintainer *(ju, opi, jerome)*
* ✔ Install script refactored *(ju)*
* ✔ Use templates to (re)generate configurations instead of packages *(kload, beudbeud, jerome)*
* ✔ Complete and improve backup and restore system *(jerome, ljf)*
* Logging bug on SSOwat when no HTTP referer is sent
* Add tools in moulinette to manage certificate (add, remove, update), Lets Encrypt *(ljf, Moul)*
* Run automatic tests on moulinette *(kload)*
* Add proper upgrade/remove scripts and comment Debian scripts in packages *(beudbeud)*
* Replace amavis by rspamd *(jerome)*
Web interface:
* ✔ Use Gulp for administration and user web interfaces *(opi)*
* User avatar *(opi)*
* Plugin system for the admin panel *(ljf)*
Applications:
* ✔ New way to [manage apps list](http://github.com/YunoHost/apps)
Other:
* ✔ Add licenses on YunoHost repositories *(Moul)*

View file

@ -8,7 +8,7 @@ Two things remain important to note:
* The fact that YunoHost is a well-spread software increase chances to face an attack. If a flaw is discovered, it could potentially affect all the YunoHost instances at once. Keep your system **up-to-date** to remain safe. * The fact that YunoHost is a well-spread software increase chances to face an attack. If a flaw is discovered, it could potentially affect all the YunoHost instances at once. Keep your system **up-to-date** to remain safe.
*If you need some advises, do not hesitate to [ask us](/support).* *If you need some advices, do not hesitate to [ask us](/help).*
*To talk about security flaws, contact the [YunoHost security team](/security_team).* *To talk about security flaws, contact the [YunoHost security team](/security_team).*

View file

@ -5,13 +5,13 @@ YunoHost a été développé dans loptique de fournir une sécurité maximale
Tous les protocoles que YunoHost utilise sont **chiffrés**, les mots de passe ne sont pas stockés en clair, et par défaut chaque utilisateur naccède quà son répertoire personnel. Tous les protocoles que YunoHost utilise sont **chiffrés**, les mots de passe ne sont pas stockés en clair, et par défaut chaque utilisateur naccède quà son répertoire personnel.
Deux points sont néanmoins importants à noter : Deux points sont néanmoins importants à noter :
* Linstallation dapplications supplémentaires **augmente le nombre de failles** potentielles. Il est donc conseillé de se renseigner sur chacune delle **avant linstallation**, den comprendre le fonctionnement et juger ainsi limpact que provoquerait une potentielle attaque. Ninstallez **que** les applications qui semblent importantes pour votre usage. * Linstallation dapplications supplémentaires **augmente le nombre de failles** potentielles. Il est donc conseillé de se renseigner sur chacune delle **avant linstallation**, den comprendre le fonctionnement et juger ainsi limpact que provoquerait une potentielle attaque. Ninstallez **que** les applications qui semblent importantes pour votre usage.
* Le fait que YunoHost soit un logiciel répandu augmente les chances de subir une attaque. Si une faille est découverte, elle peut potentiellement **toucher toutes les instances YunoHost** à un temps donné. Nous nous efforçons de corriger ces failles le plus rapidement possible, pensez donc à **mettre à jour régulièrement** votre système. * Le fait que YunoHost soit un logiciel répandu augmente les chances de subir une attaque. Si une faille est découverte, elle peut potentiellement **toucher toutes les instances YunoHost** à un temps donné. Nous nous efforçons de corriger ces failles le plus rapidement possible, pensez donc à **mettre à jour régulièrement** votre système.
*Si vous avez besoin de conseil, nhésitez pas à [nous demander](/support_fr).* *Si vous avez besoin de conseil, nhésitez pas à [nous demander](/help_fr).*
*Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).* *Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).*
@ -21,7 +21,7 @@ Deux points sont néanmoins importants à noter :
Si votre serveur YunoHost est dans un environnement de production critique ou que vous souhaitez améliorer sa sécurité, il est bon de suivre quelques bonnes pratiques. Si votre serveur YunoHost est dans un environnement de production critique ou que vous souhaitez améliorer sa sécurité, il est bon de suivre quelques bonnes pratiques.
**Attention :** *lapplication des conseils suivants nécessite une connaissance avancée du fonctionnement et de ladministration dun serveur. Pensez à vous renseigner avant de procéder à cette mise en place.* **Attention :** *lapplication des conseils suivants nécessite une connaissance avancée du fonctionnement et de ladministration dun serveur. Pensez à vous renseigner avant de procéder à cette mise en place.*
### Authentification SSH par clé ### Authentification SSH par clé
@ -29,17 +29,19 @@ Voici un [tutoriel plus détaillé](http://doc.ubuntu-fr.org/ssh#authentificatio
Par défaut, lauthentification SSH se fait avec le mot de passe dadministration. Il est conseillé de désactiver ce type dauthentification et de le remplacer par un mécanisme de clé de chiffrement. Par défaut, lauthentification SSH se fait avec le mot de passe dadministration. Il est conseillé de désactiver ce type dauthentification et de le remplacer par un mécanisme de clé de chiffrement.
**Sur votre ordinateur de bureau :** **Sur votre ordinateur de bureau :**
```bash ```bash
ssh-keygen ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub <votre_serveur_yunohost> ssh-copy-id -i ~/.ssh/id_rsa.pub <votre_serveur_yunohost>
``` ```
<div class="alert alert-info" markdown="1">
Si vous êtes sur Ubuntu 16.04 vous devez faire `ssh-add` pour initialiser l'agent ssh
</div>
Entrez le mot de passe dadministration et votre clé publique devrait être copiée sur votre serveur. Entrez le mot de passe dadministration et votre clé publique devrait être copiée sur votre serveur.
**Sur votre serveur**, éditez le fichier de configuration SSH, pour désactiver lauthentification par mot de passe. **Sur votre serveur**, éditez le fichier de configuration SSH, pour désactiver lauthentification par mot de passe.
```bash ```bash
nano /etc/ssh/sshd_config nano /etc/ssh/sshd_config
@ -60,7 +62,7 @@ Pour éviter des tentatives de connexion SSH par des robots qui scannent tout In
```bash ```bash
nano /etc/ssh/sshd_config nano /etc/ssh/sshd_config
# Recherchez la ligne « Port » et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé # Recherchez la ligne « Port » et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé
Port 22 # à remplacer par exemple par 9777 Port 22 # à remplacer par exemple par 9777
``` ```
@ -70,13 +72,13 @@ Ensuite redémarrez le firewall iptables et fermez lancien port dans iptables
```bash ```bash
yunohost firewall reload yunohost firewall reload
yunohost firewall disallow <votre numéro de port> # port par défaut 22 yunohost firewall disallow TCP <votre numéro de port> # port par défaut 22
yunohost firewall disallow --ipv6 TCP <votre numéro de port> # pour ipv6 yunohost firewall disallow --ipv6 TCP <votre numéro de port> # pour ipv6
``` ```
**Pour les prochaines connexions SSH** il faudra ajouter loption -p suivie du numéro de port SSH. **Pour les prochaines connexions SSH** il faudra ajouter loption -p suivie du numéro de port SSH.
**Exemple** : **Exemple** :
```bash ```bash
ssh -p <votre_numero_de_port_ssh> admin@<votre_serveur_yunohost> ssh -p <votre_numero_de_port_ssh> admin@<votre_serveur_yunohost>
@ -107,7 +109,7 @@ sudo adduser nom_utilisateur sudo
```bash ```bash
sudo nano /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config
# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci : # Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci :
AllowUsers nom_utilisateur AllowUsers nom_utilisateur
``` ```
Seuls les utilisateurs mentionnés dans la directive AllowUsers seront alors autorisés à se connecter via SSH, ce qui exclut donc lutilisateur admin. Seuls les utilisateurs mentionnés dans la directive AllowUsers seront alors autorisés à se connecter via SSH, ce qui exclut donc lutilisateur admin.
@ -126,7 +128,7 @@ sudo service yunohost-api stop
### Tests dintrusion de YunoHost ### Tests dintrusion de YunoHost
Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 : Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 :
- [1) Préparation](https://exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation) - [1) Préparation](https://exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation)
- [2) Le fonctionnement](https://exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement) - [2) Le fonctionnement](https://exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement)

View file

@ -42,8 +42,7 @@
* [Internet service provider](/isp) * [Internet service provider](/isp)
* [Generic configuration of the ISP router](/isp_box_config) * [Generic configuration of the ISP router](/isp_box_config)
* Applications * Applications
* [Official applications](/apps_en) * [Applications](/apps_en)
* [Non-official applications](/apps_in_progress_en)
* [Update applications](app_update_en) * [Update applications](app_update_en)
* Administration * Administration
* Command-line * Command-line
@ -70,17 +69,7 @@
* [User interface](user_interface) * [User interface](user_interface)
* [Configure email client](email_configure_client_en) * [Configure email client](email_configure_client_en)
* [Instant messaging usage](/XMPP) * [Instant messaging usage](/XMPP)
* [Official applications](/apps) * [Applications](/apps)
* [Baikal](/app_baikal_en)
* [Firefox Sync](/app_ffsync_en)
* [Tiny Tiny RSS](/app_ttrss_en)
* [Transmission](/app_transmission_en)
* [Radicale](/app_radicale)
* [RoundCube](/app_roundcube_en)
* [Minidlna](app_minidlna_en)
* [Wallabag v2](/app_wallabag2)
* [Community applications](/apps_in_progress_en)
* [LimeSurvey](/app_limesurvey_en)
* [Contributor guide](/contribute) * [Contributor guide](/contribute)
* Developement * Developement
@ -96,7 +85,6 @@
* [Trap usage](packaging_apps_trap_fr) * [Trap usage](packaging_apps_trap_fr)
* [Applications levels](packaging_apps_levels_fr) * [Applications levels](packaging_apps_levels_fr)
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
* [Applications in progress](/apps_in_progress_en)
* [Wishlist of applications](/apps_wishlist_en) * [Wishlist of applications](/apps_wishlist_en)
* [Contributing to the YunoHost core](/dev) * [Contributing to the YunoHost core](/dev)
* [Creation of system packages](/build_system_en) * [Creation of system packages](/build_system_en)
@ -114,10 +102,9 @@
* [Frequently asked questions](/faq_en) * [Frequently asked questions](/faq_en)
* [Contributors](contribs) * [Contributors](contribs)
- [Project organization](project_organization) - [Project organization](project_organization)
* [Support](/support_en)
* [Art Works](artworks_en) * [Art Works](artworks_en)
* [Blog](https://forum.yunohost.org/c/announcement) * [Blog](https://forum.yunohost.org/c/announcement)
- [Forum](https://forum.yunohost.org) - [Forum](https://forum.yunohost.org)
- [Chat rooms](chat_rooms_en) - [Chat rooms](chat_rooms_en)
* [Communication](communication_en) * [Communication](communication_en)
* [Help](/help) * [Support / Help](/help)

View file

@ -49,7 +49,6 @@
* [Orange](/isp_orange_fr) * [Orange](/isp_orange_fr)
* Applications * Applications
* [Applications officielles](/apps_fr) * [Applications officielles](/apps_fr)
* [Applications non officielles](/apps_in_progress_en)
* [Mise à jour des applications](app_update_fr) * [Mise à jour des applications](app_update_fr)
* Administration * Administration
* En ligne de commande * En ligne de commande
@ -78,19 +77,7 @@
* [Interface utilisateur](user_interface) * [Interface utilisateur](user_interface)
* [Configurer un client email](email_configure_client_fr) * [Configurer un client email](email_configure_client_fr)
* [Utiliser la messagerie instantanée XMPP](/XMPP_fr) * [Utiliser la messagerie instantanée XMPP](/XMPP_fr)
* [Applications officielles](/apps_fr) * [Applications](/apps_fr)
* [Baïkal](/app_baikal_fr)
* [Firefox Sync](/app_ffsync_fr)
* [Jappix](/app_jappix_fr)
* [Nextcloud](app_nextcloud_fr)
* [Tiny Tiny RSS](/app_ttrss_fr)
* [Transmission](/app_transmission_fr)
* [Radicale](/app_radicale_fr)
* [RoundCube](/app_roundcube_fr)
* [Minidlna](app_minidlna_fr)
* [Wallabag v2](/app_wallabag2_fr)
* [Applications communautaires](/apps_in_progress_fr)
* [LimeSurvey](/app_limesurvey_fr)
* [Guide du contributeur](/contribute_fr) * [Guide du contributeur](/contribute_fr)
* Développement * Développement
@ -110,7 +97,6 @@
* [Usage de trap](packaging_apps_trap_fr) * [Usage de trap](packaging_apps_trap_fr)
* [Niveaux des applications](packaging_apps_levels_fr) * [Niveaux des applications](packaging_apps_levels_fr)
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
* [Packages dapplications en cours de développement](/apps_in_progress_fr)
* [Liste de proposition dapplications](/apps_wishlist_fr) * [Liste de proposition dapplications](/apps_wishlist_fr)
* [Contribuer au cœur de YunoHost](/dev_fr) * [Contribuer au cœur de YunoHost](/dev_fr)
* [Création de paquets système](/build_system_fr) * [Création de paquets système](/build_system_fr)
@ -128,11 +114,10 @@
* [Foire aux questions](/faq_fr) * [Foire aux questions](/faq_fr)
- [Organisation du projet](project_organization_fr) - [Organisation du projet](project_organization_fr)
* [Contributeurs](contribs_fr) * [Contributeurs](contribs_fr)
* [Entraide - support](/support_fr)
* [Blog](https://forum.yunohost.org/c/announcement) * [Blog](https://forum.yunohost.org/c/announcement)
- [Forum](https://forum.yunohost.org) - [Forum](https://forum.yunohost.org)
- [Salons de discussions](chat_rooms_fr) - [Salons de discussions](chat_rooms_fr)
* [Conférences](/conf_fr) * [Conférences](/conf_fr)
* [Communication extérieure](communication_fr) * [Communication extérieure](communication_fr)
* [Travail artistique](artworks_fr) * [Travail artistique](artworks_fr)
* [Aide](/help_fr) * [Support / Aide](/help_fr)

View file

@ -2,7 +2,7 @@
## Quest-ce que SSH ? ## Quest-ce que SSH ?
**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, maleureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty). **SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, malheureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty).
## Pendant linstallation de YunoHost ## Pendant linstallation de YunoHost

View file

@ -1,19 +0,0 @@
# Support
The YunoHost support is provided by the community members.
* The **best and fastest** way to get answers remains the community chatroom, accessible on the bottom-right corner of this page, or via an XMPP compatible instant messaging client (like [Pidgin](https://pidgin.im)), at the following address:
**[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
---
* You may also want to visit the **discussion forum**:
**[forum.yunohost.org](https://forum.yunohost.org/)**
---
* However, if you want to write specificaly to the YunoHost team, do not hesitate to send us an email. Please note that **we do not provide any support by email**.
**[yunohost@yunohost.org](mailto:yunohost@yunohost.org)**

View file

@ -1,19 +0,0 @@
# Support - Entraide
Lentraide autour de YunoHost est assurée par la communauté.
* Le moyen le plus **efficace et rapide** dobtenir des réponses reste le salon de discussion instantané, accessible en bas à droite de cette page, ou via nimporte quel client de messagerie **compatible XMPP** (tel que [Pidgin](https://pidgin.im)) à ladresse suivante :
**[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
---
* Vous pouvez également vous renseigner et poser vos questions sur **le forum** (en anglais de préférence) :
**[forum.yunohost.org](https://forum.yunohost.org/)**
---
* Enfin, si vous souhaitez vous adresser spécifiquement à léquipe YunoHost, nhésitez pas à nous envoyer un mail. **Attention, nous nassurons aucun support par email**.
**[yunohost@yunohost.org](mailto:yunohost@yunohost.org)**

View file

@ -15,15 +15,15 @@ Keep in mind that when you install an app, you execute code on your server with
From my experience, some packaging are excellent and others can break some part of your YunoHost instance. Some packages are unmaintained. So before install check package issues, the [Forum](http://forum.yunohost.org/) and the [YunoHost support room](support_en) to see if other have problem with the app. From my experience, some packaging are excellent and others can break some part of your YunoHost instance. Some packages are unmaintained. So before install check package issues, the [Forum](http://forum.yunohost.org/) and the [YunoHost support room](support_en) to see if other have problem with the app.
### Check the official documentation ### Check the official documentation
Answer to your question may be already in [the documentatioon](https://yunohost.org/#/sitemap_en). Answer to your question may be already in [the documentation](https://yunohost.org/#/sitemap_en).
### Check the command line help ### Check the command line help
Learn how to use the [YunoHost commands](https://yunohost.org/#/moulinette_en) like a pro. Learn how to use the [YunoHost commands](https://yunohost.org/#/moulinette_en) like a pro.
## Upgrade ## Upgrade
Problems oftenly occurs after an upgrade. After a YunoHost upgrade you may want to [update your apps](https://yunohost.org/#/app_update_en). Problems often occur after an upgrade. After a YunoHost upgrade you may want to [update your apps](https://yunohost.org/#/app_update_en).
**Check if some processes are using old librairies** **Check if some processes are using old libraries**
You are probably familiar with: You are probably familiar with:
```bash ```bash

View file

@ -232,7 +232,7 @@ Toutes les erreurs liées aux applications installées sur ce domaine, il se peu
## SSOwat ## SSOwat
[SSowat](https://github.com/Kloadut/SSOwat) [SSowat](https://github.com/Kloadut/SSOwat)
est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est dauthentifier les utilisateurs au portail YunHost pour pouvoir simplement changer entre les applications. est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est dauthentifier les utilisateurs au portail YunoHost pour pouvoir simplement changer entre les applications.
### Configuration ### Configuration
Vous pouvez regarder le fichier de configuration SSOwat dans le fichier : Vous pouvez regarder le fichier de configuration SSOwat dans le fichier :

View file

@ -4,13 +4,4 @@
* [User interface](user_interface) * [User interface](user_interface)
* [Configure an email client](/email) * [Configure an email client](/email)
* [Instant messaging usage](/XMPP) * [Instant messaging usage](/XMPP)
* [Official applications](/apps) * [Applications](/apps)
* [Baikal](/app_baikal_en)
* [Firefox Sync](/app_ffsync_en)
* [Tiny Tiny RSS](/app_ttrss_en)
* [Transmission](/app_transmission_en)
* [Radicale](/app_radicale)
* [RoundCube](/app_roundcube_en)
* [Wallabag v2](/app_wallabag2)
* [Community applications](/apps_in_progress_en)
* [LimeSurvey](/app_limesurvey_en)

View file

@ -3,13 +3,4 @@
* [Linterface utilisateur](user_interface) * [Linterface utilisateur](user_interface)
* [La messagerie électronique (email)](/email_fr) * [La messagerie électronique (email)](/email_fr)
* [La messagerie instantanée et les réseaux sociaux XMPP](/XMPP_fr) * [La messagerie instantanée et les réseaux sociaux XMPP](/XMPP_fr)
* [Les applications officielles](/apps_fr) * [Les applications](/apps_fr)
* [Firefox Sync](/app_ffsync_fr)
* [Jappix](/app_jappix_fr)
* [Tiny Tiny RSS](/app_ttrss_fr)
* [Transmission](/app_transmission_fr)
* [Radicale](/app_radicale_fr)
* [RoundCube](/app_roundcube_fr)
* [Wallabag v2](/app_wallabag2_fr)
* [Applications communautaires](/apps_in_progress_fr)
* [LimeSurvey](/app_limesurvey_fr)

View file

@ -47,7 +47,7 @@ vagrant ssh
Upgrade the system Upgrade the system
```bash ```bash
sudo apt-get update && sudo apt-get upgrade sudo apt-get update && sudo apt-get dist-upgrade
``` ```
You can access to your vm with the ip 192.168.33.10 You can access to your vm with the ip 192.168.33.10

View file

@ -48,7 +48,7 @@ vagrant ssh
Mettre à jour le système. Mettre à jour le système.
```bash ```bash
sudo apt-get update && sudo apt-get upgrade sudo apt-get update && sudo apt-get dist-upgrade
``` ```
Vous pouvez accéder à votre vm via lip 192.168.33.10. Vous pouvez accéder à votre vm via lip 192.168.33.10.

View file

@ -13,7 +13,7 @@ Il est basé et reste totalement compatible avec [Debian GNU/Linux](https://debi
- multi-domaines - multi-domaines
- un système demails - un système demails
- un serveur de messagerie instantanée - un serveur de messagerie instantanée
- un système dauthentifaction unique (SSO) - un système dauthentification unique (SSO)
- un système dapplications - un système dapplications
- un système de backup - un système de backup
- un système de régénération de configuration des services - un système de régénération de configuration des services