Site original : PostBlue
Petite marche à suivre à peu près généraliste pour configurer un serveur dédié Kimsufi.
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) :
/home
dans le schéma de partition par défaut :
/
de 20Go ;/home
prenant l’espace restant, soit un peu moins de 980Go dans mon cas ;swap
obligatoire de 512Mo ;Inconvénients pour un serveur web comme le mien :
/var
(/var/www
pour les sites en PHP, /var/lib
pour le stockage de données des applications comme MariaDB, Prosody, etc.) et /srv
(services divers balancés sur un port public)/home
séparée et prenant 98% de l’espace disque ne me sert à rien ;apt
et doit être mis à jour à la main (wget
), en allant le chercher depuis un serveur FTP, ce qui est rédhibitoire pour moi.Donc, pour installer à ma façon :
/home
et maximiser l’espace de la racine /
./boot
séparée de /
;/var
, /src
) plus fin, en essayant de prévoir la place que prendraient ces partitions ;grsecurity
, à l’instar du noyau OVH qui les intègre ;root
mais directement un utilisateur appartenant au groupe sudo
pour ne pas avoir à le désactiver par la suite.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
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
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
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.
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 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
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 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 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 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.
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
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
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
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.
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
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 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 :
supervisor
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.
Petite marche à suivre à peu près généraliste pour configurer un serveur dédié Kimsufi.
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) :
/home
dans le schéma de partition par défaut :
/
de 20Go ;/home
prenant l’espace restant, soit un peu moins de 980Go dans mon cas ;swap
obligatoire de 512Mo ;Inconvénients pour un serveur web comme le mien :
/var
(/var/www
pour les sites en PHP, /var/lib
pour le stockage de données des applications comme MariaDB, Prosody, etc.) et /srv
(services divers balancés sur un port public)/home
séparée et prenant 98% de l’espace disque ne me sert à rien ;apt
et doit être mis à jour à la main (wget
), en allant le chercher depuis un serveur FTP, ce qui est rédhibitoire pour moi.Donc, pour installer à ma façon :
/home
et maximiser l’espace de la racine /
./boot
séparée de /
;/var
, /src
) plus fin, en essayant de prévoir la place que prendraient ces partitions ;grsecurity
, à l’instar du noyau OVH qui les intègre ;root
mais directement un utilisateur appartenant au groupe sudo
pour ne pas avoir à le désactiver par la suite.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
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
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
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.
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 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
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 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 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 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.
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
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
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
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.
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
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 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 :
supervisor
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.
Petite marche à suivre à peu près généraliste pour configurer un serveur dédié Kimsufi.
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) :
/home
dans le schéma de partition par défaut :
/
de 20Go ;/home
prenant l’espace restant, soit un peu moins de 980Go dans mon cas ;swap
obligatoire de 512Mo ;Inconvénients pour un serveur web comme le mien :
/var
(/var/www
pour les sites en PHP, /var/lib
pour le stockage de données des applications comme MariaDB, Prosody, etc.) et /srv
(services divers balancés sur un port public)/home
séparée et prenant 98% de l’espace disque ne me sert à rien ;apt
et doit être mis à jour à la main (wget
), en allant le chercher depuis un serveur FTP, ce qui est rédhibitoire pour moi.Donc, pour installer à ma façon :
/home
et maximiser l’espace de la racine /
./boot
séparée de /
;/var
, /src
) plus fin, en essayant de prévoir la place que prendraient ces partitions ;grsecurity
, à l’instar du noyau OVH qui les intègre ;root
mais directement un utilisateur appartenant au groupe sudo
pour ne pas avoir à le désactiver par la suite.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
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
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
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.
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 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
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 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 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 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.
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
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
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
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.
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
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 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 :
supervisor
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.
Petite liste simple et rapide des extensions ajoutées à mon installation de Firefox, sur une distribution Arch Linux avec le gestionnaire de bureau GNOME.
N'hésitez pas à me conseiller l'une ou l'autre extension que je ne connaitrais pas.
J’utilise le thème Arc sous GNOME[1], et donc aussi le thème développé pour le navigateur (parce que j'aime la régularité du style des applications).
Choisir un thème de la collection Arc Firefox Themes sur le site de Modules pour Firefox.
Cette extension permet d’utiliser la carte d’identité électronique belge (eID) dans Firefox.
Installer l'extension eID Belgique depuis le site de Modules pour Firefox.
GNotifier intègre les notifications de Firefox et Thunderbird au système de notification natif de GNOME (mais sensément de tout gestionnaire de bureau sous Linux utilisant libnotify
) et de Windows (8 et 10). Il remplace le gestionnaire de pop-up par défaut dans Firefox pour l'intégrer au bureau, pour :
Installer l'extension GNotifier depuis le site de Modules pour Firefox.
HTitle permet de cacher la barre de titre de Firefox quand la fenêtre est maximisée, et donc de gagner de l'espace vertical pour afficher le plus de contenu possible à l'écran[1:2]. Le développement de ce module est malheureusement abandonné, mais il fonctionne encore sans souci sur une installation récente de Firefox.
Installer l'extension HTitle depuis le site de Modules pour Firefox.
uBlock est une extension qui bloque les publicités et les pisteurs, tout simplement et avec légèreté (mémoire et processeur).
Installer l'extension uBlock Origin depuis le site de Modules pour Firefox.
Un gestionnaire de scripts utilisateur pour Firefox, utilisé en mon cas pour le script Anti-Adblock Killer.
Installer l'extension Greasemonkey depuis le site de Modules pour Firefox.
Module issu de la collaboration entre le Tor Project et l'Electronic Frontier Foundation, HTTPS Everywhere (site officiel du projet) active une redirection automatique, côté navigateur, vers le contenu accessible en HTTPS des sites visités, sur base d'une base de donnée locales.
Installer l'extension HTTPS Everywhere depuis le site de Modules pour Firefox.
Privacy Badger (site officiel du projet) bloque (en apprenant, pas tout tout de suite) les scripts espions et les pisteurs.
Installer l'extension Privacy Badger depuis le site de Modules pour Firefox.
Cette extension n'est rien de moins qu'un gestionnaire de mots de passe. Ou plutôt, c'est une extension qui permet à Firefox de dialoguer avec pass
, un password store, directement depuis le navigateur.
pass
est un gestionnaire de mots de passe qui se base sur git
pour collectionner les changements apportés à sa base de données, et GPG pour chiffrer les mots de passe.
Installer l'extension PassFF depuis le site de Modules pour Firefox.
Cette extension supprime des URLs de la barre d'adresse les éléments suivants :
utm_source
, utm_medium
, utm_term
, utm_content
et utm_campaign
, traçage pour Google Analytics ;yclid
, traçage pour Yandex.Metrica ;feature
, pollution de l'URL sur YouTube ;fb_action_ids
, fb_action_types
, fb_ref
, fb_source
, action_object_map
, action_type_map
, action_ref_map
, traçage pour Facebook ;ref
, fref
, hc_location
, pollution de l'URL sur Facebook ;ref_
, pollution de l'URL sur IMDB.Installer l'extension Pure URL depuis le site de Modules pour Firefox.
Decentraleyes protège du pistage lié à l'accès à des contenus centralisés. Du coup, cette extension accélère de nombreuses requêtes en les servant localement, allégeant la charge des sites (qui ne vont plus s'alimenter de celles hébergées sur l'un ou l'autre CDN, dont j'ai déjà dit tout le mal que je pensais). Elle complète les bloqueurs de contenus habituels.
Installer l'extension Decentraleyes depuis le site de Modules pour Firefox.
Voir le tutoriel Headerbar sur GitHub pour une petite marche à suivre de l'intégration de Firefox au bureau GNOME avec le thème Adwaita. ↩︎ ↩︎ ↩︎
Petite liste simple et rapide des extensions ajoutées à mon installation de Firefox, sur une distribution Arch Linux avec le gestionnaire de bureau GNOME.
N'hésitez pas à me conseiller l'une ou l'autre extension que je ne connaitrais pas.
J’utilise le thème Arc sous GNOME[1], et donc aussi le thème développé pour le navigateur (parce que j'aime la régularité du style des applications).
Choisir un thème de la collection Arc Firefox Themes sur le site de Modules pour Firefox.
Cette extension permet d’utiliser la carte d’identité électronique belge (eID) dans Firefox.
Installer l'extension eID Belgique depuis le site de Modules pour Firefox.
GNotifier intègre les notifications de Firefox et Thunderbird au système de notification natif de GNOME (mais sensément de tout gestionnaire de bureau sous Linux utilisant libnotify
) et de Windows (8 et 10). Il remplace le gestionnaire de pop-up par défaut dans Firefox pour l'intégrer au bureau, pour :
Installer l'extension GNotifier depuis le site de Modules pour Firefox.
HTitle permet de cacher la barre de titre de Firefox quand la fenêtre est maximisée, et donc de gagner de l'espace vertical pour afficher le plus de contenu possible à l'écran[1:2]. Le développement de ce module est malheureusement abandonné, mais il fonctionne encore sans souci sur une installation récente de Firefox.
Installer l'extension HTitle depuis le site de Modules pour Firefox.
uBlock est une extension qui bloque les publicités et les pisteurs, tout simplement et avec légèreté (mémoire et processeur).
Installer l'extension uBlock Origin depuis le site de Modules pour Firefox.
Un gestionnaire de scripts utilisateur pour Firefox, utilisé en mon cas pour le script Anti-Adblock Killer.
Installer l'extension Greasemonkey depuis le site de Modules pour Firefox.
Module issu de la collaboration entre le Tor Project et l'Electronic Frontier Foundation, HTTPS Everywhere (site officiel du projet) active une redirection automatique, côté navigateur, vers le contenu accessible en HTTPS des sites visités, sur base d'une base de donnée locales.
Installer l'extension HTTPS Everywhere depuis le site de Modules pour Firefox.
Privacy Badger (site officiel du projet) bloque (en apprenant, pas tout tout de suite) les scripts espions et les pisteurs.
Installer l'extension Privacy Badger depuis le site de Modules pour Firefox.
Cette extension n'est rien de moins qu'un gestionnaire de mots de passe. Ou plutôt, c'est une extension qui permet à Firefox de dialoguer avec pass
, un password store, directement depuis le navigateur.
pass
est un gestionnaire de mots de passe qui se base sur git
pour collectionner les changements apportés à sa base de données, et GPG pour chiffrer les mots de passe.
Installer l'extension PassFF depuis le site de Modules pour Firefox.
Cette extension supprime des URLs de la barre d'adresse les éléments suivants :
utm_source
, utm_medium
, utm_term
, utm_content
et utm_campaign
, traçage pour Google Analytics ;yclid
, traçage pour Yandex.Metrica ;feature
, pollution de l'URL sur YouTube ;fb_action_ids
, fb_action_types
, fb_ref
, fb_source
, action_object_map
, action_type_map
, action_ref_map
, traçage pour Facebook ;ref
, fref
, hc_location
, pollution de l'URL sur Facebook ;ref_
, pollution de l'URL sur IMDB.Installer l'extension Pure URL depuis le site de Modules pour Firefox.
Decentraleyes protège du pistage lié à l'accès à des contenus centralisés. Du coup, cette extension accélère de nombreuses requêtes en les servant localement, allégeant la charge des sites (qui ne vont plus s'alimenter de celles hébergées sur l'un ou l'autre CDN, dont j'ai déjà dit tout le mal que je pensais). Elle complète les bloqueurs de contenus habituels.
Installer l'extension Decentraleyes depuis le site de Modules pour Firefox.
Voir le tutoriel Headerbar sur GitHub pour une petite marche à suivre de l'intégration de Firefox au bureau GNOME avec le thème Adwaita. ↩︎ ↩︎ ↩︎