PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

PostBlue : Debian Jessie sur un Kimsufi KS-2A

mardi 15 mars 2016 à 21:06

Petite marche à suivre à peu près généraliste pour configurer un serveur dédié Kimsufi.

Installation

Le schéma d’installation que j’ai utilisé diverge de celui par défaut pour Debian Jessie proposé par OVH.

Est configuré par défaut dans le template d’installation Debian 8.3 stable (Jessie) :

Inconvénients pour un serveur web comme le mien :

Donc, pour installer à ma façon :

Considérations d’installation

Première connexion

Après l’installation de la distribution, OVH envoie un mail contenant le code du compte root permettant de se connecter au serveur. On va donc s’y connecter en forçant la demande de mot de passe (puisqu’il n’y a pas encore de clé SSH forgée est installée).

ssh root@ip.du.serveur -o PreferredAuthentications=password

Une fois connecté, je conseille de changer au plus vite le mot de passe du compte root :

passwd

Entrez le mot de passe actuel une première fois, puis entrez-en un nouveau par deux fois. Voilà, il ne devrait plus exister de copie de votre mot de passe root.

Pour désactiver complètement le login du compte root (après avoir créé un nouvel utilisateur appartenant au groupe sudo) :

sudo passwd -dl root

Pour continuer, mettre à jour des dépôts.

apt update

systemd

Utiliser les différents services de systemd renvoie l’erreur suivante :

Failed to create bus connection

Pour corriger, il suffit d’installer le paquet dbus manquant.

apt install dbus

NTP

Maintenant que systemd est réparé, on peut l’utiliser comme service de synchronisation du temps de la machine au lieu d’installer un second paquet pour NTP.

timedatectl set-ntp 1

Hostname

Le nom d’hôte (hostname) inscrit dans le fichier /etc/hostname est un nom de domaine hostname.ip-x-y-z.eu. Pour n’avoir que le nom court :

hostnamectl set-hostname $(hostname -a)

Puis éditer /etc/hosts pour remplacer hostname.ip-x-y-z.eu avec hostname.sondomaine.tld tel que défini dans sa zone DNS (sinon, le faire, j’utilise celle de Gandi).

Pour plus d’informations sur le renommage de la machine, voir le Debian Wiki HowTo/ChangeHostname.

Firewall et Fail2ban

Pas envie de m’emmerder à maintenir un pare-feu complexe, je teste UFW (Uncomplicated Firewall).

apt install ufw
ufw allow SSH # ouvre le port 22
ufw allow ’Nginx Full’ # ouvre les ports 80 et 443
ufw enable # active ufw

Si vous voulez utiliser fail2ban pour prévenir des attaques par force brute, il est possible de le faire utiliser directement ufw plutôt qu’iptables.

apt install fail2ban

Pour configurer la bête, créer un fichier /etc/fail2ban/jail.local : chargé après le fichier de configuration principal /etc/fail2ban/jail.conf, les valeurs qu’il contient écrasent celles contenues dans le premier, inutile donc de copier intégralement le contenu du fichier de configuration (comme j’ai pu le voir par-ci par-là). Y changer l’adresse à laquelle les notifications sont envoyées, et configurer le programme pour utiliser ufw :

[DEFAULT]
destemail = mail@domaine.truc
banaction = ufw

Yapyt

Yapyt est clone de yaourt (commande Arch Linux) développé par Thuban pour Debian. Très utile pour nettoyer son système et supprimer les résidus d’applications désinstallées.

wget http://git.yeuxdelibad.net/coolrepo/plain/yapyt/yapyt.py -O /usr/local/bin/yapyt
chmod +x /usr/local/bin/yapyt

Pour le nettoyage, yapyt nécessite deborphan et aptitude :

apt install aptitude deborphan

Certificats

Installer le client Let’s Encrypt disponible dans le dépôt jessie-backports activé par défaut dans le source.list déployé par OVH (qui utilise les miroirs d’OVH également), mais aussi les certificats racine de CACert qui sont à nouveau disponible dans un paquet séparé.

apt -t jessie-backports install letsencrypt ca-cacert

Dotdeb

Dotdeb is an extra repository providing up-to-date packages for your Debian servers : Nginx ; PHP 7.0, 5.6, 5.5, 5.4 (obsolete) and 5.3 (obsolete) ; useful PHP extensions : apcu, imagick, mongo, Pinba, xcache, Xdebug, XHprof… ; MySQL 5.5 and 5.6 ; Zabbix ; etc.

Installer la clé du dépôt :

wget https://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -

Dans /etc/apt/source.list.d/dotdeb.list :

deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

Mettre à jour les dépôts :

apt update

Installer le serveur web :

apt install nginx-extras php5-fpm

MariaDB

MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, Facebook and Google.

Installer la clé du dépôt :

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Dans /etc/apt/source.list.d/mariadb.list :

deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
deb-src http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main

Mettre à jour les dépôts :

apt update

Installer :

apt install mariadb-server

Prosody

Prosody is a modern XMPP communication server. It aims to be easy to set up and configure, and efficient with system resources. Additionally, for developers it aims to be easy to extend and give a flexible system on which to rapidly develop added functionality, or prototype new protocols.

Installer la clé du dépôt :

wget https://prosody.im/files/prosody-debian-packages.key -O- | apt-key add -

Dans /etc/apt/source.list.d/prosody.list :

deb http://packages.prosody.im/debian jessie main

Mettre à jour les dépôts :

apt update

Installer Prosody et ses dépendances optionnelles :

apt install prosody-trunk lua-event lua-zlib lua-dbi-sqlite3 lua-bitop

Je renvoie à mon article Prosody sur Debian Wheezy/Jessie pour plus d’informations quant à la configuration du service.

NodeJS LTS

Installer nodejs (v0.10.29) et npm (v1.4.21) depuis les dépôts Debian, dans /usr/bin.

apt install npm

Installer le gestionnaire de version n dans /usr/local/bin.

npm install -g n

Utiliser n pour installer la dernière version LTS de nodejs (v4.3.2) dans /usr/local/bin.

n lts

Installer la dernière version de npm (v2.14.12) dans /usr/local/bin.

npm install -g npm node-gyp

Supprimer les binaires de npm et nodejs qui trainent dans /usr/bin pour ne plus avoir que les derniers installés.

apt remove npm
apt-get autoremove

Superutilisateur

Plutôt que de continuer à utiliser le compte root, je me crée un utilisateur aux droits restreints, que j’ajoute néanmoins au groupe sudo pour l’utiliser à des fins de maintenance du système.

apt install sudo
adduser username
gpasswd -a username sudo

Pour désactiver complètement le login du compte root :

sudo passwd -dl root

SSH

Depuis un terminal sur mon ordinateur, je forge une clé SSH (inutilement grosse, pour tester) que j’autoriserai à servir d’authentification sur le compte utilisateur créé ci-dessus.

ssh-keygen -b 16384

Je la renomme $HOME/.ssh/id_rsa-nomduserver, lui met un gros gros mot de passe, puis je la copie dans les clés autorisées sur mon serveur.

ssh-copy-id -i $HOME/.ssh/id_rsa-nomduserver username@adresse.ip -o PreferredAuthentications=password

Je peux dorénavant me connecter à mon serveur par SSH avec une authentification par clé sur un utilisateur qui après entrée d’un (inutilement tarabiscoté) mot de passe, me confère des droits élevés.

ssh username@adress.ip -i $HOME/.ssh/id_rsa-nomduserver

Je renvoie au Debian Wiki pour la sécurisation de SSH : désactiver la connexion au compte root et l’authentification par mot de passe dans /etc/ssh/sshd_config.

PasswordAuthentication no
PermitRootLogin no

Shell ZSH et Byobu

Plutôt qu’une session SSH toute moche avec seulement BASH, j’utilise le gestionnaire de multiplexeurs de terminal Byobu (backend tmux) et ai remplacé BASH par ZSH.

ZSH, Prezto et Byobu

apt install zsh byobu git
byobu-enable

La commande byobu-enable active byobu si et seulement si le shell par défaut est bash. Donc plutôt que modifier le shell de l’utilisateur (chsh -s /bin/zsh) qui empêcherait l’activation automatique de byobu, il suffit d’ajouter les lignes suivantes à $HOME/.byobu/.tmux.conf pour changer l’interpréteur de commandes du programme :

set -g default-shell /usr/bin/zsh
set -g default-command /usr/bin/zsh

Installation de Prezto, un framework de configuration de ZSH. Lancer zsh et ne pas créer de fichier de configuration (touche q)

zsh

Copier le répertoire de prezto :

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

Activer prezto pour mon profil utilisateur :

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

Etherpad Lite

Installation des dépendances :

apt install gzip git curl python libssl-dev pkg-config build-essential

Déploiement d’Etherpad Lite comme service, dans son propre dossier avec son propre user/group.

adduser --system --home=/srv/etherpad-lite --group etherpad-lite

Il faut utiliser le compte adéquat pou r la suite : pour ce faire, faire précéder les commandes suivantes de :

sudo su etherpad-lite -s /bin/bash -c "ici la commande entre guillemets"

Clônage du répertoire à la racine du dossier nouvellement créé.

cd /srv/etherpad-lite;
git clone git://github.com/ether/etherpad-lite.git .

Copier le fichier de configuration.

cp /srv/etherpad-lite/settings.json.template /srv/etherpad-lite/settings.json

Configuration du backend (j’aime bien utiliser redis qui me nécessite aussi peu de configuration qu’un fichier SQLite pour des performances plus hautes) :

apt install redis-server

Dans /srv/etherpad-lite/settings.json :

//the type of the database
"dbType" : "redis",
//the database specific settings
"dbSettings" : {
                 "host"    : "localhost",
                 "port"    : 6379,
                 "database": 1
               },

Dépendances optionnelles pour l’import/export :

apt install tidy libreoffice-writer

Dans /srv/etherpad-lite/settings.json :

/* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
 LibreOffice can be used in lieu of Abiword to export pads */
"soffice" : "/usr/bin/soffice",

/* This is the path to the Tidy executable. Setting it to null, disables Tidy.
 Tidy is used to improve the quality of exported pads*/
"tidyHtml" : "/usr/bin/tidy",

Documentation :

Ghost

Ghost is a platform dedicated to one thing: Publishing. It’s beautifully designed, completely customisable and completely Open Source. Ghost allows you to write and publish your own blog, giving you the tools to make it easy and even fun to do.

Pareillement qu’Etherpad Lite ci-dessus, je déploie Ghost comme un service, ayant son propre utilisateur et groupe.

adduser --system --home=/srv/ghost --group ghost

Comme pour etherpad, il faut utiliser le compte adéquat : pour ce faire, faire précédér les commandes suivantes de :

sudo su ghost -s /bin/bash -c "ici la commande entre guillemets"

Dans le dossier de l’utilisateur ghost, je décompresse l’archive de la dernière version disponible :

cd /srv/ghost;
wget http://ghost.org/zip/ghost-latest.zip;
unzip -uo ghost-latest.zip -d /srv/ghost;
rm ghost-latest.zip

Ne reste plus qu‘à installer le tout.

npm install --production

Pour la configuration de Ghost, je renvoie à la documentation :

Pour aller plus loin :

ownCloud

ownCloud gives you universal access to your files through a web interface or WebDAV. It also provides a platform to easily view & sync your contacts, calendars and bookmarks across all your devices and enables basic editing right on the web. Installation has minimal server requirements, doesn’t need special permissions and is quick. ownCloud Server is extendable via a simple but powerful API for applications and plugins.

Pour plus de facilité quant à l’installation d’ownCloud, j’utilise le dépôt. Installer la clé :

wget https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O- | apt-key add -

Créer /etc/apt/source.list.d/owncloud.list avec le dépôt :

sh -c "echo ’deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /’ >> /etc/apt/sources.list.d/owncloud.list"

Mettre à jour les dépôts et installer owncloud :

apt-get update
apt-get install owncloud

Documentation :

Pour une première salve, ça suffira je crois. N’hésitez pas à commenter si je dois préciser un élément de configuration, je verrai si j’ai le temps pour compléter.

Gravatar de PostBlue
Original post of PostBlue.Votez pour ce billet sur Planet Libre.

Articles similaires

Framablog : Un financement pour pouvoir se libérer… de Framasphère !

mardi 15 mars 2016 à 15:45

Diaspora* est un réseau social décentralisé et respectueux de la liberté. Le terme diaspora* désigne à la fois le logiciel sous licence AGPL à installer sur un serveur pour pouvoir se connecter au réseau, et le réseau lui même, composé de toutes les différentes installations du logiciel diaspora*.

Framasphère est une de ces installations (appelées pods), et nous sommes heureux de vous fournir un accès à ce réseau depuis l’un de nos serveurs.

Démarré en Février 2010, le projet diaspora* est devenu communautaire en Août 2012. Depuis, le développement avance dans la bonne direction mais à un rythme lent : il n’est porté que par des bénévoles, principalement allemands et français.

Essayez, installez, migrez.

Senya, un développeur russe, se propose de travailler sur diaspora* à temps plein en se rémunérant grâce à une campagne de financement participatif. La fonctionnalité principale visée pour cette campagne est la possibilité de migrer son compte diaspora* d’une installation vers une autre.

migration diaspora

C’est une fonctionnalité qui nous tient à cœur, car elle touche un point clef de notre approche de la diffusion du logiciel libre : « cultiver son jardin », c’est à dire avoir sa propre installation du logiciel.

En effet, le projet Dégooglisons fonctionne en 3 étapes : vous faire découvrir le logiciel / service, vous permettre de l’essayer, puis vous permettre de l’installer chez vous, pour être le seul maître de vos données.

Vous pourrez enfin changer de pod !

Si pour certains services ce cheminement est facile, il devient nettement plus compliqué dès qu’il n’est pas possible d’extraire vos données de l’installation de Framasoft pour les réimporter dans votre propre installation.

Qui voudrait installer son propre nœud diaspora* si cela implique de perdre tous les contacts, messages, photos, etc. postés depuis des mois sur Framasphère ? Voilà pourquoi nous encourageons vivement Senya dans son crowdfunding.

Et bonne nouvelle ! Depuis quelques jours, les 3500 euros demandés ont été atteints, Senya va pouvoir travailler sur la migration entre les serveurs diaspora* !

5 jours pour aller plus loin…

Cependant, le financement se poursuit jusqu’au 20 Mars, car Senya se propose maintenant d’ajouter les mentions dans les commentaires si 4200 euros sont atteints, et la fédération des tags entre les pods si 5000 euros sont atteints (oui, les tags ne sont actuellement pas fédérés en tant que tels, voir cet article de blog pour les détails techniques). Ces fonctionnalités sont elles aussi très intéressantes, nous vous encourageons donc vivement à donner si vous le pouvez !

diaspora

En participant à ce crowdfunding, vous ne permettez pas seulement à Framasphère et à toutes les installations de diaspora* d’être plus complètes et de mieux fonctionner, créant une alternative fiable à l’horreur qu’est Facebook. Vous montrez aussi que vivre en écrivant du code Libre est quelque chose de possible.

Non seulement vous aidez Senya, qui prend le risque de faire financer son travail par la communauté plutôt que de trouver un emploi stable traditionnel, mais vous incitez aussi les autres développeurs à se tourner vers le financement participatif pour faire vivre tous les beaux logiciels Libres que nous aimons tant !

Alors, n’hésitez plus, participez !

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

David Mercereau : [API OVH] Reboot d’un VPS via un script PHP

mardi 15 mars 2016 à 14:21

OVH possède une API qui peut s’avérer très pratique pour automatiser des tâches du manager : https://api.ovh.com

J’ai choisi d’utiliser le PHP pour ces scripts car il est déjà installé sur mes machines, je n’ai donc pas besoin de supplément.

Premier test, lister mes VPS

Je commence gentils, je fais un script qui listera simplement les VPS disponible chez OVH.

Télécharger et décompressé la dernière version de « php-ovh » et ces dépendances : https://github.com/ovh/php-ovh/releases

root@monsrv:~# mkdir ovhphp/
root@monsrv:~# cd ovhphp/
root@monsrv:~/ovhphp# wget https://github.com/ovh/php-ovh/releases/download/v2.0.0/php-ovh-2.0.0-with-dependencies.tar.gz
root@monsrv:~/ovhphp# tar -xzvf php-ovh-2.0.0-with-dependencies.tar.gz

Ensuite on crée un tocken via cette URL : https://api.ovh.com/createToken/?GET=/vps ou on ne va autoriser que le GET sur /vps.

On va obtenir la page suivante, il va falloir conserver Application Key, Application Secret & Consumer Key pour les mettre dans le script :

OVH api keys résulstatOn va pouvoir créer le script suivant (pensez à recopier vos Application Key, Application Secret & Consumer Key dans les variables) :

#!/usr/bin/php
get('/vps');

print_r($vps);

?>

Lancement du script, voici le résultat :

root@romeo:~/ovhphp# php getvps.php 
Array
(
    [0] => vks00000.ip-XX-XX-XX.eu
)

vks00000.ip-XX-XX-XX.eu c’est le nom de mon VPS (pour l’exemple), ça fonctionne.

Les choses sérieuses :  un reboot

Même script avec action cette fois, pour tester le reboot d’un VPS via un script.

De nouveau la création d’API  avec l’url https://api.ovh.com/createToken/?POST=/vps/vks00000.ip-XX-XX-XX.eu/reboot. Ici on va autoriser le POST sur /vps/vks00000.ip-XX-XX-XX.eu/reboot.

#!/usr/bin/php
post('/vps/vks00000.ip-XX-XX-XX.eu/reboot');
print_r($vps_reboot);
?>

Au lancement on obtient le numéro de la tâche :

root@romeo:~# php postrebootvps.php
Array
(
    [progress] => 0
    [id] => 5119979
    [type] => rebootVm
    [state] => todo
)

Et ça fait bien redémarrer le VPS…

La finalité

De temps en temps mon VPS est inaccessible. C’est très variable (1 à 2 fois par mois environ) et je ne trouve pas la cause (OVH / système  / attaque ?). La seul solution pour le faire repartir c’est un reboot via le manager OVH. En attendant de trouver la cause (je ne désespère pas) j’ai mis en place ce script sur un serveur tiers afin de déclencher un reboot si le serveur est inaccessible.

#!/usr/bin/php
post('/vps/vks10057.ip-37-59-126.eu/reboot');
            print_r($vps_reboot);
        } else {
            echo "Le serveur est peut être planté mais peut être pas... il ne semble pas y a voir interne, on fait rien !\\n";
        }
    }
} 
exit(0);
?>

En tâche planifiée :

15,45 * * * *  /root/ovhphp/check-serveur.php

 

Gravatar de David Mercereau
Original post of David Mercereau.Votez pour ce billet sur Planet Libre.

genma : Ubuntu sur un disque externe ? Oui c'est possible

mardi 15 mars 2016 à 09:00

Afin de pouvoir faire de la veille technologique en utilisant un PC sans pour autant installer tout et n'importe quoi sur celui-ci, j'ai utilisé la possibilité d'installer Ubuntu sur un disque dur externe.

La procédure est très simple.

Pour éviter tout risque d'erreur à l'installation de Grub, j'ai enlevé le disque dur interne avant de commencer. Puis depuis un live USB d'installation classique, j'ai installé Ubuntu en mode chiffré (option choisie au moment de l'installation) sur le disque dur externe branché en USB. Une installation standard, classique.

Maintenant lorsque je le souhaite, je branche ce disque externe en USB, je demande au PC de démarrer en USB. Il alimente alors le disque dur, Grub s'affiche et je lance Ubuntu. Je tape ma phrase de passe (rappel mon disque externe est chiffré).

J'ai testé le fait que ce disque dur USB marche sur différents PC à la configuration assez proche. Base Intel, un DELL Inspiron assez ancien (Core2duo) et un Lenovo Thinkpad (Core I5). C'est transparent pour moi, je n'ai aucun message d'erreurs (Je pense que cela es lié au fait que le noyau Linux d'Ubuntu se débrouille très bien avec le changement de matériel vu que ce dernier est très proche).

J'ai eu des mises à jour du noyau, Grub s'est mis à jour en conséquence. Je n'ai pas eu à retiré à nouveau le disque dur interne.

Avec Ubuntu sur ce disque dur externe en USB, j'ai tous les avantages d'un système live, mais en plus je peux installer et conserver applications et documents, vu que je suis sur un disque dur.

En terme de performance, le fait d'être en USB au lieu d'être dans le PC ne se fait pas sentir. Le disque est en SATA (1), sur de l'USB2. Ubuntu est en installation par défaut, je n'ai fait aucune optimisation. Le chiffrement du disque ne change pas les performances.

Une bonne solution pour transporter un système mobile complet.

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Progi1984 : Docker: utiliser SASS, PHPMyAdmin, MailDev et Sentry

lundi 14 mars 2016 à 10:00

Dans mon précédent article, j’ai mis en place un environnement de développement basé sur des containers Docker avec Nginx, PHP-fpm et MySQL. Dans cet article, nous allons mettre en place différents containers Docker pour installer les outils suivants : SASS, PHPMyAdmin, MailDev et Sentry.

Logo Docker

Nous allons mettre les interfaces web des divers outils sur plusieurs ports :

Le port 80 reste pour notre application.

PHPMyAdmin

Pour PhyMyAdmin, il faut ajouter dans le fichier

docker-compose.yml
les lignes suivantes :

## Tools : PhpMyAdmin
pma:
  image: nazarpc/phpmyadmin
  ports:
    - "81:80"
  links:
    - db:mysql
  environment:
    MYSQL_ROOT_PASSWORD: root

Pour faire fonctionner PhpMyAdmin, la ligne de commande suivante le télécharge et l’active :

c:\\wamp\\www\\myProject>docker-compose up

MailDev

Pour MailDev, il faut ajouter dans le fichier

docker-compose.yml
les lignes suivantes :

## Tools : MailDev
maildev:
  image: djfarrelly/maildev
  restart: always
  ports:
    - "82:80"

Pour faire fonctionner MailDev, on exécute

docker-compose up
.

SASS

Pour MailDev, il faut ajouter dans le fichier

docker-compose.yml
les lignes suivantes :

## Tools : SASS
sass:
  image: larryprice/sass
  volumes:
    - ./:/src

Automatiquement, chaque fichier SCSS sera transformé en fichier CSS dès que SASS verra une modification et affichera les erreurs en cas de problème :

Docker : Log de SASS

Pour faire fonctionner SASS, on exécute

docker-compose up
.

Sentry

Pour Sentry, il faut ajouter dans le fichier

docker-compose.yml
les lignes suivantes :

## Tools : Sentry
sentry:
  image: slafs/sentry
  restart: always
  ports:
    - "83:9000"
  environment:
    SECRET_KEY: ""
    SENTRY_URL_PREFIX: ""
    SENTRY_ADMIN_USERNAME: Progi1984
    SENTRY_ADMIN_PASSWORD: mysecretpass
    SENTRY_ADMIN_EMAIL: progi1984@gmail.com
    SENTRY_PUBLIC: "true"
    SENTRY_INITIAL_TEAM: "myProjectTeam"
    SENTRY_INITIAL_PROJECT: "myProject"
    SENTRY_INITIAL_PLATFORM: "php"
    SENTRY_INITIAL_KEY: ":"

Toutes les clés composant le noeud « environment » sont décrites ici : https://hub.docker.com/r/slafs/sentry/.

Pour faire fonctionner Sentry, on exécute

docker-compose up
.

Conclusion

Comme nous avons pu le voir, il est assez simple des composants à notre environnement de développement. Docker étant basé sur des containers, ajouter ou supprimer un composant à notre environnement se relève d’autant plus simple que Docker Compose permet de tout faire en un seul fichier.

Cet article Docker: utiliser SASS, PHPMyAdmin, MailDev et Sentry est apparu en premier sur RootsLabs.

Gravatar de Progi1984
Original post of Progi1984.Votez pour ce billet sur Planet Libre.