Auto-hébergement

Sommaire

  1. Introduction
  2. Avant de vous lancer
  3. Installation et configuration d'Ubuntu Server
  4. Installation et configuration d'OpenSSH Server
  5. Installation et configuration de Lighttpd avec PHP en CGI
  6. Installation et configuration de Postfix avec Dovecot
  7. Liens

Introduction

La conférence de Benjamin Bayart sur l'Internet libre vous a convaincu et vous souhaitez devenir votre propre hébergeur mais vous ne savez pas comment y arriver avec votre petite connexion ADSL? Dans ce cas ce tutoriel est fait pour vous! Nous allons voir comment installer un serveur SSH afin de pouvoir prendre le contrôle de votre machine à distance et de pouvoir transférer vos fichiers, un serveur web léger équipé de PHP pour rendre votre site disponible chez M. Toutlemonde et d'un serveur mail pour pouvoir envoyer et recevoir des courriels.

Avant de vous lancer

Je vais commencer par une mise en garde: cette page n'aborde pas tous les aspects de l'auto-hébergement. Ici, le choix du serveur, l'utilisation d'un nom de domaine, la maintenance et la configuration de votre routeur ne seront pas abordés. Aussi, je vous invite à vous familiariser avec l'utilisation d'une distribution GNU/Linux en ligne de commandes ainsi qu'avec le fonctionnement des réseaux avant de vous plonger dans la lecture de ce tutoriel.

Installation et configuration d'Ubuntu Server

Pour commencer, nous allons aborder l'installation d'un système d'exploitation libre et gratuit ayant fait ses preuves: Ubuntu Server. Commencez par vous rendre sur cette page puis cliquez sur "Plus d'options..." et sélectionnez la version LTS (pour "Long Term Support", "Support à Long Terme" en français). Cliquez ensuite sur le bouton télécharger. Une fois le téléchargement effectué, gravez le fichier ISO sur un CD ou installez-la sur une clé USB (via UnetBootin par exemple) puis allumez votre futur serveur (en ayant pris soin d'avoir inséré le support contenant Ubuntu Server).

Une fois arrivé sur le menu principal, sélectionnez français comme langage puis Installer Ubuntu Server. Choisissez ensuite les options suivantes (en utilisant les flèches pour naviguer, "tabulation" pour changer de zone et "entrée" pour valider):Votre pays, Oui, Non, Non, Continuer, Ce que vous voulez, Continuer, Oui, Assisté - utiliser tout un disque avec LVM, Le disque souhaité, Oui, Continuer, Oui, Votre nom d'utilisateur, Continuer, Continuer, Votre mot de passe, Continuer, Votre mot de passe (encore), Continuer, Non, Continuer, Installer les mises à jour de sécurité automatiquement, Continuer (ne sélectionnez rien dans la liste), Oui, Continuer.L'ordinateur va redémarrer: Ubuntu est maintenant installé! Entrez votre nom d'utilisateur puis votre mot de passe. Une fois connecté, nous allons effectuer quelques mises à jour. Pour cela, assurez-vous que votre PC est relié à Internet puis entrez les trois commandes suivantes (dans l'ordre indiqué):

Code (BASH):sudo -i
apt-get update
apt-get dist-upgrade
Votre serveur est maintenant à jour! Vous pouvez dès à présent passer à l'étape suivante.

Installation et configuration d'OpenSSH Server

Nous allons maintenant installer OpenSSH. Une fois ce "démon" installé, vous pourrez prendre le contrôle de votre serveur depuis n'importe quel autre ordinateur connecté sur votre réseau local ou sur Internet. Vous n'aurez donc plus besoin d'un écran! De plus, nous l'utiliserons comme un serveur de transfert de fichiers (appelé SFTP).

Avant d'installer OpenSSH, nous allons préparer le terrain en créant un utilisateur spécial pour le shell et en mettant tous les utilisateurs autorisés à transférer des fichiers dans un groupe spécial.On créé un utilisateur spécial (que l'on va appeler "mistershell"):

Code (BASH):adduser mistershell --ingroup sudo --home /mistershell
Puis on créé le groupe réservé au SFTP:
Code (BASH):groupadd sftpers
Et on ajoute chaque utilisateur au groupe (à répéter pour chaque utilisateur qui sera autorisé à transférer des fichiers):
Code (BASH):usermod -G sftpers nomdutilisateur
Nous allons ensuite appliquer les bons droits au home de chaque utilisateur: il doit appartenir à root. Nous devrons donc créer plusieurs dossiers que chaque utilisateur pourra utiliser:
Code (BASH):chown -R root:sftpers /home/monuser/
chmod -R 750 /home/monuser/
cd /home/monuser/
mkdir Autre Documents Images Musiques Videos
chmod 755 *
chown monuser:sftpers *
On peut maintenant passer à l'installation d'OpenSSH!
On installe OpenSSH:
Code (BASH):apt-get install openssh-server
Puis on le configure:
Code (BASH):nano /etc/ssh/sshd_config
Je vous propose d'utiliser mon fichier (j'ai commenté le plus utile):Port 223 # Le port à utiliser
Protocol 2
AddressFamily inet

AllowUsers truc machin chose # Les utilisateurs autorisés à utiliser SSH ou le SFTP (ici truc,machin et chose)

AllowTcpForwarding yes

ChallengeResponseAuthentication no
Ciphers aes256-ctr,aes192-ctr,aes128-ctr,arcfour256,aes128-cbc
ClientAliveInterval 15
ClientAliveCountMax 3
Compression yes
GatewayPorts no
LogLevel VERBOSE
LoginGraceTime 50s
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
MaxAuthTries 6
MaxStartups 10
PasswordAuthentication yes
PermitEmptyPasswords no # Question de sécurité!
PermitRootLogin no # Idem
PermitUserEnvironment no
PidFile /var/run/sshd.pid
PrintLastLog yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
StrictModes yes
SyslogFacility AUTH
TCPKeepAlive no
UseDNS no
UseLogin no
UsePrivilegeSeparation yes
X11DisplayOffset 10
X11Forwarding no
X11UseLocalhost yes
Subsystem sftp internal-sftp
Match Group sftpers # Pour le groupe sftpers
        ChrootDirectory /%h # On les bloque dans leur "home"
        ForceCommand internal-sftp # Et on force le transfert de fichiers
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no
On quitte avec ctrl+X puis on répond O et on appuie sur entrée. Ensuite on redémarre le démon:
Code (BASH):service ssh restart
Vous pouvez dès à présent débrancher l'écran de votre serveur et vous connecter grâce à PuTTY si vous possédez Windows ou grâce à la commande SSH (à éxécuter dans le terminal) si vous utilisez Linux ou MacOS. N'oubliez pas que le port du serveur SSH est maintenant le port 223! Vous pouvez également transférer des fichiers avec FileZilla (l'adresse de votre serveur est sftp://ipduserveur/ et le port est le port 223).

Installation et configuration de Lighttpd avec PHP en CGI

Attention: ici, je ne traiterais pas l'installation de MySQL: c'est lourd et on peut très bien s'en passer.
Nous allons maintenant mettre en place le serveur qui traitera les pages statiques: Lighttpd.
On commence par installer lighttpd et PHP:
Code (BASH):apt-get install lighttpd php5-cgi
Puis on créé un nouvel utilisateur:
Code (BASH):adduser www --home /var/www --ingroup sftpers
chown -R root:sftpers /var/www/
chmod -R 750 /var/www/
mkdir /var/www/logs
touch /var/www/logs/www.log
mkdir /var/www/www
chown www:sftpers -R /var/www/*
chmod 755 -R /var/www/*
Nous allons maintenant le configurer:
Code (BASH):nano /etc/lighttpd/lighttpd.conf
et remplacez tout le contenu par ces lignes:server.document-root = "/var/www/www"
server.port = 80
server.username = "www-data"
#server.groupname = "www-data"
server.tag ="lighttpd"
server.max-keep-alive-requests = 5
server.max-keep-alive-idle = 5
server.max-worker = 1
server.max-fds = 512
server.max-connections = 256
server.modules = ( "mod_access", "mod_accesslog", "mod_fastcgi", "mod_rewrite", "mod_redirect", "mod_compress", "mod_setenv", "mod_expire", "mod_auth" )
server.errorlog = "/var/www/logs/www.log"
accesslog.filename = "/var/www/logs/www.log"
index-file.names = ( "index.html", "index.htm", "index.php" )
fastcgi.server = (
    ".php" => (
      "localhost" => ( 
        "bin-path" => "/usr/bin/php-cgi",
        "socket" => "/var/run/lighttpd/php-fastcgi.sock",
        "max-procs" => 1,
        "bin-environment" => (
          "PHP_FCGI_CHILDREN" => "1",
    "PHP_FCGI_MAX_REQUESTS" => "25"
        ),
        "broken-scriptfilename" => "enable"
      ))
)
compress.cache-dir = "/tmp/"
compress.filetype = ("text/plain", "text/html", "text/css", "text/javascript", "application/javascript", "application/x-javascript")
$HTTP["url"] =~ ".(ico)$" { expire.url = ( "" => "modification plus 364 days") }
$HTTP["url"] =~ ".(jpg|jpeg|gif|png)$" { expire.url = ( "" => "modification plus 30 days") }
$HTTP["url"] =~ ".(css|js)$" { expire.url = ( "" => "modification plus 15 days") }
$HTTP["url"] =~ ".(html|htm|stm)$" { expire.url = ( "" => "modification plus 60 minutes") }
Puis nous allons activer et configurer PHP:
Code (BASH):lighty-enable-mod fastcgi-php
nano /etc/php5/cgi/php.ini
Ajoutez cette ligne à la fin du fichier:cgi.fix_pathinfo = 1Puis remplacez:;open_basedir =par:open_basedir = /var/www/:/tmp/,;disable_functions =par:disable_functions = tmpfile, mkdir, chmod, pack, escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_open, shell_exec, system, ini_alter, dl, popen, parse_ini_file, show_source, ini_restore, fsockopen, allow_url_fopen, allow_url_include, posix_getpwuid, phpinfoet:display_errors = Onpar:display_errors = OffEt redémarrez:
Code (BASH):service lighttpd restart

Installation et configuration de Postfix avec Dovecot

Je n'aborderais pas directement cette partie: en effet, Rom1v l'a traité avant moi. Je me contenterai donc de quelques conseils. Commencez par ce tutoriel (vous ferez attention à mettre le serveur SMTP de votre FAI dans "relayhost" pour passer outre les blacklists) puis complétez votre installation grâce à ce tutoriel. Vous disposez maintenant d'un serveur mail fonctionnel!

C'est fini! Vous êtes arrivé au bout de ce tutoriel et vous pouvez dès maintenant vous amuser avec votre serveur!

Liens

  1. Un site communautaire sur l'auto-hébergement
  2. La communauté française d'Ubuntu
  3. Le Réseau d’Hébergeurs Indépendants et ENgagés