Installer ajaxterm sur un NAS Synology et y accéder en https

Ajaxterm est un terminal dans une page web, accessible donc simplement par un navigateur web. Les avantages? Il est accessible de partout, quelque soit le proxy, pare-feu, antivirus, ou n’importe quelle protection mise en place, du moment que le http/https passe. Les inconvénients : c’est un peu lent, et pas sécurisé si vous ne passez pas par de l’https.

J’ai un peu galéré, mais j’ai fini par réussir à installer ajaxterm sur mon NAS Synology et à configurer son accès en https. Comme ça peut servir à d’autres (private : je vise personne :D ), voilà ma méthode.

1) Installation de python 2.5

Ajaxterm nécessite python pour fonctionner, donc il faut l’installer :

ipkg install python25

2) Installation d’ajaxterm

Téléchargez ajaxterm :

wget http://antony.lesuisse.org/software/ajaxterm/files/Ajaxterm-0.10.tar.gz

Extraire les fichiers :

tar -xzf Ajaxterm-0.10.tar.gz

Éditez le fichier ajaxterm.py et modifiez la ligne suivante en remplaçant localhost par l’IP de votre NAS :

qweb.QWebWSGIServer(at,ip='localhost',port=int(o.port),threaded=0,log=o.log).serve_forever()

Je ne sais pas pourquoi, je n’ai pas réussi sans cette manip. 127.0.0.1 ou localhost ne fonctionnent pas, il faut vraiment mettre l’IP de votre NAS sur votre LAN (192.168.0.X en général).

Copiez le dossier Ajaxterm-0.10 où bon vous semble, ajaxterm ne « s’installe » pas plus que ça. Tout ce qui est nécessaire est dans ce dossier, que vous pouvez mettre n’importe où.

Pour lancer ajaxterm, c’est tout simplement, dans le dossier Ajaxterm-0.10 :

nohup python2.5 ajaxterm.py

A ce stade, vous pouvez normalement accéder à ajaxterm à l’adresse : http://ip.de.votre.nas:8022/
ajaxterm

Mise en place de l’accès https par apache

Etant donné qu’il y a déjà un apache d’installé sur les NAS Synology, configuré de manière (très) particulière, et qu’il sert à accéder à l’interface d’administration du NAS, on va éviter de le casser :)
J’ai opté pour l’installation d’un second apache, avec ipkg :

ipkg install apache

Ce nouvel apache ne sera pas accessible sur le port 80 puisque celui-ci est déjà utilisé par l’apache d’origine. Par contre, il est à l’écoute sur le port 8000, et vous devriez avoir accès à la célèbre page « It works! » à l’adresse http://ip.de.votre.nas:8000

Pour info, l’arrêt/relance de ce nouvel apache se fait avec les commandes suivantes :

/opt/sbin/apachectl start
/opt/sbin/apachectl stop

Editez la configuration https d’apache : /opt/etc/apache2/extra/httpd-ssl.conf
Il faut apporter les modifications suivantes :

--------------------------------------------------------------------
Listen 443
Listen 4430 (vous pouvez mettre un autre port)
--------------------------------------------------------------------
<VirtualHost _default_:4430>
NameVirtualHost *:4430
<VirtualHost *:4430>
--------------------------------------------------------------------
DocumentRoot "/opt/share/www"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog "/opt/var/apache2/log/error_log"
TransferLog "/opt/var/apache2/log/access_log"
ServerName localhost
--------------------------------------------------------------------

Et ajouter les lignes suivantes juste avant la balise :

--------------------------------------------------------------------
ProxyRequests Off
    Order deny,allow
    Allow from all

ProxyPass /ajaxterm/ http://ip.de.votre.nas:8022/
ProxyPassReverse /ajaxterm/ http://ip.de.votre.nas:8022/
--------------------------------------------------------------------

Une dernière chose : il est plus propre d’utiliser le certificat déjà présent sur le nas. C’est tout simple :

rm /opt/etc/apache2/server.crt
rm /opt/etc/apache2/server.key
ln -s /usr/syno/etc/ssl/ssl.crt/server.crt /opt/etc/apache2/server.crt
ln -s /usr/syno/etc/ssl/ssl.crt/server.key /opt/etc/apache2/server.key

Relancez apache, et normalement c’est tout bon! Vous avez accès en https à votre ajaxterm à l’adresse suivante : https://ip.de.votre.nas:4430/ajaxterm/

ajaxtermhttps

Remarques

- Ajaxterm semble ne pas fonctionner sous Firefox 3.6 sous Linux. Je n’ai pas encore trouvé pourquoi. Ca fonctionne par contre correctement sous Chrome et Firefox 4.0 sous Linux, et sous toutes les versions de Firefox sous Windows (en fait ça fonctionne sans doute dans toutes les autres configurations…)
- Je ne suis pas sur de la fiabilité de la configuration apache donnée ici. Elle fonctionne mais je ne vous garantie pas qu’elle est sure à 100% vu que je n’ai pas encore vraiment compris l’organisation particulière de la configuration d’apache installée avec ipkg.

2 réponses à to “Installer ajaxterm sur un NAS Synology et y accéder en https”

  • [...] déjà parlé dans un précédent article d’ajaxterm, un client SSH web, et de la manière de l’intégrer à [...]

  • said:

    A la lecture de ton article, et je te cite :

    « Je ne sais pas pourquoi, je n’ai pas réussi sans cette manip. 127.0.0.1 ou localhost ne fonctionnent pas, il faut vraiment mettre l’IP de votre NAS sur votre LAN (192.168.0.X en général). » => En mettant ‘localhost’, tu ne pourras y accèder que localement(donc uniquement depuis le NAS) alors qu’en mettant une adresse ip de type ’192.168.0.1′, le site sera disponible à cette adresse. De plus tu peux aussi écouter sur toutes les interfaces disponible par ’0.0.0.0′

    Au plaisir de te lire ;)

Laisser un commentaire