Outils pour utilisateurs

Outils du site


public:avec_un_peu_d_huile_de_cloud

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
public:avec_un_peu_d_huile_de_cloud [2016/04/04 15:40]
jerome.avond [Proxomox]
public:avec_un_peu_d_huile_de_cloud [2016/05/23 12:28] (Version actuelle)
jean-yves.michaud ↷ Liens modifiés en raison d'un déplacement.
Ligne 1: Ligne 1:
 ====== Avec un peu d huile de cloud  ====== ====== Avec un peu d huile de cloud  ======
  
-On a mis en place un proxmox sur aloliseoff avec une ip publique + 
-Sur ce proxmox on a un réseau local 192.168.0.0/24 qui permet de connecter des containers de demo. + 
-Les containers sont accessibles via une ip (demo.alolise.org) et selon un port http et ssh +===== Présentation ===== 
-On obtient :+Dans le cadre des JDLL 2016, Alolise a encadré un atelier d'une heure consistant à installer un service Owncloud, en utilisant la dernière version stable téléchargée depuis le site officiel. \\ 
 +Ce wiki a servi de procédure à dérouler lors de l'atelier. Depuis il a été remanié afin de prendre en compte les remarques des participants. Nous avons également ajouté la partie sur la création d'un certificat TLS via LetsEncrypt. 
 + 
 +===== Préparation de l'atelier ===== 
 +Alolise a mis en place un hyperviseur proxmox sur aloliseoff avec une ip publique. 
 +Sur ce proxmoxon a un réseau local 192.168.0.0/24 qui permet de connecter des containers LXC de demo. 
 + 
 +Une configuration pare-feu sur l'hyperviseur permet d'accéder aux conteneur via une ip (demo.alolise.org) et selon un port http et ssh en suivant la logique d'accès aux différents conteneurs suivante :
 ^machine //n// ^ port d'accès ssh ^ port d'accès http^ ^machine //n// ^ port d'accès ssh ^ port d'accès http^
 |deb10 | 2210 | 8010 | |deb10 | 2210 | 8010 |
 |deb11 | 2211 | 8011 | |deb11 | 2211 | 8011 |
 +|deb12 | 2212 | 8012 |
 |deb//n// | 22//n// | 80//n// | |deb//n// | 22//n// | 80//n// |
  
 +<WRAP center round todo 95%>
 Pour mettre ça en place dans le cluster alolise il faudrait : Pour mettre ça en place dans le cluster alolise il faudrait :
 - Mettre en place IPv6 - Mettre en place IPv6
 - pour ipv4 des ports 22xx et 80xx et 443xx - pour ipv4 des ports 22xx et 80xx et 443xx
 - éventuellement des vhosts nginx pour garder 80 et 443 - éventuellement des vhosts nginx pour garder 80 et 443
 +</WRAP>
 +
 +<WRAP center round info 95%>
 +L'accès à proxmox pour voir la configuration des conteneurs de démonstration est possible en se connectant à [[https://demo.alolise.org]] avec l'utilisateur/ le nom du conteneur  : //deb10//, //deb11//, etc...
 +</WRAP>
  
-===== se connecter ===== 
  
-==== Proxomox ==== +===== Déroulement de l'atelier / Installation =====
-=== Voir les containers === +
-On se connecte à cette adresse : [[https://demo.alolise.org]] avec son utilisateur : //deb10//, //deb11//, etc...+
  
 +==== Connexion au serveur via SSH ====
 +On va utiliser le [[https://doc.ubuntu-fr.org/ssh|protocole SSH]] pour se connecter de manière sécurisée au serveur distant.
  
-==== SSH ==== +<WRAP center round tip 95%>
-<WRAP center round tip 80%>+
 Le mot de passe nécessaire pour toute les connexions : **demolise** Le mot de passe nécessaire pour toute les connexions : **demolise**
 </WRAP> </WRAP>
  
-Modifier votre fichier de configuration de vos connexions SSH (**~/.ssh/config**)+Modifier votre fichier de configuration de vos connexions SSH (**~/.ssh/config**). \\ 
 +Exemple pour accéder au serveur //deb10//
 <file - ~/.ssh/config> <file - ~/.ssh/config>
 host alolise_demo_nginx host alolise_demo_nginx
Ligne 37: Ligne 50:
  user root  user root
  ProxyCommand ssh -qAx alolise_demo_nginx -W %h:%p  ProxyCommand ssh -qAx alolise_demo_nginx -W %h:%p
-host alolise_demo_deb11 +</file> 
- hostname 192.168.0.11 + 
- user root +<WRAP center round info 95%> 
- ProxyCommand ssh -qAx alolise_demo_nginx -W %h:%p +Pour les autres serveurs, adapter le fichier de configuration en fonction : 
-host alolise_demo_deb12 +<code> 
- hostname 192.168.0.12 +host alolise_demo_nginx 
- user root + hostname demo.alolise.org 
- ProxyCommand ssh -qAx alolise_demo_nginx -W %h:%p + port 22 
-(...)+ user demolise 
 host alolise_demo_debXX host alolise_demo_debXX
  hostname 192.168.0.XX  hostname 192.168.0.XX
- (...) +        user root 
-</file>+ ProxyCommand ssh -qAx alolise_demo_nginx -W %h:%p 
 +</code> 
 +</WRAP> 
  
-Ensuite il suffit d'ajouter ses clés ssh (optionnel)+Ensuite il suffit d'ajouter ses clés ssh (optionnel). \\ 
 +Exemple pour //deb10// toujours :
 <code> <code>
 $ ssh-copy-id alolise_demo_nginx $ ssh-copy-id alolise_demo_nginx
Ligne 57: Ligne 75:
 </code> </code>
  
-Puis de se connecter+Puis de se connecter (adapter //XX// au numéro du serveur) :
 <code> <code>
-$ ssh alolise_demo_deb10+$ ssh alolise_demo_debXX
 Linux deb10 4.2.6-1-pve #1 SMP Wed Dec 9 10:49:55 CET 2015 x86_64 Linux deb10 4.2.6-1-pve #1 SMP Wed Dec 9 10:49:55 CET 2015 x86_64
  
Ligne 69: Ligne 87:
 permitted by applicable law. permitted by applicable law.
 Last login: Fri Apr  1 11:52:44 2016 from 192.168.0.2 Last login: Fri Apr  1 11:52:44 2016 from 192.168.0.2
-root@deb10:~# +root@debXX:~# 
 </code> </code>
  
  
 ===== Installation Owncloud ===== ===== Installation Owncloud =====
-Installer les paquets :+Installer les paquets qui seront nécessaires à l'installation du tarball Owncloud via le gestionnaire de paquet **aptitude** ou **apt-get** :
 <code> <code>
-# aptitude install apache2 libapache2-mod-php5 php5-mysqlnd mysql-server curl php5-gd php5-curl libapache2-mod-fcgid+# aptitude install apache2 libapache2-mod-php5 php5-mysqlnd mysql-server curl php5-gd php5-curl libapache2-mod-fcgid php-http-webdav-server
 </code> </code>
 +
 +
 +<WRAP center round important 95%>
 +Lors de l'installation du paquet **mysql-server**, le mot de passe du compte administrateur de MySQL vous sera demandé. Donner un mot de passe suffisamment complexe et conservez-le, le compte **root** de MySQL permet d'accéder à toutes les bases de données du serveur.
 +</WRAP>
 +
  
 Téléchargement de la dernière version (https://owncloud.org/install/#instructions-server) : Téléchargement de la dernière version (https://owncloud.org/install/#instructions-server) :
Ligne 94: Ligne 118:
 </code> </code>
 </WRAP> </WRAP>
 +
 +Enfin on extrait l'archive :
 +  tar xf owncloud-9.0.0.tar.bz2
 +  
 +On a maintenant tous les fichiers propres à Owncloud extraits dans le dossier **/etc/owncloud/owncloud**.
  
 ==== Préparation de la base de données ==== ==== Préparation de la base de données ====
-On créer la base MySQL **owncloud** et on ajout un utilisateur administrateur pour cette base :+On créer la base MySQL **owncloud** et on ajout un utilisateur administrateur //admincloud// pour cette base :
 <code> <code>
 # mysql -u root -p # mysql -u root -p
Ligne 113: Ligne 142:
 Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
 </code> </code>
 +<WRAP center round tip 95%>
 +La première commande ''mysql -u root -p'' est exécutée depuis le SHELL en tant que root ; le prompt est un **#** (réservé à l'utilisateur **root**) et non un **$**. \\
 +Le prompt **mysql> ** nous indique que l'on est bien connecté au serveur MySQL. Les commandes sont donc écrites en langage **SQL**. Attention à ne pas oublier le '';'' qui marque la fin de chaque requête SQL.
 +</WRAP>
  
-==== Préparation du serveur Web Apache ====+<WRAP center round important 95%> 
 +Encore une fois, attention à mettre un mot de passe suffisamment fort pour une installation "réelle". Ici, demolise est utilisé pour simplifier le déroulement de l'atelier. 
 +</WRAP>
  
 +
 +==== Préparation du serveur Web Apache ====
 === Se connecter à son serveur web === === Se connecter à son serveur web ===
 On se connecte à cette adresse : [[http://deb10.demo.alolise.org]] On se connecte à cette adresse : [[http://deb10.demo.alolise.org]]
Ligne 125: Ligne 162:
  
 ==== Configuration du serveur Web Apache ==== ==== Configuration du serveur Web Apache ====
 +Toujours en utilisateur **root**, on créer le fichier de configuration qui va dire à Apache vers quel dossier pointer lorsqu'il reçoit des requêtes à destination de debXX.demo.alolise.org. Le fichier contient la configuration suivante (adapter le **ServerName** en fonction de votre domaine).
 <code> <code>
-# cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/owncloud.conf 
- 
 # nano /etc/apache2/sites-available/owncloud.conf # nano /etc/apache2/sites-available/owncloud.conf
 </code> </code>
 <file - /etc/apache2/sites-available/owncloud.conf> <file - /etc/apache2/sites-available/owncloud.conf>
 <VirtualHost *:80> <VirtualHost *:80>
-        ServerName deb10.demo.alolise.org+        ServerName debXXdemo.alolise.org
  
         ServerAdmin webmaster@localhost         ServerAdmin webmaster@localhost
Ligne 152: Ligne 188:
 </file> </file>
  
-On contrôle et on redémarre **apache** :+ 
 +Maintenant on 
 +  - active la nouvelle configuration 
 +  - désactive la configuration par défaut 
 +  - contrôle la configuration générale 
 +  - redémarre **apache**
 <code> <code>
-# apachectl -t 
 # a2ensite owncloud # a2ensite owncloud
 # a2dissite 000-default # a2dissite 000-default
 +# apachectl -t
 # service apache2 restart # service apache2 restart
 </code> </code>
  
-{{ :owncloud_install.png?direct&140|}}On se connecte à [[http://deb10.demo.alolise.org:8010]], et on entre les infos demandées puis on valide.+==== Connexion au site et finalisation de l'installation ==== 
 +{{ public:owncloud_install.png?direct&140|}}On se connecte à [[http://deb10.demo.alolise.org]], et on entre les infos demandées puis on valide
 +\\ A la fin de l'installation, on arrive sur l'interface utilisateur d'Owncloud (avec l'utilisateur //admin//).
  
-<WRAP center round important 95%> 
-Lors de la fin de l'installation, **Owncloud** va refuser l'accès au domaine **deb10.demo.alolise.org:8010**. Enlever le **:8010** du tableau ''trusted_domains'' et recharger apache via ''apachectl graceful''. 
-<file -:/opt/owncloud/owncloud/config/config.php> 
-<?php 
-$CONFIG = array ( 
-  'instanceid' => 'octa3w4h88en', 
-  'passwordsalt' => 'XXXXXXXXXXXXXXXXXXXXXXXXX', 
-  'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXX', 
-  'trusted_domains' => 
-  array ( 
-    0 => 'deb10.demo.alolise.org', 
-    1 => 'localhost', 
-  ), 
-  'datadirectory' => '/opt/owncloud/owncloud/data', 
-  'overwrite.cli.url' => 'http://deb10.demo.alolise.org:8010', 
-  'dbtype' => 'mysql', 
-  'version' => '9.0.0.19', 
-  'dbname' => 'owncloud', 
-  'dbhost' => 'localhost', 
-  'dbtableprefix' => 'oc_', 
-  'dbuser' => 'admincloud', 
-  'dbpassword' => 'demolise', 
-  'logtimezone' => 'UTC', 
-  'installed' => true, 
-); 
-</file> 
-</WRAP> 
  
 ==== Tuning Apache ==== ==== Tuning Apache ====
-La page de paramètres de **Ownclould** [[http://deb10.demo.alolise.org:8010/index.php/settings/admin]] permet de contrôler que tout va bien. Normalement avec la configuration précédente permettant l'utilisation du **.htaccess** seuls l'HTTPS et le cache devraient être en //Warning//.+La page de paramètres de **Ownclould** [[http://debXX.demo.alolise.org/index.php/settings/admin]] permet de contrôler que tout va bien. Normalement avec la configuration précédente permettant l'utilisation du **.htaccess** seuls l'HTTPS et le cache devraient être en //Warning//.
  
-En complément, on peut activer certains modules pour utiliser les paramètres définis dans le fichier ''.htaccess'' :+En complément, on peut activer certains modules pour utiliser les paramètres définis dans le fichier ''.htaccess'' (cela ne règlera pas les //Warnings// mentionnés ci-dessus) :
 <code> <code>
 a2enmod fcgid rewrite headers a2enmod fcgid rewrite headers
Ligne 199: Ligne 215:
 </code> </code>
  
-===== Et pour quelques commandes de plus... =====+===== Connexion sécurisée à l'interface Web par HTTPS =====
 Il ne reste plus qu'à mettre en place une connexion sécurisée au serveur Web, notamment afin de ne pas envoyer le mot de passe de notre utilisateur en clair sur Internet... Il ne reste plus qu'à mettre en place une connexion sécurisée au serveur Web, notamment afin de ne pas envoyer le mot de passe de notre utilisateur en clair sur Internet...
  
 On peu depuis quelques mois (au 01/04/2016) utiliser une implémentation du protocole ACME (Automated Certificate Management Environment) grâce à l'aboutissement du projet [[https://letsencrypt.org/ |Let's Encrypt]]. \\ On peu depuis quelques mois (au 01/04/2016) utiliser une implémentation du protocole ACME (Automated Certificate Management Environment) grâce à l'aboutissement du projet [[https://letsencrypt.org/ |Let's Encrypt]]. \\
  
 +<WRAP center round info 95%>
 Le projet **Let's Encrypt** est le chaînon manquant à une adoption massive de la version sécurisée du protocole HTTP. Nous avons maintenant la possibilité de mettre en place **simplement** et de maintenir **automatiquement** HTTPS sur l'ensemble de nos site Web, avec des certificats **reconnus pas les navigateurs**. \\ Le projet **Let's Encrypt** est le chaînon manquant à une adoption massive de la version sécurisée du protocole HTTP. Nous avons maintenant la possibilité de mettre en place **simplement** et de maintenir **automatiquement** HTTPS sur l'ensemble de nos site Web, avec des certificats **reconnus pas les navigateurs**. \\
 +</WRAP>
  
-Le plus simple est d'utiliser le [[https://github.com/letsencrypt/letsencrypt|client officiel]], mais comme toujours dans le monde du libre il existe [[https://www.metachris.com/2015/12/comparison-of-10-acme-lets-encrypt-clients/#client-lets-encrypt|plusieurs alternatives]]. Notamment [[https://github.com/diafygi/acme-tiny|acme-tiny]], qui a été testé avec succès (Client ACME léger semi-automatique, possibilité d'automatiser le renouvellement une fois le premier certificat généré). 
  
-Un tutoriel complet sera mis en ligne sur le [[http://alolise.org|site d'Alolise]] dans les semaines à venir.+Le plus simple est d'utiliser le [[https://github.com/letsencrypt/letsencrypt|client officiel]]. Nous avons suivi le [[https://letsencrypt.org/getting-started/|tutoriel du site officiel]] en remettant chaque étape ci-dessous. 
 + 
 +==== Obtention du client ==== 
 +Tout d'abord on active les dépôts **backports** de Jessie en ajoutant dans **etc/apt/sources.list** : 
 +<code> 
 +# backports 
 +deb http://ftp.debian.org/debian jessie-backports main contrib 
 +</code> 
 + 
 +Puis on met à jour et on install letsencrypt et les outils pour Apache : 
 +<code> 
 +# aptitude update 
 +# aptitude install --jessie-backports python-cryptography python-letsencrypt python-letsencrypt-apache 
 +</code> 
 + 
 +Enfin, on lance le client (toujours en **root**), qui nous détecte et met en place tout ce qu'il faut : 
 +  letsencrypt --apache 
 +   
 +{{ public:selection_052.png?direct&300 |}} 
 + 
 +Suivez les différents écrans, jusqu'à choisir entre un accès HTTP et HTTPS ou une redirection systématique vers HTTPS (recommandé) : 
 +{{ public:selection_053.png?direct&300 |}} 
 + 
 +On valide... et c'est terminé ! 
 +{{ public:selection_054.png?direct&300 |}} 
 + 
 +On recharge son site préféré pour profiter de notre nouvelle connexion HTTP**S** : 
 +{{ public:selection_055.png?direct |}} 
 + 
 +=== Ce qui s'est passé === 
 +La commande ''letsencrypt --apache'' a eu pour effet deux actions principales : 
 +  * Connexion à LetsEncrypt pour demander un certificat signé par l'autorité de certification de LetsEncrypt. Pour se faire, le programme s'enregistre automatique et demande le certificat pour le(s) domaine(s) que l'on a sélectionné en console. LetsEncrypt demande alors à notre serveur Apache de prouver qu'il est bien //détenteur du domaine// en affichant un code de confirmation lisible par LetsEncrypt. Une fois que l'on a montré patte blanche, LetsEncrypt envoi le certificat et notre client le récupère. C'est le protocole ACME. 
 +  * Modification de la configuration et redémarrage du serveur Apache. Dans notre cas on a demandé à ce que soit redirigé les requêtes HTTP vers HTTPS. On obtient au final deux fichiers pour la configuration Apache : 
 +Le fichier pour HTTP, qui intègre maintenant une redirection : 
 +<file - /etc/apache/sites-enabled/owncloud.conf> 
 +<VirtualHost *:80> 
 +        ServerName deb10.demo.alolise.org 
 + 
 +        ServerAdmin webmaster@localhost 
 +        DocumentRoot /opt/owncloud/owncloud 
 + 
 +        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
 +        # error, crit, alert, emerg. 
 +        LogLevel warn 
 + 
 +        ErrorLog ${APACHE_LOG_DIR}/error.log 
 +        CustomLog ${APACHE_LOG_DIR}/access.log combined 
 + 
 +        <Directory /opt/owncloud/owncloud> 
 +            Require all granted 
 +            AllowOverride All 
 +        </Directory> 
 + 
 +RewriteEngine on 
 +RewriteCond %{SERVER_NAME} =deb10.demo.alolise.org 
 +RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] 
 +</VirtualHost> 
 +</file> 
 + 
 +Le fichier pour HTTPS **owncloud-le-ssl.conf** : 
 +<file - /etc/apache2/sites-enabled/owncloud-le-ssl.conf> 
 +<IfModule mod_ssl.c> 
 +<VirtualHost *:443> 
 +        ServerName deb10.demo.alolise.org 
 + 
 +        ServerAdmin webmaster@localhost 
 +        DocumentRoot /opt/owncloud/owncloud 
 + 
 +        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
 +        # error, crit, alert, emerg. 
 +        LogLevel warn 
 + 
 +        ErrorLog ${APACHE_LOG_DIR}/error.log 
 +        CustomLog ${APACHE_LOG_DIR}/access.log combined 
 + 
 +        <Directory /opt/owncloud/owncloud> 
 +            Require all granted 
 +            AllowOverride All 
 +        </Directory> 
 + 
 +SSLCertificateFile /etc/letsencrypt/live/deb10.demo.alolise.org/fullchain.pem 
 +SSLCertificateKeyFile /etc/letsencrypt/live/deb10.demo.alolise.org/privkey.pem 
 +Include /etc/letsencrypt/options-ssl-apache.conf 
 +</VirtualHost> 
 +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 
 +</IfModule> 
 +</file> 
 + 
 +==== Alternatives ==== 
 +<WRAP center round info 95%> 
 +D'autres [[https://www.metachris.com/2015/12/comparison-of-10-acme-lets-encrypt-clients/#client-lets-encrypt|implémentations alternatives]] exitent, notamment [[https://github.com/diafygi/acme-tiny|acme-tiny]], qui a été testé avec succès (Client ACME léger semi-automatique, possibilité d'automatiser le renouvellement une fois le premier certificat généré). 
 +</WRAP> 
  
 ===== Liens ===== ===== Liens =====
 +[[http://alolise.org|site de l'association Alolise]]
 +
 +
  
public/avec_un_peu_d_huile_de_cloud.1459777231.txt.gz · Dernière modification: 2016/04/04 15:40 de jerome.avond