Foswiki – Installation du serveur

Foswiki est un moteur de wiki Open Source sous licence GPLv2 né en 2008 et développé en Perl et Javascript par l’association Foswiki Association e.V basée en Allemagne. Il s’agit d’un fork de TWiki et sa version actuelle est la 2.1.3. Très modulable et customisable, il est toutefois nettement moins ergonomique et simple d’utilisation que les autres moteurs de wiki Open Source cités ci-dessous.
Alternatives Open Source à Foswiki :

 

Objectif

 

L’objectif de cet article est l’installation et la configuration d’un serveur Apache-Perl auto-hébergé Foswiki en version 2.1.3 sur une distribution Linux Debian Jessie 8.7 32bits.

 

Schéma logique

 

 

Pré-requis

 

1. Pré-requis avant réalisation

  • Un serveur Debian Jessie 8.7 32 bits fonctionnel (installation basique avec utilitaires usuels du système et service SSH)
  • Packages de base supplémentaires : sudo, resolvconf, tree
  • Domaine utilisé : opensharing.priv

 

2. Configuration réseau initiale

Serveur Foswiki
FQDN foswiki-test.opensharing.priv
Adresse IP 192.168.1.29
Réseau 192.168.1.0/24
Passerelle 192.168.1.1
dns-nameservers 192.168.1.11 192.168.1.12
dns-search opensharing.priv

 

Contenu initial du fichier /etc/network/interfaces :

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
	address 192.168.1.29
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1
	dns-search opensharing.priv
	dns-nameservers 192.168.1.11 192.168.1.12

 
Contenu initial du fichier /etc/hosts :

127.0.0.1	localhost.localdomain              localhost
192.168.1.29	foswiki-test.opensharing.priv        foswiki-test
192.168.1.29	foswiki.opensharing.priv             foswiki

Rmq : L’adresse 127.0.1.1 doit être retirée sur un serveur à IP fixe et remplacée par cette dernière, tel que l’exemple ci-dessus.
 
Contenu initial du fichier /etc/host.conf :

order hosts, bind
multi on

 
Contenu initial du fichier /etc/resolv.conf :

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.11
nameserver 192.168.1.12
search opensharing.priv

Rmq :
Le fichier /etc/resolv.conf ne doit pas être édité dès lors que le paquet resolvconf a été installé.

Pour prendre en compte les modifications des fichiers de configuration relatifs au réseau, redémarrage du service réseau :

# /etc/init.d/networking restart
# /etc/init.d/networking reload

 

Réalisation

 

1. Installation de Apache et RCS

# apt install apache2 apache2-doc rcs

Installe les paquets suivants par dépendances :

apache2 apache2-data apache2-doc apache2-utils
rcs

 

2. Installation des dépendances Perl obligatoires

# apt install libalgorithm-diff-perl libarchive-tar-perl libauthen-sasl-perl libcgi-pm-perl libcgi-session-perl libcrypt-passwdmd5-perl libdigest-sha-perl libemail-mime-perl libencode-perl liberror-perl libfile-copy-recursive-perl libhtml-parser-perl libhtml-tree-perl libio-socket-ip-perl libio-socket-ssl-perl libjson-perl liblocale-maketext-perl liblocale-maketext-lexicon-perl liblocale-msgfmt-perl libwww-perl liblwp-protocol-https-perl liburi-perl libversion-perl

Installe les paquets suivants par dépendances :

libarchive-tar-perl liblocale-maketext-perl libalgorithm-diff-perl libauthen-sasl-perl
libcgi-pm-perl libfile-copy-recursive-perl libhtml-parser-perl libhtml-tree-perl
libio-socket-ip-perl libio-socket-ssl-perl liblwp-protocol-https-perl liburi-perl
libwww-perl libcgi-session-perl libcommon-sense-perl libcrypt-passwdmd5-perl
libdbi-perl libdigest-sha-perl libemail-address-perl libemail-date-format-perl
libemail-messageid-perl libemail-mime-contenttype-perl libemail-mime-encodings-perl libemail-mime-perl
libemail-simple-perl libencode-perl liberror-perl libjson-perl
libjson-xs-perl liblocale-maketext-lexicon-perl liblocale-msgfmt-perl libmime-types-perl
libversion-perl

 
Rmq : Perl est normalement installé par défaut, sinon :

# apt install perl

 

3. Installation des dépendances Perl optionnelles

# apt install libapache2-request-perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libdbd-sqlite3-perl libfcgi-perl libfcgi-procmanager-perl libcrypt-smime-perl libcrypt-x509-perl libconvert-pem-perl

Installe les paquets suivants par dépendances :

libdbi-perl libfcgi-perl libapache2-mod-apreq2 libapache2-mod-perl2
libapache2-reload-perl libapache2-request-perl libapreq2-3 libbsd-resource-perl
libclass-errorhandler-perl libconvert-asn1-perl libconvert-pem-perl libcrypt-des-ede3-perl
libcrypt-des-perl libcrypt-smime-perl libcrypt-x509-perl libdbd-mysql-perl
libdbd-pg-perl libdbd-sqlite3-perl libdevel-symdump-perl libfcgi-procmanager-perl
libmysqlclient18 libpq5 mysql-common

 

4. Installation de Foswiki

# wget https://sourceforge.net/projects/foswiki/files/latest/download -O Foswiki-2.1.3.zip
# unzip Foswiki-2.1.3.zip -d /var/www/
# mv /var/www/Foswiki-2.1.3/ /var/www/foswiki/
# chown -R www-data:www-data /var/www/foswiki/

 

5. Configuration de Apache

Configuration sécurisée et complète générée avec l’outil Apache Config Generator.

# nano /etc/apache2/sites-available/foswiki.conf
<VirtualHost *:80>
   DocumentRoot /var/www/foswiki/
   ServerName foswiki.opensharing.priv/emailAddress=admin@opensharing.priv
   Redirect permanent / https://foswiki.opensharing.priv/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@foswiki
    DocumentRoot "/var/www/foswiki"
    ServerName foswiki.opensharing.priv

    SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    SSLCertificateFile /etc/ssl/certs/foswikiperso.crt 
    SSLCertificateKeyFile /etc/ssl/private/foswikiperso.key

    BrowserMatch ".*MSIE [2-5]\..*"        nokeepalive ssl-unclean-shutdown        downgrade-1.0 force-response-1.0

	ScriptAlias /bin "/var/www/foswiki/bin"
	Alias /pub "/var/www/foswiki/pub"
	Alias /robots.txt "/var/www/foswiki/robots.txt"

        RewriteEngine    on
        LogLevel warn rewrite:warn
        ErrorLog /var/log/apache2/foswiki.error.log
        CustomLog /var/log/apache2/access.log combined

	Alias / "/var/www/foswiki/bin/view/"
	RewriteRule ^/+bin/+view/+(.*) /$1 [L,NE,R]
	RewriteRule ^/+bin/+view$ / [L,NE,R]

	SetEnvIf Request_URI "/pub/.*\.[hH][tT][mM][lL]?$" blockAccess
	SetEnvIf Request_URI "/pub/System/.*\.[hH][tT][mM][lL]?$" !blockAccess

	<Directory "/var/www/foswiki">
		<RequireAll>
			Require all granted
			Require not env blockAccess
		</RequireAll>
	</Directory>

	<Directory "/var/www/foswiki/bin">
		AllowOverride None

		<RequireAll>
			Require all granted
			Require not env blockAccess
		</RequireAll>

		Options +ExecCGI  +FollowSymLinks
		SetHandler cgi-script

		AuthUserFile "/var/www/foswiki/data/.htpasswd"
		AuthName 'Enter your WikiName: (First name and last name, no space, no dots, capitalized, e.g. JohnSmith). Cancel to register if you do not have one.'
		AuthType Basic

		ErrorDocument 401 /System/UserRegistration

	</Directory>

	<Directory "/var/www/foswiki/pub">
		Options None
		Options +FollowSymLinks
		AllowOverride None

		<RequireAll>
			Require all granted
			Require not env blockAccess
		</RequireAll>
		ErrorDocument 404 /bin/viewfile

		<ifmodule mod_php3.c>
			php3_engine off
		</ifmodule>
		<ifmodule mod_php4.c>
			php_admin_flag engine off
		</ifmodule>
		<ifmodule mod_php5.c>
			php_admin_flag engine off
		</ifmodule>

		AddType text/plain .shtml .php .php3 .phtml .phtm .pl .py .cgi

	</Directory>

	<Directory "/var/www/foswiki/pub/Trash">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/data">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/templates">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/lib">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/locale">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/tools">
		Require all denied
	</Directory>

	<Directory "/var/www/foswiki/working">
		Require all denied
	</Directory>

	BrowserMatchNoCase ^Accoona blockAccess
	BrowserMatchNoCase ^ActiveAgent blockAccess
	BrowserMatchNoCase ^Attache blockAccess
	BrowserMatchNoCase BecomeBot blockAccess
	BrowserMatchNoCase ^bot blockAccess
	BrowserMatchNoCase Charlotte/ blockAccess
	BrowserMatchNoCase ^ConveraCrawler blockAccess
	BrowserMatchNoCase ^CrownPeak-HttpAgent blockAccess
	BrowserMatchNoCase ^EmailCollector blockAccess
	BrowserMatchNoCase ^EmailSiphon blockAccess
	BrowserMatchNoCase ^e-SocietyRobot blockAccess
	BrowserMatchNoCase ^Exabot blockAccess
	BrowserMatchNoCase ^FAST blockAccess
	BrowserMatchNoCase ^FDM blockAccess
	BrowserMatchNoCase ^GetRight/6.0a blockAccess
	BrowserMatchNoCase ^GetWebPics blockAccess
	BrowserMatchNoCase ^Gigabot blockAccess
	BrowserMatchNoCase ^gonzo1 blockAccess
	BrowserMatchNoCase ^Google\sSpider blockAccess
	BrowserMatchNoCase ^ichiro blockAccess
	BrowserMatchNoCase ^ie_crawler blockAccess
	BrowserMatchNoCase ^iGetter blockAccess
	BrowserMatchNoCase ^IRLbot blockAccess
	BrowserMatchNoCase Jakarta blockAccess
	BrowserMatchNoCase ^Java blockAccess
	BrowserMatchNoCase ^KrakSpider blockAccess
	BrowserMatchNoCase ^larbin blockAccess
	BrowserMatchNoCase ^LeechGet blockAccess
	BrowserMatchNoCase ^LinkWalker blockAccess
	BrowserMatchNoCase ^Lsearch blockAccess
	BrowserMatchNoCase ^Microsoft blockAccess
	BrowserMatchNoCase MJ12bot blockAccess
	BrowserMatchNoCase MSIECrawler blockAccess
	BrowserMatchNoCase ^MSRBOT blockAccess
	BrowserMatchNoCase ^noxtrumbot blockAccess
	BrowserMatchNoCase ^NutchCVS blockAccess
	BrowserMatchNoCase ^RealDownload blockAccess
	BrowserMatchNoCase ^Rome blockAccess
	BrowserMatchNoCase ^Roverbot blockAccess
	BrowserMatchNoCase ^schibstedsokbot blockAccess
	BrowserMatchNoCase ^Seekbot blockAccess
	BrowserMatchNoCase ^SiteSnagger blockAccess
	BrowserMatchNoCase ^SiteSucker blockAccess
	BrowserMatchNoCase ^Snapbot blockAccess
	BrowserMatchNoCase ^sogou blockAccess
	BrowserMatchNoCase ^SpiderKU blockAccess
	BrowserMatchNoCase ^SpiderMan blockAccess
	BrowserMatchNoCase ^Squid blockAccess
	BrowserMatchNoCase ^Teleport blockAccess
	BrowserMatchNoCase ^User-Agent\: blockAccess
	BrowserMatchNoCase VoilaBot blockAccess
	BrowserMatchNoCase ^voyager blockAccess
	BrowserMatchNoCase ^w3search blockAccess
	BrowserMatchNoCase ^Web\sDownloader blockAccess
	BrowserMatchNoCase ^WebCopier blockAccess
	BrowserMatchNoCase ^WebDevil blockAccess
	BrowserMatchNoCase ^WebSec blockAccess
	BrowserMatchNoCase ^WebVac blockAccess
	BrowserMatchNoCase ^Webwhacker blockAccess
	BrowserMatchNoCase ^Webzip blockAccess
	BrowserMatchNoCase ^Wells blockAccess
	BrowserMatchNoCase ^WhoWhere blockAccess
	BrowserMatchNoCase www\.netforex\.org blockAccess
	BrowserMatchNoCase ^WX_mail blockAccess
	BrowserMatchNoCase ^yacybot blockAccess
	BrowserMatchNoCase ^ZIBB blockAccess
	BrowserMatch "^gsa-crawler" NO_FOSWIKI_SESSION
	BrowserMatchNoCase ^$ blockAccess

</VirtualHost>

 
Génération de la clef privée :

# openssl genrsa -out /etc/ssl/private/foswikiperso.key 1024
Generating RSA private key, 1024 bit long modulus
......................................++++++
........++++++
e is 65537 (0x10001)

Demande de certificat à partir de la clef :

# openssl req -new -key /etc/ssl/private/foswikiperso.key -out /etc/ssl/certs/foswikiperso.csr
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank.
For some fields there will be a default value, if you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Ile-de-France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OpenSharing
Organizational Unit Name (eg, section) []:Service Informatique
Common Name (e.g. server FQDN or YOUR name) []:foswiki.opensharing.priv
Email Address []:admin@opensharing.priv

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:foswikicertificate
An optional company name []:OpenSharing

Construction du certificat :

# openssl x509 -req -days 365 -in /etc/ssl/certs/foswikiperso.csr -signkey /etc/ssl/private/foswikiperso.key -out /etc/ssl/certs/foswikiperso.crt
Signature ok
subject=/C=FR/ST=Ile-de-France/L=Paris/O=OpenSharing/OU=Service Informatique/CN=foswiki.opensharing.priv/emailAddress=admin@opensharing.priv
Getting Private key

 

Activation du site et des modules et vérification de la syntaxe du VirtuaHost :

# a2ensite foswiki
# a2enmod rewrite
# a2enmod ssl
# a2enmod cgi
# a2enmod access_compat
# apachectl configtest
# cd /var/www/foswiki/tools/
# ./fix_file_permissions.sh
# service apache2 restart

 

8. Configuration de Foswiki par le navigateur Web

Saisir, dans la barre d’adresses, l’adresse suivante :

http://foswiki.opensharing.priv

redirigeant automatiquement vers :
https://foswiki.opensharing.priv
 
Le répondeur OCSP nous signifie que le certificat n’émane pas d’une autorité de certification reconnue, un message d’avertissement est donc émis.

Cliquer sur Avancé puis Ajouter une exception…

Il suffit ensuite de Confirmer l’exception de sécurité.

L’installation n’est pas assistée, elle va consister à remplir certaines informations relatives au wiki, à les sauvegarder et ainsi à créer un fichier /var/www/foswiki/lib/LocalSite.cfg. Pour cela, cliquer sur configure.

Parmi les 9 sections présentées, et leurs sous-sections respectives, la configuration consistera dans un premier temps à éliminer certains warnings (la plupart sont en fait informatifs dans le cas d’une migration d’une ancienne installation). L’information la plus importante à renseigner est le mot de passe de l’administrateur (internal admin) créé par défaut.
Security and Authentication > Passwords > Internal Admin Password

Une fois la configuration terminée, cliquer en haut à droite sur le bouton de sauvegarde.

Confirmer la sauvegarde.

La sauvegarde génère le fichier /var/www/foswiki/lib/LocalSite.cfg

La procédure suivante consiste éventuellement à créer un premier administrateur (en plus de celui créé par défaut).

On peut dors et déjà créer un premier sujet.

La page principale n’affiche plus d’avertissements.

 

Pour aller plus loin

 

1. Effectuer une sauvegarde manuelle complète

# mkdir -p /home/adminsys/backup/2.1.3/
# cd /home/adminsys/backup/2.1.3/
# tar -czvf backup-foswiki-20170425.tar.gz -C /var/www/ foswiki/

 

2. Effectuer une restauration manuelle complète

# cd /home/adminsys/backup/2.1.3/
# tar -xzvf backup-foswiki-20170425.tar.gz -C /var/www/

 

Références

 

Fermer le menu
%d blogueurs aiment cette page :