Installation
Transcription
Installation
Installation de Scrumblr Description Scrumblr est un logiciel libre distribué sous licence GPLv3 qui a pour objectif de fournir un tableau de post-it collaboratif en temps réel. Il s’agit de la solution logicielle qui propulse le service en ligne Framemo. Du point de vue utilisateur, seul un navigateur Web est nécessaire. Nous allons dans ce tutoriel voir la manière d’installer la partie serveur. Ce guide est prévu pour Debian Stable. À l’heure où nous écrivons ces mots, il s’agit de Debian 8.5 Jessie. Nous partons du principe que vous venez d’installer le système, que celui-ci est à jour et que vous avez déjà installé le serveur web Nginx. Nourrir la terre NodeJS Scrumblr est une application développée avec le langage de programmation JavaScript et s’appuie sur la plate-forme NodeJS. Malheureusement la version de NodeJS disponible dans les dépôts Debian est assez ancienne. Nous allons installer NodeJS 4 depuis les dépôts de l’éditeur. curl -sL https://deb.nodesource.com/setup_4.x /tmp/install_node_depot.sh > On vérifie le contenu de /tmp/install_node_depot.sh pour vérifier que le script ne fait rien de dangereux (on va le lancer en root quand même !), puis on le lance et on installe NodeJs : nano /tmp/install_node_depot.sh sudo bash /tmp/install_node_depot.sh sudo apt-get install -y nodejs Redis Redis est le serveur de base de données de Scrumblr. La version de Debian stable ira bien, il suffit pour l’installer de faire : sudo apt-get install redis-server Utilisateur dédié De manière à mieux isoler l’application, nous allons créer un utilisateur dédié à Scrumblr, du même nom que le logiciel : sudo adduser --no-create-home --home /var/www/scrumblr -disabled-login --gecos "Scrumblr" scrumblr Cette commande crée l’utilisateur scrumblr ainsi qu’un groupe du même nom. Il lui assigne comme répertoire personnel /var/www/scrumblr, sans toutefois créer ce répertoire. Semer Prérequis Pour installer Scrumblr, il nous faudra récupérer la dernière version du code source. Pour cela, il est possible de télécharger l’archive correspondante ou d’utiliser git. Nous privilégierons ce dernier, car cela nous permettra de gérer plus aisément les mises à jour. Pour installer git, rien de plus simple : sudo apt-get install git Scrumblr Clonons le code source de scrumblr en lançant la commande suivante : cd /var/www/ sudo git clone https://github.com/aliasaria/scrumblr.git sudo chown scrumblr: -R /var/www/scrumblr Ensuite, nous allons lancer l’installation des dépendances : cd /var/www/scrumblr sudo su scrumblr -s /bin/bash npm install exit Framasky a codé quelques fonctionnalités plutôt pratiques : un système d’import/export le support du markdown un système de révisions : créeez un point de révision, exportez-le et réimportez-le pour y revenir Pour profiter de ces fonctionnalités (qui ne sont pas encore intégrées dans le dépôt originel (pull requests 95 et 96) : cd /var/www/scrumblr sudo su scrumblr -s /bin/bash git remote add fork https://github.com/ldidry/scrumblr/ git fetch fork git pull fork master Arroser Lancer Scrumblr Scrumblr est maintenant prêt à être lancé avec node server.js --port 4242 ! Mais pour ne pas avoir laisser un terminal ouvert, il faut créer un service systemd. Créez le fichier /etc/systemd/system/scrumblr.service : [Unit] Description=Scrumblr service Documentation=https://github.com/aliasaria/scrumblr/ Requires=network.target Requires=redis-server.service After=network.target After=redis-server.service [Service] Type=simple User=scrumblr WorkingDirectory=/var/www/scrumblr ExecStart=/usr/bin/node server.js --port 4242 [Install] WantedBy=multi-user.target Bien sûr, choisissez le port que vous voulez, pourvu qu’il soit supérieur à 1024 et non utilisé (vérifiez cela avec sudo lsof -i :4242) Ensuite, pour activer et lancer Scrumblr : sudo systemctl daemon-reload sudo systemctl enable scrumblr.service sudo systemctl start scrumblr.service Procéder aux mises à jour de Scrumblr Notre Scrumblr est sorti de terre et se porte bien mais comment le faire durer ? Voyons cela : utilisons git pour récupérer la dernière version du logiciel : cd /var/www/scrumblr sudo su scrumblr -s /bin/bash git pull npm install exit sudo systemctl restart scrumblr.service Rien de plus simple ! Regarder pousser Mise en place d’un proxy inverse Scrumblr est capable de fonctionner seul sur un port standard, mais il est possible que nous ne dédiions pas notre machine à ce service et que nous ayons d’autres applications Web à lui adjoindre. Il peut dans ce cas être intéressant d’utiliser un serveur frontal qui jouera le rôle de proxy inverse vers Scrumblr. Pour cet exemple, nous choisissons d’employer Nginx et un domaine ou sous-domaine dédié à l’instance Scrumblr. Créons le fichier /etc/nginx/sites-available/scrumblr, par exemple avec nano : sudo nano /etc/nginx/sitesavailable/scrumblr. À l’intérieur, nous optons pour la configuration suivante : upstream scrumblr { server 127.0.0.1:4242; } server { listen 80; listen [::]:80; server_name scrumblr.exemple.org; access_log /var/log/nginx/scrumblr.exemple.org.access.log; error_log /var/log/nginx/scrumblr.exemple.org.error.log; index index.html; root /var/www/html/; location / { proxy_set_header Host $host; proxy_pass http://framemo; proxy_redirect http://scrumblr http://scrumblr.exemple.org; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } Quelques explications : Le port 80 est le port standard pour le Web (protocole HTTP). Libre à vous de configurer un accès chiffré ; Le server_name est le nom de domaine ou sous-domaine sur lequel nous souhaitons que notre instance Scrumblr soit accessible ; Les *_log permettent d’isoler la journalisation des accès et éventuelles erreurs de Nginx vers Scrumblr dans des fichiers spécifiques ; Tout le trafic sur ce domaine est redirigé vers l’adresse locale, sur le port 4242 (que nous avons choisi dans le service systemd). Enfin, le dernier bloc permet de passer les requêtes vers Scrumblr. Nous allons ensuite activer cette configuration en créant un lien symbolique vers la configuration active : sudo ln -s /etc/nginx/sites-available/scrumblr /etc/nginx/sites-enabled Relançons nginx de manière à ce qu’il prenne en compte le nouveau fichier de configuration : sudo nginx -t && sudo nginx -s reload (nginx -t permet de vérifier que la configuration de Nginx est valide avant de le relancer) Installation de Minetest Description Minetest est un logiciel libre distribué sous LGPL v2.1+. Il s’agit d’un jeu de type bac-à-sable en monde ouvert, inspiré de InfiniMiner, Minecraft, et d’autres semblables. Minetest est très facilement modulable. Il peut ainsi servir des objectifs totalement différents, selon les mods qu’on y installe. Une installation pourra servir comme jeu de ferme entre amis, une autre installation comme d’un jeu avec des monstres à battre, une autre installation comme d’un support éducatif et encore plein d’autres. C’est le support éducatif qui a intéressé Framasoft. Ce guide est prévu pour Debian Stable. À l’heure où nous écrivons ces mots, il s’agit de Debian 8.5 Jessie. Nous partons du principe que vous venez d’installer le système et que celui-ci est à jour. Nourrir la terre Utilisateur dédié De manière à mieux isoler l’application, nous allons créer un utilisateur dédié à Minetest, du même nom que le logiciel : useradd -mU minetest Cette commande crée l’utilisateur minetest ainsi qu’un groupe du même nom. Il lui assigne comme répertoire personnel /home/minetest, que minetest utilisera pour stocker ses données (monde, mods, textures, données utilisateurs…). Nous allons aussi créer quelques dossiers qui nous serviront par la suite pour installer les mods et les textures. mkdir -p /home/minetest/.minetest/textures /home/minetest/.minetest/worlds chown -R minetest: /home/minetest/.minetest/ Semer Minetest Il suffit d’installer minetest-server, de préférence depuis les dépôts jessie-backports pour avoir la dernière version disponible : echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list apt-get update apt-get install minetest-server -t jessie-backports Précision sur l’ouverture des ports : le port dédié à Minetest habituellement est le port 30000 en udp (mais vous pouvez choisir un autre port comme 30001) Arroser Installer les mods Téléchargez notre pack de texture, notre mod et notre exemple de configuration cd /home/minetest wget https://framinetest.org/dl/worldmods.tar.gz https://framinetest.org/dl/textures.tar.gz https://framinetest.org/dl/minetest.conf Décompressez-les aux endroits idoines cd .minetest/textures tar xvf /home/minetest/textures.tar.gz cd ../worlds # Créez un dossier avec un nom qui vous convient, exemple `FraminetestEdu` mkdir FraminetestEdu cd FraminetestEdu tar xvf /home/minetest/worldmods.tar.gz Liste des mods Voici la listes des mods inclus dans notre pack spécial « éducation » : animals_modpack-2.5.0 minetest-mod-mesecons-master plastique biome_lib-master minetest-mods-homedecor quartz car_f1 moreblocks-master streets-1.5 farming_plus moreores-master technic-master gloopblocks-master moretrees-master torches hud_hunger nether unified_inventory industry_pack pipeworks-master minetest-3d_armor-master plantlife_modpack-master Configurer Minetest Éditez la configuration selon vos préférences vi minetest.conf Changer le propriétaire Comme jusque là, on utilisait l’utilisateur root pour travailler, il est important de rendre à minetest ce qui est à minetest chown -R minetest: /home/minetest Et pour que nous puissions utiliser le dossier de log du système chown -R minetest /var/log/minetest Pour démarrer le serveur sur un monde spécifique, il suffit de faire : minetestserver worldname xxx --config /home/minetest/minetest.conf -- ou simplement, si un monde par défaut est configuré dans le minetest.conf : minetestserver --config /home/minetest/minetest.conf Attention, assurez-vous d’abord que le serveur minetest lancé à l’installation du paquet soit coupé : systemctl stop minetest-server Regarder pousser Créer un service pour Minetest Un serveur minetest, c’est bien, mais c’est encore mieux si le serveur se lance automatiquement au démarrage de la machine. Tout d’abord, nous il faut couper et désactiver le serveur minetest qui s’est lancé à l’installation du paquet : systemctl stop minetest-server systemctl disable minetest-server Puis nous créons un service pour notre configuration : vi /etc/systemd/system/minetest.service Dont le contenu sera : [Unit] Description=Minetest multiplayer server minetest.conf server config Documentation=man:minetestserver(6) After=network.target RequiresMountsFor=/home/minetest [Service] Restart=on-failure User=minetest Group=minetest ExecStart=/usr/lib/minetest/minetestserver /home/minetest/minetest.conf /var/log/minetest/minetest.log --config --logfile [Install] WantedBy=multi-user.target On l’active pour qu’il se lance au démarrage et on le lance : systemctl daemon-reload systemctl enable minetest systemctl start minetest Vous avez la possibilité de programmer des horaires d’ouverture/fermeture via des tâches cron pour, par exemple, n’allumer le service que pendant les heures de cours. Autres serveurs Vous pouvez également trouver votre bonheur dans l’un des serveurs publics Alternative Pour des groupes de 4-8 élèves Il existe enfin une dernière possibilité, très simple à mettre en place, mais limité à quelques élèves : utiliser le client Minetest en mode graphique (comme si vous alliez jouer), mais en choisissant l’onglet « Server » (au lieu de client). Une fois le serveur démarré de cette manière, il ne vous reste plus qu’à : Vérifier que votre parefeu autorise le port 30000/UDP en entrée ; Vérifier que tous les joueurs sont sur le même réseau que vous ; Distribuer votre adresse IP (celle de l’ordinateur faisant office de serveur). (Sous Windows, la commande ipconfig dans une invite de commande permet de l’avoir. Sur GNU/Linux, on utilisera la commande ip addr show. Merci à Powi et Sangokuss pour la rédaction de ce tutoriel ! Installation Mattermost de Gitlab et Introduction On ne présente plus Gitlab aux barbus qui font du développement… l’alternative la plus populaire à github pour gérer le versionnement de son code via un site web, que nous utilisons pour… Framagit (surprise !). Mattermost est un logiciel de chat en groupe, alternative au service privateur Slack. Voyez-le comme une alternative plus moderne à IRC : on peut y créer des groupes de discussion facilement, en y incluant des médias. Du coup, nous nous fondons sur celui-ci pour offrir Framateam. Depuis Août 2015 et la version 7.22, Gitlab intègre directement Mattermost dans ses versions. Nous allons pouvoir faire d’une pierre deux coups ! Si gitlab et mattermost vont désormais de pair, il est toujours possible d’installer Mattermost tout seul, en stand alone comme on dit dans le jargon. N’hésitez pas à jeter un oeil à la documentation de Mattermost pour cela ! Prérequis La machine utilisée pour ce tutoriel tourne sous Linux Debian Jessie. C’est tout ! Pas de serveur web ni de base de données, Gitlab embarque ce dont il a besoin avec son package. La version de Gitlab installée ici est la version omnibus (c’est à dire qu’elle inclut tous les packages dont elle pourrait avoir besoin), d’où le peu de dépendances. En option, vous pourriez avoir besoin : d’un nom de domaine correctement configuré pour rediriger vers votre serveur d’un serveur mail opérationnel pour les notifications de messages Prenez aussi le temps de regarder les prérequis hardware de gitlab : c’est un logiciel qui peut être un peu gourmand (selon la volumétrie d’utilisateurs que vous aurez), ils recommandent un minimum de deux cœurs et 2 Go de mémoire vive. Il est possible mais pas vraiment conseillé de l’installer sur une « petite » machine comme un Raspberry Pi pour une utilisation au quotidien! Installation 1 – Préparer la terre Commençons par installer l’indispensable (certains packages devraient être installés par défaut, mais rien ne coûte de vérifier) : sudo apt-get install curl openssh-server ca-certificates Ensuite, configuration des sources : curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab -ce/script.deb.sh > script.deb.sh Ne pas hésiter à ouvrir le fichier script.deb.sh pour savoir ce qu’il fait (en plus il est bien commenté !) sudo bash script.deb.sh Vous devriez avoir une réponse de ce genre: Detected operating system as debian/jessie. Checking for curl... Detected curl... Running apt-get update... done. Installing debian-archive-keyring which is needed for installing apt-transport-https on many Debian systems. Installing apt-transport-https... done. Installing /etc/apt/sources.list.d/gitlab_gitlabce.list...done. Importing packagecloud gpg key... done. Running apt-get update... done. The repository is setup! You can now install packages. 2 – Semer Passons aux choses sérieuses avec l’installation : sudo apt-get install gitlab-ce L’installation nous conseillera de lancer un sudo gitlab-ctl reconfigure mais faisons quelques ajustements avant cela, que ce soit pour Gitlab ou pour Mattermost. Configuration de Gitlab sudo vi /etc/gitlab/gitlab.rb Les options à contrôler/décommenter sont les suivantes dans notre cas: external_url 'gitlab.example.org' : l’URL du gitlab (vous noterez qu’il n’y a pas de ‘=’ au contraire des autres paramètres) gitlab_rails['gitlab_email_enabled'] : pour les mails de notification gitlab_rails['gitlab_email_from'] : l’adresse de provenance des mails gitlab_rails['gitlab_email_display_name'] : un petit nom sympa « Gitlab de XXX » gitlab_rails['gitlab_email_reply_to'] : une adresse de réponse pour les mails (champ reply to: nous avons mis une adresse noreply ici car nous ne gérons pas les réponses par mail) gitlab_rails['gitlab_default_theme'] : choisissez ici le thème par défaut. Framasoft a fait le choix 1 (contre 2 par défaut) gitlab_rails['gitlab_default_projects_features_merge_req uests'] : pour activer (ou non) par défaut les merge request par défaut sur les projets gitlab_rails['gitlab_default_projects_features_wiki'] : pour activer (ou non) par défaut les wikis gitlab_rails['gitlab_default_projects_features_snippets' ] : pour activer (ou non) par défaut les snippets (comme les gists de github) gitlab_rails['incoming_email_enabled'] : permettre aux utilisateurs de répondre aux tickets et merge requests par mail. Framasoft l’a désactivé. Une documentation ici pour le mettre en place Authentification LDAP, pour utiliser un LDAP pour se loguer : gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' host: 'ldap.example.org' port: 636 uid: 'uid' method: 'ssl' # "tls" or "ssl" or "plain" bind_dn: 'uid=ldapaccess,ou=users,dc=example,dc=org' password: 'password' active_directory: false allow_username_or_email_login: true block_auto_created_users: false base: 'ou=users,dc=example,dc=org' user_filter: '(uid!=ldapaccess)' attributes: username: ['uid', 'userid', 'sAMAccountName'] email: ['mail', 'email', 'userPrincipalName'] name: 'cn' first_name: 'givenName' last_name: 'sn' EOS Permettre l’authentification via Oauth (créer des « applications » sur github et gitlab pour avoir les app_id et app_secret) : gitlab_rails['omniauth_enabled'] = true gitlab_rails['omniauth_allow_single_sign_on'] = true (**['saml']** ???) gitlab_rails['omniauth_block_auto_created_users'] = false gitlab_rails['omniauth_auto_link_ldap_user'] = false gitlab_rails['omniauth_providers'] = [ { "name" => "github", "label" => "GitHub", "app_id" => "", "app_secret" => "", "args" => { "scope" => "user:email" } },{ "name" => "gitlab", "label" => "GitLab.com", "app_id" => "", "app_secret" => "", "args" => { "scope" => "api" } } ] gitlab_rails['backup_keep_time'] : durée en secondes de rétention des sauvegardes que Gitlab fait tous les jours (dépôts + dump SQL) Attention, cela peut vite prendre de la place ! Comme c’est notre cas chez Framasoft, nous avons un montage ssh sur /opt/backup, vers lequel nous envoyons ces sauvegardes une fois qu’elles sont faites : gitlab_rails['backup_upload_connection'] = { :provider => 'Local', :local_root => '/opt/backup/' } gitlab_rails['backup_upload_remote_directory'] = '.' # ou '/gitlab' si vous voulez les mettre dans '/opt/backup/gitlab' Cependant, il faut encore supprimer les anciennes sauvegardes régulièrement. Nous faisons ça avec un cron (suppression des sauvegardes qui datent de plus de 15 jours) : 17 8 * * * find /opt/backup -mtime "+15" delete Pour finir : gitlab_rails['extra_piwik_url'] = 'piwik.example.org' : pour les stats piwik, l’hôte du piwik gitlab_rails['extra_piwik_site_id'] : l’id piwik de votre gitlab nginx['redirect_http_to_https'] : rediriger toutes les requêtes http vers la version https nginx['ssl_certificate'] : le chemin absolu du certificat (avec sa chaîne de certification) nginx['ssl_certificate_key'] : le chemin absolu de la clé du certificat nginx['ssl_dhparam'] : il est toujours bon pour la sécurité de générer un fichier dhparam : openssl dhparam -out /etc/gitlab/dhparams.pem 4096 nginx['custom_nginx_config'] = "include /var/opt/gitlab/nginx/conf/conf.d/*.conf;" : Juste pour avoir un dossier dans lequel ajouter de la configuration Nginx sans avoir à modifier la configuration gitlab. C’est très pratique, comme on le verra plus loin. Ne pas oublier de le créer s’il n’existe pas déjà via un mkdir -p /var/opt/gitlab/nginx/conf/conf.d/ Configuration de Mattermost La configuration est très similaire à celle que nous venons de faire sur Gitlab. Dans le même fichier de configuration /etc/gitlab/gitlab.rb : mattermost_external_url 'https://mattermost.example.org' : l’URL de Mattermost (comme pour gitlab, pas de ‘=’ ici) mattermost['enable'] = true : pour activer mattermost mattermost['service_use_ssl'] = true : httpS, c’est bien ! mattermost['service_enable_incoming_webhooks'] = true : pour permettre d’envoyer des messages à mattermost depuis gitlab (ou n’importe quel autre outil, tant que le message est bien formé) mattermost['service_allow_cors_from'] = "gitlab.example.org" : pour autoriser les requêtes provenant d’autres domaines. Mettre '*' pour tout autoriser, laisser vide ('') pour désactiver mattermost['service_enable_commands'] = true : autoriser les utilisateurs à créer des slash commands (voir dans les bonus, en bas de cet article) mattermost['team_site_name'] = "Mon super mattermost" : Le petit nom de votre mattermost. Chez nous, c’est « Framateam » mattermost['team_enable_team_listing'] = true : autoriser les équipes à se placer (volontairement, en opt-in) dans l’annuaire des équipes, permettant à quiconque de choisir une équipe existante depuis la page d’accueil Pour permettre l’authentification avec les comptes de votre Gitlab : mattermost['gitlab_enable'] = true mattermost['gitlab_secret'] et mattermost['gitlab_id'] : pour obtenir le gitlab_secret et le gitlab_id, créez une application dans la partie admin de gitlab, avec comme « Redirect URL » https://mattermost.example.org/signup/gitlab/compl ete et https://mattermost.example.org/login/gitlab/comple te (une URL par ligne) mattermost['gitlab_auth_endpoint'] "https://gitlab.example.org/oauth/authorize" = mattermost['gitlab_token_endpoint'] "https://gitlab.example.org/oauth/token" = mattermost['gitlab_user_api_endpoint'] "https://gitlab.example.org/api/v3/user" = Et pour configurer le serveur mail (comme pour gitlab) : mattermost['email_enable_sign_up_with_email'] = true mattermost['email_enable_sign_in_with_email'] true mattermost['email_enable_sign_in_with_username'] true mattermost['email_send_email_notifications'] true mattermost['email_require_email_verification'] true mattermost['email_smtp_username'] "[email protected]" mattermost['email_smtp_password'] = "password" = = = = = mattermost['email_smtp_server'] = "mail.mattermost.org" mattermost['email_smtp_port'] = "465" mattermost['email_connection_security'] = "TLS" mattermost['email_feedback_name'] = "Notification Mattermost" mattermost['email_feedback_email'] = "[email protected]" mattermost['support_email'] = "[email protected]" : l’adresse e-mail du support mattermost['privacy_show_email_address'] = false : les adresses e-mail des inscrits ne seront pas affichées mattermost['privacy_show_full_name'] = false : pareil pour leur vrai nom. Seuls les pseudos seront affichés mattermost_nginx['enable'] = true : c’est mieux si votre mattermost est accessible par le web mattermost_nginx['redirect_http_to_https'] = true : httpS. Toujours httpS ! mattermost_nginx['ssl_certificate'] : le chemin absolu du certificat (avec sa chaîne de certification) mattermost_nginx['ssl_certificate_key'] : le chemin absolu de la clé du certificat mattermost_nginx['ssl_dhparam'] : même remarque que pour gitlab ci-dessus Et on termine l’installation avec : sudo gitlab-ctl reconfigure Ouf ! Ça en fait des choses à configurer. 3 – Arroser Un petit mot à propos de gitlab-ctl Gitlab vient avec son Nginx, son PostgreSQL, etc. On ne peut pas les relancer avec service nginx restart. À la place on utilise gitlab-ctl restart nginx. Lancez gitlabctl help pour voir toutes les options. Pensez d’ailleurs à ne pas mettre en concurrence (sur le même port) le nginx de gitlab avec un éventuel apache/nginx installé sur votre machine ! (Votre serviteur s’est retrouvé avec un Gitlab « qui ne marchait pas » avec une erreur 404, avant de comprendre que le nginx stand-alone était démarré et prenait la requête en premier… ) Comme gitlab vient avec son PostgreSQL, pour accéder à la base de données, il faut faire su gitlab-psql -s /bin/bash /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql/ gitlabhq_production ou plus simplement gitlab-rails dbconsole (plus long pour arriver à la console, mais plus simple à retenir) Mettre à jour Gitlab et Mattermost Dans la première partie, nous avons récupéré un script qui ajoutait dans les sources de paquets celui de gitlab. Il est donc très simple de mettre à jour gitlab, que ce soit avec tous les paquets en même temps (sudo apt-get upgrade) ou ce paquet spécifique (sudo apt-get install --only-upgrade gitlabce). 4 – Pailler IPv6 Parce que gitlab, c’est bien, mais gitlab en IPv6, c’est mieux ! Mais Gitlab ne prend pas en compte IPv6 par défaut. Plutôt que de modifier les fichiers de configuration créés par gitlab, nous allons les dupliquer et les adapter. De cette façon, nous n’aurons pas à remettre nos modifications à chaque mise à jour de gitlab (ce qui arrive plusieurs fois par mois). En revanche, il faudra vérifier à chaque mise à jour si les fichiers de configuration de gitlab ont été modifiés, pour reporter les éventuelles modifications sur nos fichiers IPv6. cd /var/opt/gitlab/nginx/conf/ cp gitlab-http.conf gitlab-mattermost-http.conf conf.d/ cd conf.d vi gitlab-http.conf gitlab-mattermost-http.conf Là, remplacez les lignes suivantes : listen *:80; par listen [::]:80; listen *:443 ssl http2; par listen [::]:443 ssl http2; …Et supprimez les blocs suivants : upstream gitlab-workhorse dans le fichier gitlabhttp.conf upstream gitlab_mattermost et map $http_upgrade $connection_upgrade dans gitlab-mattermost-http.conf Ensuite, on relance nginx avec un petit gitlab-ctl restart nginx. Synchronisation (Mirroring) avec des projets github Il suffit d’installer WebHooker, qui vous permettra de faire une copie miroir de vos projets Gitlab sur votre compte Github. Installation Le wiki de ce projet étant déjà bien documenté (et en français !), nous passerons rapidement sur l’installation : Dépendances nécessaires : sudo su apt-get install git build-essential cpan Carton (Suivre les recommandations par défaut lors de l’installation de carton) Attention à ne pas oublier la majuscule à `Carton` lors de la commande cpan ! (sinon il ne trouvera pas le package) Installation de Web Hooker : sudo su cd /opt/ git clone https://git.framasoft.org/luc/webhooker.git web_hooker cd web_hooker carton install cp web_hooker.conf.template web_hooker.conf Éditez le fichier web_hooker.conf afin qu’il corresponde à votre configuration : repo_dir, authorized, et l’adresse d’écoute et user dans la partie hyptnotoad (il est court et bien commenté, c’est assez simple de s’y retrouver). Vous devrez y renseigner un utilisateur et mot de passe GitHub pour que WebHooker puisse pousser les modifications en son nom. Mention spéciale pour l’option authorized, en particulier si vous comptez ouvrir votre Gitlab à d’autres utilisateurs : WebHooker donne le droit à tous les utilisateurs du Gitlab de pousser des modifications au nom de l’utilisateur configuré (si ce dernier a les droits de le faire bien sûr). Ce qui n’est peut-être pas recommandé si vous avez d’autres projets sur GitHub que vous souhaiteriez ne pas modifier. L’option authorized est là pour ca: Il s’agit d’une liste blanche des projets sur lesquels WebHooker peut pousser des modifications. Pensez à y jeter un oeil et le configurer ! Reste ensuite à lancer WebHooker au démarrage (nous utilisons systemd ici, mais une configuration existe pour initV dans la documentation de WebHooker) : sudo cp /opt/web_hooker/utilities/web_hooker.service /etc/systemd/system Éditer /etc/systemd/system/web_hooker.service fraîchement copié pour l’adapter – en particulier à votre répertoire d’installation dans /opt/web_hooker/). WorkingDirectory (pour nous, N’oubliez pas de vérifier les droits de votre dossier d’installation, pour que le service puisse le démarrer! (utilisateur git par défaut) Et pour finir: sudo su systemctl daemon-reload systemctl enable web_hooker.service systemctl start web_hooker.service Utilisation C’est installé et en cours d’exécution, tout ce que vous avez à faire maintenant est d’ajouter dans gitlab un web hook à votre projet avec une URL de la forme suivante : http://127.0.0.1:4242/<github_username>/<github_repo> Recherches sur giphy depuis Mattermost Il suffit d’installer Giphy Mat Hooker puis de configurer des slash commands (ou commandes slash, commencant par le caractère /) dans un chat Mattermost pour chercher et afficher des gifs depuis http://giphy.com/. Installation Pour les mêmes raisons que webhooker, nous passerons rapidement sur l’installation. N’hésitez pas à jeter un oeil à la documentation de Giphy Mat Hooker. Les dépendances sont d’ailleurs pratiquement les mêmes : sudo su apt-get install git build-essential libssl-dev cpan Carton Attention à ne pas oublier la majuscule à `Carton` lors de la commande cpan ! (sinon il ne trouvera pas le package) cd /var/www/ git clone https://git.framasoft.org/framasoft/giphymathooker.git cd giphymathooker carton install cp giphy_mat_hooker.conf.template giphy_mat_hooker.conf chown -R www-data:www-data /var/www/giphymathooker/ Le fichier de configuration giphy_mat_hooker.conf fraîchement copié contient les explications nécessaires pour que vous l’adaptiez à votre besoin, comme webhooker (ça se voit tant que ça que le développeur est le même? ). En particulier, jetez un oeil à la clef d’API Giphy si vous souhaitez un usage en production. Au besoin, un template de configuration pour nginx existe dans le sous dossier utilities si vous souhaitez mettre Giphy Mat Hooker derrière un reverse proxy. Plus qu’à activer le service au démarrage de la machine : sudo su cp utilities/giphymathooker.service /etc/systemd/system/ vi /etc/systemd/system/giphymathooker.service systemctl daemon-reload systemctl enable giphymathooker.service systemctl start giphymathooker.service Utilisation dans Mattermost Jetez tout d’abord un œil à la documentation Mattermost sur les slash commands. Il faut créer avec un compte administrateur la slash command. Clic sur le nom d’équipe (coin haut gauche), puis « Integrations » et « Slash commands » Créez ensuite votre commande slash en renseignant l’URL de l’installation (par exemple https://giphy.example.org), puis laissez par défaut la méthode POST (cela n’a pas d’importance, GMH est capable de répondre aux deux méthodes). Une fois validé, profitez pour noter le jeton (token) attribué par Mattermost. Retournez dans le fichier de configuration giphy_mat_hooker.conf et renseignez le jeton sus-nommé. Si vous ne le renseignez pas, n’importe quel service sera capable de le solliciter s’il fournit les paramètres de Mattermost. Vous pouvez désormais chercher des gifs sur Giphy avec la commande /gif ma recherche (si vous avez choisi gif comme mot clef pour la commande slash). Un très grand merci à Framasky pour son aide et ces heures de debug passées ensemble ! Vous avez ce tutoriel en grande partie grâce à lui Installation de Wallabag Wallabag est une application de lecture différée : une page web vous intéresse mais vous ne pouvez la lire à l’instant ? Sauvegardez-là dans votre Wallabag pour la lire plus tard (sur navigateur, application mobile, ou liseuse). Framasoft propose une instance de Wallabag nommée bien entendu… Framabag Pour une présentation plus complète et en images, n’hésitez pas à jeter un œil à notre présentation de Wallabag. N’hésitez pas aussi à consulter la documentation officielle de Wallabag, riche en informations ! Deux installations sont possibles : sur un serveur dédié, ou sur un hébergement mutualisé. Cependant, l’installation en mutualisé n’est pas celle que recommandent les développeurs et elle ne sera pas traitée dans ce tutoriel (votre serviteur n’a pas d’hébergement de test compatible). Ils fournissent néanmoins un paquet contenant toutes les dépendances facilitant le déploiement pour ceux qui le souhaitent. Prérequis La machine utilisée pour ce tutoriel est la suivante : Linux Debian Jessie Serveur web Nginx installé PHP 5.5 minimum (des configurations récentes avec PHP 7 fonctionnent aussi) En option, vous pourriez avoir besoin : d’un nom de domaine correctement configuré pour rediriger vers votre serveur d’un serveur mail opérationnel pour confirmer les nouveaux comptes et la double authentification Note : pour installer PHP sur Debian avec Nginx, n’installez pas le paquet php5 qui a pour dépendance Apache2, mais préférez le paquet php5-fpm (qui sera nécessaire pour la communication entre PHP et Nginx). Installation 1 – Préparer la terre Ma chère Maïté, pour préparer la recette du Wallabag, il nous faut quelques ustensiles ! Tout d’abord, nous allons avoir besoin de git pour récupérer les sources, et de curl qui est utilisé en sous-main par Wallabag : sudo apt-get install git curl Wallabag utilise aussi PHP pour fonctionner avec moult modules. Rassurez-vous, la plupart sont fournis par défaut ! Pour ceux qui manqueraient potentiellement : sudo apt-get install php5-curl php5-gd php5-sqlite php5-tidy Pour vérifier que tout ce qu’il faut est installé, un petit php -m vous indiquera quels sont les modules utilisés par PHP (en ligne de commande – ce n’est pas forcément ce qui sera utilisé par le serveur web, mais c’est un moyen simple et rapide de voir si le module est installé). Vous pouvez aussi vérifier que les modules sont activés pour php-fpm, en vérifiant quels sont les modules activés dans /etc/php5/mods-available/. Si vous voyez une ligne du genre extension=tidy.so sans point-virgule devant, c’est activé. Vous devez retrouver ces éléments dans la réponse de php -m : php-session php-ctype php-dom php-hash php-simplexml php-json php-gd php-mbstring php-xml php-tidy php-iconv php-curl php-gettext php-tokenizer Afin de se connecter à une base de données, Wallabag utilise un des modules PDO. Vous aurez donc besoin d’au moins une extension et d’un système de bases de données au choix parmi : pdo_mysql pdo_sqlite pdo_pgsql Pour la suite, nous utiliseront sqlite, qui est plus facile à configurer. Enfin, pour gérer les dépendances PHP et construire l’application, il nous faudra Composer : curl -s http://getcomposer.org/installer | php sudo mv composer.phar /bin/composer sudo chown root:root /bin/composer (respectivement : on récupère l’installeur, on copie dans les exécutables du système et on vérifie que les droits sont bien d’équerre) 2 – Semer Maintenant que tout est prêt, la météo est bonne, rentrons dans le vif du sujet ! On se place dans le répertoire de Nginx (dans notre installation, /var/www/html) et on récupère les sources de Wallabag : cd /var/www/html sudo git clone https://github.com/wallabag/wallabag.git Une fois que tout est téléchargé, on rentre dans le dossier fraîchement créé, et on prépare l’installation avec Composer : cd wallabag SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist Au lancement de la dernière commande ci-dessus, Composer va préparer le package Wallabag pour qu’il soit utilisable, et vous posera des questions sur la configuration à générer. Laissez les options par défaut si vous ne savez pas quoi mettre. Quelques recommandations tout de même : dans le cas de SQLite, bien mettre l’utilisateur database_user comme celui de nginx (ici www-data), sinon il lui sera difficile d’y accéder. il est préférable (mais pas indispensable) de renseigner un serveur mail fonctionnel, car il peut servir pour créer et vérifier les comptes, ainsi que pour la double authentification (twofactor). À titre d’exemple, la configuration utilisée dans le cadre de ce tutoriel : Creating the "app/config/parameters.yml" file Some parameters are missing. Please provide them. database_driver (pdo_sqlite): database_host (127.0.0.1): database_port (null): database_name (symfony): database_user (root): www-data database_password (null): database_path ('%kernel.root_dir%/../data/db/wallabag.sqlite'): database_table_prefix (wallabag_): mailer_transport (smtp): mailer_host (127.0.0.1): mailer_user (null): mailer_password (null): locale (en): fr secret (ovmpmAWXRCabNlMgzlzFXDYmCFfzGv): twofactor_auth (true): false twofactor_sender ([email protected]): fosuser_confirmation (true): from_email ([email protected]): Vous voulez changer un paramètre plus tard ? Tant pis, il faudra tout réinstaller ! Blague à part, ces paramètres peuvent se retrouver dans le dossier d’installation de Wallabag, plus précisément dans le fichier app/config/parameters.yml. Une dernière commande pour finaliser l’installation du package préparé précédemment : php bin/console wallabag:install --env=prod La réponse attendue : Installing Wallabag... Step 1 of 5. Checking system requirements. +-----------------+--------+----------------+ | Checked | Status | Recommendation | +-----------------+--------+----------------+ | PDO Driver | OK! | | | curl_exec | OK! | | | curl_multi_init | OK! | | +-----------------+--------+----------------+ Success! Your system can run Wallabag properly. Step 2 of 5. Setting up database. Creating database and schema, clearing the cache Step 3 of 5. Administration setup. Would you like to create a new admin user (recommended) ? (Y/n)Y Username (default: wallabag) : Password (default: wallabag) : sup3rm0td3p4ssed3r0x0r Email: Step 4 of 5. Config setup. Step 5 of 5. Installing assets. Wallabag has been successfully installed. Just execute `php bin/console server:run --env=prod` for using wallabag: http://localhost:8000 (n’oubliez pas de renseigner – et mémoriser – le compte admin comme demandé dans l’étape 3) Enfin pour finaliser et faire bonne mesure, on s’assure que le dossier wallabag fraîchement préparé appartient bien au même utilisateur que Nginx : sudo chown -R www-data:www-data /var/www/html/wallabag/ Voilà, Wallabag est installé ! Vous pouvez le tester avec un serveur local en lançant php bin/console server:run --env=prod et en allant voir sur http://[ip-de-votre-serveur]:8000 (pour tester uniquement !). 3 – Arroser La plupart d’entre vous voudront sûrement le mettre derrière un serveur web (fortement recommandé si ce n’est pas un simple serveur de test !). Dans notre configuration, il s’agit de Nginx. Les fichiers de configuration des sites se trouvent dans /etc/nginx/sites-available, nous allons donc créer la configuration à cet endroit : cd /etc/nginx/sites-available/ nano wallabag.mydomain.tld Reste à remplir ce fichier : server { server_name default_server; root /var/www/html/wallabag/web; location / { # try to serve file directly, fallback to app.php try_files $uri /app.php$is_args$args; } location ~ ^/app\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; # Prevents URIs that include the front controller. This will 404: # http://domain.tld/app.php/some-path # Remove the internal directive to allow URIs like this internal; } error_log /var/log/nginx/wallabag.error.log; access_log /var/log/nginx/wallabag.access.log; } Notes : Attention ! pour ceux qui ont l’habitude de configurer avec un index.html/php à la racine, ici il faut pointer vers le sous-dossier web et le fichier app.php. Changez le server_name à votre sauce bien sûr, selon les domaines et redirections DNS que vous préférez (nous avons mis ici default_server car notre instance de test n’avait pas besoin de plus) Reste à activer cette configuration et redémarrer Nginx pour qu’il la prenne en compte : cd /etc/nginx/sites-enabled/ sudo ln -s ../sites-available/wallabag sudo systemctl restart nginx Plus qu’à aller sur l’adresse souhaitée (à défaut l’adresse IP du serveur) et vous connecter avec le compte admin précédemment créé. Dans l’état actuel, si vous n’avez pas renseigné de serveur mail, les utilisateurs ne pourront pas créer de compte par eux-mêmes. Deux solutions possibles : intercepter le mail qui ne s’enverra pas dans votre mailqueue (sudo mailq), ou créer vous-même l’utilisateur via l’interface de l’admin : Configuration > Créer un compte 4 – Pailler Bloquer l’inscription spontanée Il n’est pas possible de bloquer l’inscription de nouveaux utilisateurs dans l’écran de login pour l’instant. Le problème est connu des développeurs et sera bientôt intégré. Une solution en attendant est de bloquer l’enregistrement via Nginx en ajoutant dans le fichier : location ^~ /register { deny all; return 403; } Mettre à jour wallabag Il vous suffit de reprendre les dernières sources et de les recompiler avec composer. Reprenez le chapitre « Semer » et procédez à l’installation, en reprenant la base de données existante (faites un backup à minima de votre base de données avant ! Comme on dit de l’autre côté de la Manche, Better safe than sorry ). Installation de Loomio Loomio est le logiciel de prise de décision collective que nous proposons comme service en ligne sur Framavox. Voici un tutoriel pour vous aider à l’installer sur votre serveur. Il s’appuie sur la procédure officielle. N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile Informations Dans la suite de ce tutoriel, les instructions seront données pour un serveur dédié sous Ubuntu 14.04 en utilisant Docker. Installation 1 – Préparer la terre DNS Tout d’abord, faites pointer votre-domaine.org sur votre serveur auprès de votre registraire ainsi que le sous-domaine faye.votre-domaine.org (il s’agit du service qui tourne en arrière-plan pour envoyer les mails et notifications aux utilisateurs). Voici par exemple ce que nous avons mis pour framavox.org dans notre zone DNS : @ 3600 IN A 46.4.207.243 faye 3600 IN CNAME framavox.org. @ 10800 IN MX 2 framavox.org. Docker Ensuite, connectez-vous en tant que root sur votre serveur, installez Docker et Docker Compose. wget -q https://get.docker.com/ -O install-docker.sh # Vérifiez le contenu du script pour vous assurer qu'il ne fait pas de bêtises sur votre système sh install-docker.sh wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.6.2/dock er-compose-`uname -s`-`uname -m` chmod +x /usr/local/bin/docker-compose 2 – Semer Depuis le dossier /root, téléchargez les fichiers du dépôt officiel pour un déploiement en production. cd /root git clone https://github.com/loomio/loomio-deploy.git cd loomio-deploy Toutes les instructions suivantes s’effectueront depuis le dossier /root/loomio-deploy. Swap (facultatif) Si votre serveur dispose de moins de 4GB de RAM, il est recommandé de créer un fichier de swap. ./scripts/create_swapfile Configuration Créez ensuite les fichiers de configuration de Loomio. ./scripts/create_env votre-domaine.org [email protected] Le script crée 2 fichiers env et faye_env qui seront utilisés pour configurer les différents containers Docker : nginx, le serveur web letsencrypt, pour créer automatiquement les certificats SSL et disposer d’un site en https loomio, la partie visible par les navigateurs web worker, faye et mailin qui traitent en arrière-plan les requêtes pour l’envoi des courriels, des notifications et autres interactions db, le serveur de base de données (PostgreSQL) Courriels Modifiez le fichier env pour configurer l’envoi des courriels avec un serveur SMTP. SMTP_DOMAIN=votre-domaine.org SMTP_SERVER=serveur.mail.org SMTP_PORT=587 [email protected] SMTP_PASSWORD=votre-mot-de-passe Les messages seront envoyés avec l’adresse [email protected]. Pour permettre la bonne transmission des mails lorsque les utilisateurs répondent à un courriel de notification, nous avons dû adapter la configuration du container mailin dans docker-compose.yml. mailin: image: loomio/mailin-docker ports: - "25:25" links: - loomio environment: - WEBHOOK_URL=https://votre-domaine.org/email_processor/ NB Si vous avez déjà un logiciel de mail sur votre serveur, il n’aimera pas être dépossédé du port 25. Vous pouvez le couper (service exim4 stop) et le désactiver (update-rc.d exim4 disable) ou le faire écouter sur un autre port (/etc/default/exim4). Tâches planifiées Pour prévenir les utilisateurs de la fermeture imminente d’une proposition, la clôturer ou encore envoyer un courriel récapitulatif de l’activité de la veille, Loomio doit exécuter certains processus périodiquement. Pour cela, copiez le fichier crontab dans /etc/cron.d mv ./crontab /etc/cron.d/loomio Service Pour disposer d’une commande d’arrêt/relance de Loomio ou pour qu’il reste actif après un redémarrage du serveur, vous pouvez créer un fichier /etc/init.d/loomio (à rendre exécutable) contenant ceci : #! /bin/sh ### BEGIN INIT INFO # Provides: # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: ### END INIT INFO loomio $remote_fs $syslog $remote_fs $syslog 2 3 4 5 Loomio dockers services set -e umask 022 . /lib/lsb/init-functions case "$1" in start) cd /root/loomio-deploy/ /usr/local/bin/docker-compose start log_end_msg 0 || true ;; stop) cd /root/loomio-deploy/ /usr/local/bin/docker-compose stop log_end_msg 0 || true ;; logs) cd /root/loomio-deploy/ /usr/local/bin/docker-compose logs log_end_msg 0 || true ;; restart) cd /root/loomio-deploy/ /usr/local/bin/docker-compose restart ;; *) log_action_msg "Usage: {start|stop|restart|logs}" || true exit 1 esac /etc/init.d/ssh exit 0 [Bugfix] Avatar des utilisateurs/groupes Dans docker-compose.yml, la ligne - ./attachments:/loomio/public/system/attachments sert à conserver les fichiers joints aux discussions hors du container pour éviter de les perdre à chaque mise à jour. Nous l’avons remplacé sur notre instance par - ./uploads:/loomio/public/system/ pour conserver également les avatars uploadés qui se trouvent dans /loomio/public/system/users et /loomio/public/system/groups. 3 – Arroser PostgreSQL Il faut maintenant créer la base de données. docker-compose run loomio rake db:setup Loomio La base de données est prête, vous pouvez démarrer Loomio. docker-compose up -d La commande se charge de lancer tous les containers nécessaires. Pour pouvez vérifier leur statut en lançant la commande docker-compose logs ou service loomio logs Tests Voici une liste de tâches à effectuer pour s’assurer que tout fonctionne bien : Créez un compte et un groupe puis déconnectez-vous. Demandez une réinitialisation de mot de passe et vérifiez que vous recevez bien le courriel. Ouvrez une page de discussion dans 2 onglets et saisissez un commentaire dans l’un. Le commentaire devrait apparaître dynamiquement sur l’autre onglet. Uploadez un fichier à une discussion et un avatar personnalisé à votre compte ou à un groupe. Vérifiez que vous pouvez répondre à une discussion par courriel. Créée une proposition avec une date de clôture proche pour vérifier qu’elle se ferme automatiquement dans l’heure. 4 – Pailler Personnalisation À ce stade, si tout s’est bien passé, lorsque vous consultez le site votre-domaine.org, vous devriez être redirigé vers la page votre-domaine.org/marketing. Il s’agit de la page de présentation propre au site loomio.org, vous pourriez vouloir en modifier le contenu. Apparemment, les développeurs de Loomio ont enlevé le plugin loomio_org du container depuis la rédaction de ce tutoriel. La page d’accueil est maintenant la page de connexion, ça ne change pas grand chose pour sur la méthode pour personnaliser le logiciel mais si vous voulez quand même utiliser la page « marketing », lisez ce commentaire. Pour cela vous pouvez vous inspirer de ce que nous avons fait pour Framavox. Nous avons créé un dossier framavox/template dans lequel se trouvent les fichiers à remplacer dans le container et nous avons modifié le fichier docker-compose.yml en fonction. volumes: ./framavox/template/angular.html.haml:/loomio/app/views/layout s/angular.html.haml ./framavox/template/application.html.haml:/loomio/app/views/la youts/application.html.haml ./framavox/template/marketing.html.haml:/loomio/plugins/loomio _org_plugin/views/pages/marketing.html.haml ./framavox/template/_metadata.html.haml:/loomio/app/views/angu lar/_metadata.html.haml ./framavox/template/_social_metadata.html.haml:/loomio/app/vie ws/application/_social_metadata.html.haml Même chose avec les fichiers de traduction qui étaient incomplets. ./framavox/locales/client.fr.yml:/loomio/config/locales/client .fr.yml - ./framavox/locales/fr.yml:/loomio/config/locales/fr.yml ./framavox/locales/server.fr.yml:/loomio/config/locales/server .fr.yml L’essentiel de l’interface de Loomio se trouve dans /loomio/app/views/ ou dans le plugin loomio.org (il s’agit d’un dépôt à part dont le contenu est placé dans /loomio/plugins/). Le reste se trouve dans les fichiers de langue. Avant d’effectuer des modifications au fichier docker- compose.yml ou au fichier env, pensez à supprimer proprement les containers docker-compose down et les redémarrer ensuite docker-compose up -d Quelques commandes utiles docker exec -it loomiodeploy_loomio_1 /bin/bash pour entrer dans le container loomio en cours d’utilisation (pour voir précisément où se trouvent les fichiers à modifier par exemple) docker restart loomiodeploy_container_1 redémarre un container (pour vérifier les changements dans un fichier de template par exemple sans devoir tout redémarrer) docker ps -a affiche la liste de tous les containers présent sur la machine docker stop loomiodeploy_container_1 arrête un container docker rm loomiodeploy_container_1 le supprime docker-compose pull pour mettre à jour tous les containers (après un docker-compose down) Installation de uMap Attention La peinture est fraîche, cette page est amenée à évoluer. Si vous avez besoin de plus de détails, la documentation officielle (en anglais) se trouve sur le dépôt de uMap. uMap est le logiciel de personnalisation de cartes géographiques que nous proposons sur Framacarte en partenariat avec OpenStreetMap France. Voici un tutoriel pour vous aider à l’installer sur votre serveur. N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile Informations Dans la suite de ce tutoriel, les instructions seront données pour un serveur dédié sous Debian Jessie avec une base de données PostgreSQL et un serveur web NginX. Nous supposerons que vous avez déjà fait pointer votre nom de domaine sur votre serveur auprès de votre registraire. Prérequis Python 3.4, PostgreSQL, PostGIS, Git Pour faire fonctionner uMap, il est nécessaire d’installer Python 3.4, PostgreSQL 9.4, PostGIS et quelques dépendances. Sur Debian : apt-get install postgresql postgresql-server-dev-9.4 postgis python-pip git python-virtualenv virtualenvwrapper python3-dev python3-setuptools libtiff5-dev libjpeg62-turbo-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk python3.4-dev python-dev apt-get build-dep python-imaging Installation 1 – Préparer la terre Tout d’abord, connectez-vous en tant que root sur votre serveur et créez un compte utilisateur umap ainsi que son dossier /home/umap dans lequel seront copiés les fichiers avec les droits d’accès correspondants. useradd -N umap -m usermod -s /bin/bash umap 2 – Semer Connectez-vous avec l’utilisateur umap : su umap Téléchargez le dépôt git officiel dans /home/umap/src un dossier cd /home/umap git clone https://github.com/umap-project/umap src Créez un environnement virtuel Python : mkvirtualenv umap --python=`which python3.4` source .virtualenvs/umap/bin/activate Installez les librairies requises : cd src pip install django-appconf pip install -r requirements.txt 3 – Arroser PostgreSQL Il faut maintenant créer la base de données et configurer uMap. Ajoutez tout d’abord un utilisateur umap et sa base de données associée dans PostgreSQL : sudo -u postgres createuser umap sudo -u postgres createdb umap -O umap Puis crée l’extension PostGis sudo -u postgres psql umap CREATE EXTENSION postgis; (\q pour sortir de psql) uMap Maintenant que la base de données est prête, il faut configurer uMap. Éditez le fichier umap/settings/local.py sur le modèle du fichier local.py.sample : cp umap/settings/local.py.sample umap/settings/local.py nano umap/settings/local.py Dans ce fichier, il est important de définir les paramètres : SECRET_KEY : une longue chaîne de caractères aléatoires DEBUG = False ADMINS avec vos identifiants et adresse email SOCIAL_AUTH_OPENSTREETMAP_KEY, SOCIAL_AUTH_OPENSTREETMAP_SECRET et AUTHENTICATION_BACKENDS si vous voulez proposer à vos utilisateurs d’avoir un compte pour gérer leurs cartes (nous recommandons OpenStreetMap ici mais vous pouvez aussi utiliser Twitter, Github ou Bitbucket) UMAP_DEMO_SITE = False SITE_URL = "https://votre-site.org" SHORT_SITE_URL = "https://votre-site.org" (vous pouvez utiliser un nom de domaine plus court s’il est configuré comme un alias du nom de domaine principal) MAPQUEST_KEY pour permettre la recherche de lieu Clé OpenStreetMap et MapQuest Pour obtenir les clés OpenStreetMap, il faut que vous ayez enregistré un compte sur openstreetmap.org. Dans « Mes options », « paramètres OAuth » ajoutez une « application cliente ». Pour obtenir la clé MapQuest, même chose : rendez-vous sur developer.mapquest.com et remplissez le formulaire pour obtenir votre clé d’API. Le principe est quasiment le même pour Twitter, Github et Bitbucket. Il reste maintenant à remplir la base de données, importer en cache les fichiers statiques, créer le compte administrateur d’uMap. python manage.py migrate python manage.py collectstatic python manage.py createsuperuser 4 – Pailler À ce stade, si tout s’est bien passé, lorsque vous exécutez cette commande : python manage.py runserver 0.0.0.0:8019 uMap est fonctionnel. La page d’accueil sur l’URL http://ip_de_votre_serveur:8019/ tourne mais il ne sera pas encore possible de créer des cartes tant qu’on aura pas ajouté des fonds de carte. Fonds de carte Pour cela, connectez-vous avez le compte admin précédemment créé sur http://ip_de_votre_serveur:8019/admin et cliquez sur « Tile layers → Ajouter ». Voici ci-dessous la liste des fonds de carte présents sur Framacarte : Fonds de carte de Framacarte Nom URL Attribution Map tiles by CartoDB, under Positron https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png CC BY 3.0. Data by OpenStreetMap, under ODbL. Nom URL Attribution Map tiles by CartoDB, under Dark Matter https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png CC BY 3.0. Data by OpenStreetMap, under ODbL. “OpenCycleMap” OpenCycleMap Outdoors https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png and “OpenStreetMap contributors” Tiles © Gravitystorm / map data OpenStreetMap Processus silencieux – UWSGI Pour lancer uMap en tant que service afin d’éviter devoir garer un terminal ouvert en permanence, on utilise uswgi. Installez uwsgi apt-get install uwsgi. Dans le dossier /home/umap créer un contenant : fichier [uwsgi] uid = umap gid = users # Django-related settings # the base directory (full path) chdir = /home/umap/src # Django's wsgi file module = umap.wsgi # the virtualenv (full path) home = /home/umap/.virtualenvs/umap # process-related settings # master master = true # maximum number of worker processes processes = 8 # the socket (use the full path to be safe socket = /home/umap/umap.sock # ... with appropriate permissions - may be needed chmod-socket = 666 # clear environment on exit vacuum = true uswgi.ini plugins = python3 Ainsi qu’un fichier uwsgi_params (utilisé par Nginx) : uwsgi_param uwsgi_param uwsgi_param uwsgi_param QUERY_STRING REQUEST_METHOD CONTENT_TYPE CONTENT_LENGTH $query_string; $request_method; $content_type; $content_length; uwsgi_param uwsgi_param uwsgi_param uwsgi_param uwsgi_param uwsgi_param REQUEST_URI PATH_INFO DOCUMENT_ROOT SERVER_PROTOCOL REQUEST_SCHEME HTTPS $request_uri; $document_uri; $document_root; $server_protocol; $scheme; $https if_not_empty; uwsgi_param uwsgi_param uwsgi_param uwsgi_param REMOTE_ADDR REMOTE_PORT SERVER_PORT SERVER_NAME $remote_addr; $remote_port; $server_port; $server_name; et créer un lien symbolique pour activer « l’application » dans UWSGI sudo ln -s /home/umap/uwsgi.ini enabled/umap.ini service uwsgi restart /etc/uwsgi/apps- Pour lancer uMap, il suffira maintenant de taper service uwsgi start umap Nginx Nous allons maintenant configurer uMap pour le rendre accessible depuis un nom de domaine avec Nginx. Installez nginx apt-get install nginx. Dans le dossier /etc/sites-available, en tant que root, créez un fichier votre-site.org.vhost s’il n’existe pas déjà contenant : # the upstream component nginx needs to connect to upstream umap { server unix:///home/umap/umap.sock; } proxy_cache_path /tmp/nginx_ajax_proxy_cache keys_zone=ajax_proxy:10m inactive=60m; proxy_cache_key "$args"; # configuration of the server server { # the port your site will be served on listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; # the domain name it will serve for server_name votre-site.org www.votre-site.org; charset utf-8; levels=1:2 # https redirection if ($scheme = http) { return 301 https://votre-site.org$request_uri; } if ($host = www.votre-site.org) { return 301 https://votre-site.org$request_uri; } # SSL conf ssl_certificate /etc/ssl/private/votresite.org.chained.pem; ssl_certificate_key /etc/ssl/private/votre-site.org.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:5m; ssl_dhparam /etc/ssl/private/dh2048.pem; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive ssl_ciphers 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EEC DH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128 :+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEE D:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128SHA'; # OCSP conf ssl_stapling on; ssl_stapling_verify on; resolver_timeout 5s; resolver 80.67.188.188 valid=300s; [2001:913::8] 80.67.169.12 # STS conf add_header Strict-Transport-Security max-age=15768000; # six months # max upload size client_max_body_size 25M; # adjust to taste # Django media location /uploads/ { alias /home/umap/.virtualenvs/umap/var/uploads/; expires 30d; } location /static/ { alias /home/umap/.virtualenvs/umap/var/static/; } # X-Accel-Redirect location /internal/ { gzip off; add_header Content-Encoding gzip; internal; alias /home/umap/.virtualenvs/umap/var/uploads/; } location /ajax-proxy/ { valid_referers server_names; if ($invalid_referer) { return 404; } if ($args !~ ^url=(.*)$) { return 404; } if ($args ~ ^url=(.*)$) { set $target $1; } add_header X-Proxy-Cache $upstream_cache_status; proxy_pass $target; proxy_cache ajax_proxy; proxy_cache_valid 3m; } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass umap; include /home/umap/uwsgi_params; } } Copiez votre clé et votre certificat SSL (votre-site.org.key et votre-site.org.chained.pem) pour l’utilisation du https dans le dossier /etc/ssl/private/. Créez un lien symbolique pour activer le site et enfin, relancez Nginx : sudo ln -s /etc/nginx/sites-available/votre-site.org /etc/nginx/sites-enabled/votre-site.org service nginx restart Installation de Framadate Framadate est le logiciel de création de sondages que nous développons et proposons comme service en ligne. Il est initialement basé sur le logiciel Studs développé par l’université de Strasbourg et que nous avons largement remanié. Voici un tutoriel pour vous aider à l’installer sur votre serveur. N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile Informations Dans la suite de ce tutoriel, les instructions seront données pour un serveur dédié sous Debian Wheezy avec une base de données MySQL, un serveur web Apache (ou NginX), PHP 5.4 (minimum), Postfix (ou Exim ; pour l’envoi des courriels) et Git d’installés. Nous supposerons que vous avez déjà fait pointer votre nom de domaine sur votre serveur auprès de votre registraire. Installation 1 – Préparer la terre Tout d’abord, connectez-vous en tant que root sur votre serveur et créez un compte utilisateur framadate ainsi que le dossier /var/www/framadate dans lequel seront copiés les fichiers avec les droits d’accès correspondants. useradd framadate groupadd framadate mkdir /var/www/framadate chown framadate:framadate -R /var/www/framadate 2 – Semer Connectez-vous avec l’utilisateur framadate : su framadate -s /bin/bash Puis, téléchargez les fichiers de notre dépôt avec Git depuis le dossier /var/www/framadate et basculez sur la dernière version stable (dans l’exemple 0.9.3). cd /var/www/framadate git clone https://git.framasoft.org/framasoft/framadate.git . git checkout 0.9.3 Installez également l’extension php intl : sudo apt-get install php5-intl Framadate s’appuie sur le logiciel Composer pour importer les librairies dont il dépend. Pour l’installer, lancez la commande php -r "readfile('https://getcomposer.org/installer');" | php et importez les librairies nécessaires ./composer.phar install ./composer.phar update 3 – Arroser MySQL Il faut maintenant créer la base de données et configurer Framadate. Installez tout d’abord le paquet mysql-server (notez le mot de passe root) et démarrez MySQL : service mysql start Créez un utilisateur et une base de données framadate. Sur votre serveur dédié vous pouvez utiliser PhpMyAdmin qui est souvent pré-installé, sinon voici comment faire avec Adminer. Téléchargez Adminer en ligne de commande (toujours depuis le dossier /var/www/framadate). wget -O adminer.php http://www.adminer.org/latest-mysql.php Connectez-vous avec le compte root MySQL sur votre-nom-dedomaine.org/adminer.php et cliquez sur « Créer une base de données ». Remplissez le nom de la base de données et le type d’encodage, ici framadate – latin_swedish_ci. Une fois créée, cliquez sur « Privilèges » et « Créer un utilisateur ». Remplissez les champs Serveur localhost, Utilisateur framadate, Mot de passe, Privilèges `framadate`.* et cochez la case All privileges. Par sécurité, vous pouvez supprimer le fichier adminer.php qui n’est plus nécessaire. Framadate Maintenant que la base de données est prête, il faut configurer Framadate pour pouvoir s’en servir. Rendez-vous ensuite sur la page votre-nom-dedomaine.org/admin/install.php. Et remplissez le formulaire avec comme chaîne de connexion mysql:host=localhost;dbname=framadate;port=3306, l’utilisateur framadate et le mot de passe tel que vous l’avez défini à l’étape précédente. Si la page ne s’affiche pas, vérifiez qu’un dossier `/var/www/framadate/tpl_c` a bien été créé avec des droits en écriture suffisant. À l’installation, les tables de la base de données et le fichier app/inc/config.php sont créés. Le fichier app/inc/config.php contient d’autres paramètres configuration facultatifs que vous pouvez modifier. de Vous êtes ensuite redirigé vers la page de « migration » qui sert à contrôler que les tables et données sont dans le bon format. Pour les mises à jour ultérieures, il faudra passer par cette page après remplacement des fichiers. Espace admin Framadate dispose d’un espace d’administration de l’ensemble des sondages dans le dossier /admin Pour en restreindre l’accès, il faut ajouter au fichier de configuration Apache de votre site web (fichier /etc/apache2/sites-enabled/votre-domaine.vhost) ce bloc : <Directory "/var/www/framadate/admin/"> AuthType Basic AuthName "Administration" AuthUserFile "/var/www/framadate/admin/.htpasswd" Require valid-user Order allow,deny Allow from all </Directory> et créer le fichier .htpasswd contenant l’utilisateur et le mot de passe autorisé. htpasswd -bc /var/www/framadate/admin/.htpasswd utilisateur mot-de-passe (l’utilitaire htpasswd se trouve dans le paquet apache2-utils) Pour protéger les fichiers .htaccess et .htpasswd, pensez à ajouter également ceci : <FilesMatch "^\.ht.*"> deny from all satisfy all ErrorDocument 403 "Accès refusé." </FilesMatch> Réécriture d’URL Pour activer la réécriture d’URL afin d’avoir des liens sous la forme http://votre-domaine.org/a1b2c3d4e5f6g7h8 au lieu de http://votre-domaine.org/studs.php?sondage=a1b2c3d4e5f6g7h8. Il faut ajouter une ligne AllowOverride All dans le fichier .vhost pour autoriser l’utilisation des .htaccess sur votre domaine et renommer le fichier /var/www/framadate/htaccess.txt en /var/www/framadate/.htaccess Et voilà ! Normalement, ça pousse tout seul Informations En complément, voici un tutoriel pour installer Framadate sur Ubuntu 14.04 de Patrick Harmel, sous licence GFDL. Installation de LUFI Attention La peinture est fraîche, cette page est amenée à évoluer rapidement. Lufi s’installe de la même manière que Lutim. Si vous avez besoin de plus de détail la documentation officielle (en anglais) se trouve sur le dépôt de Lufi. Lufi est le logiciel d’hébergement de fichier que nous proposons sur Framadrop. Voici un tutoriel pour vous aider à l’installer sur votre serveur. N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile Informations Dans la suite de ce tutoriel, nous supposerons que vous avez déjà fait pointer votre nom de domaine sur votre serveur auprès de votre registraire et que vous disposez d’un serveur dédié sous Debian. Prérequis Lufi est codé en Perl, pour le faire fonctionner il est nécessaire d’installer Carton, un gestionnaire de modules Perl. cpan Carton Installation 1 – Préparer la terre Tout d’abord, connectez-vous en tant que root sur votre serveur et créez un compte utilisateur lufi ainsi que le dossier /var/www/lufi dans lequel seront copiés les fichiers avec les droits d’accès correspondants. useradd lufi groupadd lufi mkdir /var/www/lufi chown -R lufi:lufi /var/www/lufi 2 – Semer Téléchargez les fichiers de la dernière version sur le dépôt officiel (« Download zip » en bas à droite ou bien en ligne de commande avec git), copiez son contenu dans le dossier /var/www/lufi et attribuez les droits des fichiers à l’utilisateur lufi cd /var/www/ git clone https://git.framasoft.org/luc/lufi.git chown lufi:lufi -R /var/www/lufi Connectez-vous avec l’utilisateur lufi : su lufi -s /bin/bash et lancez la commande d’installation des dépendances depuis le dossier /var/www/lufi cd /var/www/lufi su lufi -s /bin/bash carton install Maintenant que tout est prêt, modifiez le fichier de configuration de Lufi lufi.conf avec votre éditeur de texte préféré sur le modèle du fichier lufi.conf.template. Par défaut le logiciel est configuré pour écouter sur le port 8080 de l’adresse 127.0.0.1 (localhost). cp lufi.conf.template lufi.conf vi lufi.conf</pre> L’ensemble des paramètres sont facultatifs à l’exception du paramètre contact (pensez bien à le configurer et à le décommenter). Si vous utilisez Lufi derrière un serveur web comme Nginx (comme dans ce tutoriel), décommenter le paramètre proxy => 1,. pensez bien à Lufi en tant que service À présent, le serveur tournera lorsque qu’on lancera en tant que root cette commande : carton exec hypnotoad script/lufi Pour éviter de devoir relancer le serveur à la main à chaque redémarrage du serveur, on va donc lancer Lufi sous forme de service. Pour InitV Il faut pour ça copier le script utilities/lufi.init dans le fichier /etc/init.d/lufi, le rendre exécutable puis copier le fichier utilities/lufi.default dans /etc/default/lufi. cp utilities/lufi.init /etc/init.d/lufi cp utilities/lufi.default /etc/default/lufi Il faut maintenant modifier /etc/default/lufi pour y mettre le chemin d’installation de notre Lufi (/var/www/lufi si vous n’avez pas changé le chemin préconisé par ce tutoriel) vi /etc/default/lufi chmod +x /etc/init.d/lufi chown root:root /etc/init.d/lufi /etc/default/lufi Pour Systemd cp utilities/lufi.service /etc/systemd/system Modifiez ce fichier pour qu’il corresponde à votre installation (utilisateur, chemin d’installation…) vi /etc/systemd/system/lufi.service Faites en sorte que Systemd le prenne en compte systemctl daemon-reload Et qu’il le lance à chaque démarrage systemctl enable lufi.service 4 – Pailler À ce stade, si tout s’est bien passé, lorsque vous exécutez la commande service lufi start, Lufi est pleinement fonctionnel. Vous n’avez qu’à vous rendre sur l’URL http://127.0.0.1:8080 pour pouvoir l’utiliser. Nous allons maintenant configurer Lufi pour le rendre accessible depuis un nom de domaine avec Nginx (vous pouvez également utiliser Apache ou Varnish puisque seule la fonctionnalité de proxy inverse nous intéresse). Nginx Installez le paquet : apt-get install nginx Créez le fichier de configuration de votre domaine /etc/nginx/sites-available/votre-nom-de-domaine pour y mettre ceci (en remplaçant « votre-nom-de-domaine ») et le port 8080 si vous l’avez changé dans la configuration de Lufi : server { listen 80; server_name votre-nom-de-domaine; access_log /var/log/nginx/lufi.success.log; error_log /var/log/nginx/lufi.error.log; location / { # Add cache for static files if ($request_uri ~* ^/(img|css|font|js)/) { add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT"; add_header Cache-Control "public, maxage=315360000"; } # HTTPS only header, improves security #add_header Strict-Transport-Security "maxage=15768000"; # Adapt this to your configuration proxy_pass http://127.0.0.1:8080; # Really important! Lufi uses WebSocket, it won't work without this proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # If you want to log the remote port of the file senders, you'll need that proxy_set_header X-Remote-Port $remote_port; proxy_set_header X-Forwarded-Proto $scheme; # We expect the downstream servers to redirect to the right hostname, so don't do any rewrites here. proxy_redirect off; } } Activez votre fichier : ln -s /etc/nginx/sites-available/votre-nom-de-domaine /etc/nginx/sites-enabled/votre-nom-de-domaine Enfin, relancez nginx : service restart nginx 5 – Tailler et désherber Pour personnaliser votre instance de Lufi, il faut lancer la commande carton exec script/lufi theme votre-theme, ce qui créera un nouveau dossier themes/votre-theme. Il contiendra un fichier Makefile, un fichier lib/Lufi/I18N.pm ainsi que des dossiers vides pour vous montrer le « squelette » d’un thème. Ensuite il ne vous reste plus qu’à copier les fichiers du thème default dans votre dossier de thème et à les adapter à votre gré. Vous pouvez ainsi modifier les fichiers css, images, javascript (dossier public), les modèles de pages (dossier templates) et même la traduction en conservant un thème propre sur lequel basculer en cas de problème. Le cas de la modification des traductions est un peu particulier : si vous souhaitez ajouter des chaînes de caractères traduites dans votre thème, ajoutez-les dans les fichiers du dossier templates en prenant exemple sur le thème par défaut (<%= l('Ceci est une chaîne traduite') %>) puis exécutez make locales depuis votre dossier de thème (themes/votre-theme, pas depuis le dossier d’installation de Lufi). Il vous restera alors à ajouter la traduction dans les fichiers présents dans themes/votre-theme/lib/Lufi/I18N/. si vous souhaitez modifier une traduction, repérez la chaîne dans les fichiers de themes/default/lib/Lufi/I18N/, puis recopiez les lignes commençant par msgid et msgstr qui s’y rapportent (ne copiez surtout pas les commentaires qui s’y rapportent). Enfin, modifiez la traduction (le contenu de msgstr) dans vos fichiers. Modifiez ensuite le fichier lufi.conf pour préciser quel thème vous utilisez. Pour pouvoir personnaliser et observer vos modifications en direct, il vous faudra stopper temporairement le service service lufi stop et le démarrer avec la commande : carton exec morbo script/lufi --listen=http://127.0.0.1:8080 Installation de Kanboard Kanboard est le logiciel de gestion de projets que nous proposons sur framaboard.org. Voici un tutoriel pour l’installer sur votre serveur. N’hésitez pas à poser vos questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile :). Nous considérerons dans la suite de ce tutoriel que vous disposez d’un serveur sous Debian 8 (Jessie) avec les logiciels Apache et PHP (5.3.3 minimum) installés. Si vous vous trouvez dans une autre configuration, n’hésitez pas à jeter un coup d’œil à la documentation officielle qui est très bien faite (mais en anglais). Nous supposerons que vous avez déjà fait pointer votre nom de domaine sur votre serveur auprès de votre registraire. Pré-requis Vous devez d’abord installer les paquets requis par Kanboard pour fonctionner correctement (ou vous assurer qu’ils le sont) : $ apt-get install -y php5-sqlite php5-gd unzip Installation 1 – Semer Téléchargez la dernière version de Kanboard sur kanboard.net/downloads (le lien « Stable version »). Décompressez l’archive et uploadez les fichiers sur votre serveur web. Vous n’avez plus qu’à vous rendre sur http://votre-site.org/kanboard/. Les identifiants par défaut sont admin et admin. Pour fonctionner, vous devez vous assurer que le répertoire kanboard/data est accessible en écriture par le serveur web. 2 – Tailler et désherber Par défaut, les identifiants sont admin / admin : il n’est pas recommandé de les laisser tels quels ! Une fois connecté, rendez-vous dans « Gestion des utilisateurs > admin > Changer le mot de passe ». Vous pouvez aussi changer le nom d’utilisateur en allant sur « Modifier le profil ». Vous pouvez désormais commencer à utiliser Kanboard ! Installation de Owncloud Framadrive est le service de stockage de fichiers proposé par Framasoft basé sur le logiciel Owncloud. Comme nous sommes (un peu) en retard, nous n’avons pas encore fini la documentation spécifique à la mise en place de Framadrive. Cependant, sachez qu’il s’agit à très peu de choses près d’une installation standard d’Owncloud. Vous trouverez donc ci-dessous : Le manuel officiel d’installation d’Owncloud anglais) Des tutoriels d’installation en français Ubuntu-fr IT-Connect (en