Auto-hébergement
Sommaire
- Introduction
- Avant de vous lancer
- Installation et configuration d'Ubuntu Server
- Installation et configuration d'OpenSSH Server
- Installation et configuration de Lighttpd avec PHP en CGI
- Installation et configuration de Postfix avec Dovecot
- 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é):
sudo -i
apt-get update
apt-get dist-upgradeInstallation 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"):
adduser mistershell --ingroup sudo --home /mistershellgroupadd sftpersusermod -G sftpers nomdutilisateurchown -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 installe OpenSSH:
apt-get install openssh-servernano /etc/ssh/sshd_configProtocol 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 noOn quitte avec ctrl+X puis on répond O et on appuie sur entrée. Ensuite on redémarre le démon:
service ssh restartInstallation 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:
apt-get install lighttpd php5-cgiadduser 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/*nano /etc/lighttpd/lighttpd.confserver.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:
lighty-enable-mod fastcgi-php
nano /etc/php5/cgi/php.iniservice lighttpd restartInstallation 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!