J'ai d'abord commencé à installer "à la main" différents éléments indispensables à des conditions d'hébergement "normales", que ce soit le serveur Apache, php, un serveur Mysql, un serveur de Mail, etc.
Je me suis vite aperçu que cette solution fonctionnait bien (après moult réglages ...) mais que, avec l'arrivée de nouveaux sites, l'administration devenait assez lourde pour un non professionnel comme moi.
L'idéal aurait été de trouver un "script" qui permette de gérer TOUT d'un seul coup.
Imaginez : je clique sur un bouton après avoir rentré quelques coordonnées, adresse e-mail et nom de domaine et ... HOP! tout est mis à jour aussi bien les DNS que les alias mail ou la base de données MySQL, etc. ... et bien ca existe ! :o)
Oui, je sais, je débarque mais bon. Vieux motard que jamais ! :o)
Cette solution a été testée avec succès sur un serveur personnel placé chez moi avec une connexion de type adsl dégroupée (environ 100 Ko/s en up) et sur un serveur dédié de type Dédibox... le tout sous Ubuntu !
Sur la base de divers posts, tutos et documentations trouvées sur le Net, je vais vous proposez maintenant d'installer ce serveur complet.
1 - Choix de l'OS : Ubuntu Feisty Fawn 7.04 server sans configuration de type LAMP. Tout est fait "à la main" utltérieurement.Je tiens à signaler que je me suis beaucoup basé sur le tuto paru sur howtoforge.com "The perfect setup feisty fawn". Je tiens enfin à signaler que comme l'autorisation d'utiliser "tel quel" ce tuto m'a été refusée par l'auteur ... (!?!), j'ai re-adapté le tout en français et j'ai ajouté certains détails trouvés sur le Net qui complètent l'installation, notamment sur les forums d'ISPConfig.
2- Choix des applications Le "script" d'hébergement : mon choix s'est porté sur ISPConfig (http://www.ispconfig.org/) : licence d'utilisation BSD, gratuité, simplicité d'utilisation et communauté dynamique ... Les applications de type "serveur" : Apache2 + SSL, php5, Mysql 5, Postfix, Proftpd, imap/pop3, etc. Les "+" : quota, statistiques, etc.
Aller, c'est parti :
Première commande, premier troll !
Eh oui, on va installer un bon vieux compte root !
sudo passwd root... et donner un mot de passe au compte root !
Puis nous allons faire un petit changement important :
sudo ln -sf /bin/bash /bin/sh/bin/sh est un lien "symlink" vers /bin/dash, mais nous nous voulons /bin/bash. La commande précédente permet de s'assurer que nous aurons bien /bin/bash...
Installons premièrement le server SSH indispensable surtout si vous êtes à distance :
$ sudo apt-get install ssh openssh-server
[UPDATE du 27/06/07] : Afin de renforcer la sécurité dudit serveur, vous pouvez modifier le /etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config.. et ajouter la ligne suivante (ce qui interdira à root de se connecter) :
PermitRootLogin no
Configurons le fichier /etc/hosts afin qu'il ressemble à ça :
sudo vim /etc/hosts127.0.0.1 localhost.localdomain localhost
82.244.xx.xx monserveur.serveur.com monserveur
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
ATTENTION : à adapter avec votre vraie adresse IP ! :o)
Maintenant tapez :
sudo echo monserveur.serveur.com > /etc/hostnameet rebootez votre système. Au redémarrage, essayez les commandes suivantes :
hostname
hostname -fLes deux devraient vous retourner : monserveur.serveur.com.
Editons ou vérifions maintenant le fichier /etc/apt/sources.list et soyez sur d'avoir ajouté les sources pour universe et multiverse.
Puis tapez les commandes suivantes :
sudo apt-get update
sudo apt-get upgradeNous allons maintenant installer quota qui va nous permettre de limiter ou de définir une taille maxi d'hébergement.
sudo apt-get install quotaIl va falloir maintenant éditer /etc/fstab :
sudo vim /etc/fstab... ce qui va donner quelque chose comme ca :
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/hda1
UUID=9e00f33f-33e5-457b-a32a-fde2911b7c67 / ext3 defaults,errors=remount-ro,usrquota,grpquota 0 1
# /dev/hda5
UUID=39504888-6254-49ff-a738-277053b3f53d none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/hdd /media/cdrom1 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
L'important étant de rajouter usrquota et grpquota sur la ligne de la partition principale !
Pour activer quota, il va falloir rentrer les commandes suivantes, dans l'ordre :
sudo touch /quota.user /quota.group
sudo chmod 600 /quota.*
sudo mount -o remount /
sudo quotacheck -avugm
sudo quotaon -avugPassons à un gros morceau : le serveur DNS
sudo apt-get install bind9Pour des raison de sécurité, nous allons configurer bind afin qu'il tourne dans un environnement chrooté.
sudo /etc/init.d/bind9 stopIl faut éditer /etc/default/bind9 :
sudo vim /etc/default/bind9et veillez à ce que le fichier ressemble à ça :
OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes
Créons maintenant les fichiers, les répertoires et la configuration indispensables à cet environnement chrooté de bind :
sudo mkdir -p /var/lib/named/etc
sudo mkdir /var/lib/named/dev
sudo mkdir -p /var/lib/named/var/cache/bind
sudo mkdir -p /var/lib/named/var/run/bind/run
sudo mv /etc/bind /var/lib/named/etc
sudo ln -s /var/lib/named/etc/bind /etc/bindpuis
sudo mknod /var/lib/named/dev/null c 1 3
sudo mknod /var/lib/named/dev/random c 1 8
sudo chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
sudo chown -R bind:bind /var/lib/named/var/*
sudo chown -R bind:bind /var/lib/named/etc/bindNous allons maintenant modifier le fichier /etc/default/syslogd afin qu'il ressemble à ça :
sudo vim /etc/default/syslogd#
# Top configuration file for syslogd
#
#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#
#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"
On redémarre le daemon :
sudo /etc/init.d/sysklogd restartPuis on redémarre bind :
sudo /etc/init.d/bind9 startNous allons maintenant installer le serveur MySQL :
sudo apt-get install mysql-server mysql-client libmysqlclient15-devPuis nous allons éditer le fichier /etc/mysql/my.cnf :
sudo vim /etc/mysql/my.cnf
et nous allons commenter la ligne :
[...]
#bind-address = 127.0.0.1
[...]
afin que le serveur "écoute" non seulement sur le localhost mais aussi sur toutes les adresses.
On redémarre le serveur MySQL :
sudo /etc/init.d/mysql restartIl faut maintenant "sécuriser" MySQL et mettre un mot de passe à l'utilisateur root :
sudo mysql_secure_installation... et répondez aux questions !
Nous allons maintenant installer Postfix avec le SMTP-AUTH et TLS :
sudo apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmailA la première question posée dans la console (Type de configuration) répondez Site Internet et à la deuxième (Nom de courrier) répondez : monserveur.serveur.com (à adapter avec votre vraie config biensur !)
Mais par défaut, postfix n'est pas assez bien "configuré". Nous allons le reconfigurer :
sudo dpkg-reconfigure postfixet répondre aux questions suivantes :
Type de configuration? <-- Site Internet
Destinataire du courrier destiné au superutilisateur : <-- [laisser blanc, ne rien mettre]
Nom de courrier ? <-- monserveur.serveur.com
Autres destinations pour lesquelles le courrier sera accepté (champ vide autorisé) : <-- monserveur.serveur.com, localhost.serveur.com, localhost.localdomain, localhost
Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels ? <-- Non
Réseaux internes : <-- 127.0.0.0/8
Taille maximale des boîtes aux lettres : <-- 0
Caractère d'extension des adresses locales : <-- +
Protocoles internet à utiliser : <-- tous (ou ipv4)
Puis, il va falloir faire un peu de configuration :
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
sudo echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.confsudo mkdir /etc/postfix/ssl
sudo cd /etc/postfix/ssl/
sudo openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024sudo chmod 600 smtpd.key
sudo penssl req -new -key smtpd.key -out smtpd.csr
sudo openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
sudo openssl rsa -in smtpd.key -out smtpd.key.unencrypted
sudo mv -f smtpd.key.unencrypted smtpd.key
sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_use_tls = yes'
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
sudo postconf -e 'myhostname = monserveur.serveur.com' (cette ligne est à adapter à votre vraie configuration !)Et puis nous faisons :
sudo /etc/init.d/postfix restartMaintenant, il y a deux ou trois trucs à changer pour que l'authentification fonctionne correctement :
sudo mkdir -p /var/spool/postfix/var/run/saslauthdPuis il faut vérifier que /etc/default/saslauthd ressemble à ça :
sudo vim /etc/default/saslauthd#
# Settings for saslauthd daemon
#
# Should saslauthd run automatically on startup? (default: no)
START=yes
# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"
# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""
# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5
# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
On redémarre saslauthd :
sudo /etc/init.d/saslauthd startInstallons maintenant tout ce qui est relatif au serveur pop, imap, etc. :
sudo apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0Lors de l'installation, à la première question vous répondrez non et à la deuxième simplement OK
Maintenant installons apache, php5 etc. :
sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslRépondez OUI à la question concernant le support Maildir ... Puis :
sudo vim /etc/apache2/mods-available/dir.confet on va changer la ligne DirectoryIndex comme cela :
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
sudo vim /etc/apache2/ports.confListen 80
Listen 443
On met en place les modules apache :
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include... et on relance apache :
sudo /etc/init.d/apache2 force-reloadMaintenant nous allons désactiver php de "manière globale". En effet, sous ISPConfig, vous pouvez autoriser ou non l'utilisation de php pour les sites hébergés. Cette étape n'est pas indispensable mais c'est à vous de voir si cela sera utile ou non dans votre cas ...
sudo vim /etc/mime.types... et on commente les lignes relatives à php :
[...] #application/x-httpd-php phtml pht php
#application/x-httpd-php-source phps
#application/x-httpd-php3 php3
#application/x-httpd-php3-preprocessed php3p
#application/x-httpd-php4 php4
[...]
Puis :
sudo vim /etc/apache2/mods-enabled/php5.conf# AddType application/x-httpd-php-source .phps
# AddType application/x-httpd-php .php .phtml .php3
# AddType application/x-httpd-php-source .phps
On redémarre apache :
sudo /etc/init.d/apache2 restartOn installe maintenant le serveur ftp (proftpd):
sudo apt-get install proftpd ucfA la question posée, vous choisissez de faire tourner proftpd séparément (standalone)
Au redémarrage de proftpd vous allez certainement avoir une erreur du type :
- IPv6 getaddrinfo 'server1.example.com' error: Name or service not known
On va facilement corriger ce problème :
sudo vim /etc/proftpd/proftpd.conf... et vos allez asser la ligne UseIPV6 à off comme cela :
UseIPv6 off
On renforce un peu la sécurité de proftpd :
sudo vim /etc/proftpd/proftpd.confet on rajoute :
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."
Afin de rendre compatible le fichier de configuration de proftpd avec ISPConfig, on fait une petite manip :
sudo ln -s /etc/proftpd/proftpd.conf /etc/proftpd.confPuis on redémarre proftpd :
sudo /etc/init.d/proftpd restartOn installe webalizer pour les stats de fréquentation des sites :
sudo apt-get install webalizerOn installe ce qu'il faut pour synchroniser l'horloge du serveur :
sudo apt-get install ntp ntpdatePuis on termine la config avec l'installation de quelques packages indispensables pour ISPConfig (notamment spammassassin) :
sudo apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perlVoila la config du serveur à proprement parler est terminée !!!
Installons ISPConfig :
Récupérez la dernière version stable (au 25/06/07) :
cd /home/user/Desktop(user est à remplacer par votre vrai nom d'utilisateur ! :o) )
Puis :
wget http://ovh.dl.sourceforge.net/sourceforge/ispconfig/ISPConfig-2.2.14.tar.gzPuis :
tar xvfz ISPConfig-2.2.14.tar.gzPuis :
cd install_ispconfigATTENTION : Vous avez besoin de plusieurs packages à ce niveau afin de compiler correctement les applications comme notamment gcc, flex, libmysqlclient15-dev.
Puis lançons l'installation :
sudo ./setupL'installateur va désormais lancer un long processus de compilation (relatif à la puissance de votre machine - 30 min environ sur un Athlon XP 2000+ et 1 Go de RAM DDR) de apache, php5, etc. Il s'agit en fait de compiler un serveur apache qui va écouter sur le port 81 pour faire tourner ISPConfig. Il n'y a pas d'interférence avec l'installation du apache "normal" qui a été installé avant. De plus, ISPConfig installe un apache1.3 alors que nous avons installés tout à l'heure un apache2.
Vous choisissez votre langage (français serait idéal en l'occurence ... !)
Vous acceptez les licences...
Mode d'installation : choisissez standard
Lorsque l'apache d'ISPConfig est compilé, un certificat SSL est créé. Par conséquent on va vous poser quelques questions... regardez les exemples fournits et adaptez à vos besoins.
ATTENTION : Aux étapes 7 et 8, "crypter la clé ..." etc. : répondez NON !!! Sans quoi ISPConfig ne pourra être redémarré que en fournissant la bonne clé !
Si la compilation échoue, l'installation s'arrête et tous les fichiers de compil en cours sont effacés ! Même le répertoire install_ispconfig disparait ! Vous devriez avoir un message d'erreur qui vous indique quel est le véritable problème ... En général, il manque une config ou un package ... Recommencez depuis le début de l'installation de ISPConfig (tar xvfz ISPConfig-2.2.14.tar.gz, etc.) puis suivez la même procédure...
Puis vers la fin de l'installation, on vous pose quelques questions :
Serveur mysql : répondez localhost
utilisateur mysql: root
mot de passe mysql : le mot de passe de root
Le nom de la base de données IPSCOnfig : ispconfigdb
Attention pour la suite choisissez bien votre adresse IP :
L'adresse IP du serveur ISPConfig : 192.168.0.1 (si vous êtes connecté à domicile, derrière une freebox en mode routeur par exmeple) sinon rentrer votre adresse IP publique (exemple : 82.244.xx.xx)
Le nom d'hote: www Le domaine : votrenomdedomaine.com (à adapter, biensur !)
Sélection du protocole (http ou https (crypté)) pour accéder à ISPConfig :
Personnellement, j'ai choisi 1 pour SSL Vous pourrez donc accéder à votre système ISPConfig à l'adresse https://www.votrenomdedomaine.com:81.
Pour la prmière fois, connectez vous avec l'identifiant admin et le mot de passe admin. Changez vite ce mot de passe dans les paramètres de ISPCOnfig ! :o)))
Et voila : c'est terminé !!!
Il ne vous reste plus qu'à vous familiariser avec l'interface, la config, etc. Dans le menu Aide, vous trouverez des tutos en francais fots bien faits. Allez les consulter pour apprendre à vous servir de toute l'interface !

