Wie letztens schon geschrieben, wollte ich mir GateOne anschauen, ein SSH-Terminal im Browser, das mit html5+css+js arbeitet.GateOne setzt auf Websockets, die mit html5 aufgekommen sind und benötigt daher auf einen Server mit Websocket Unterstützung – ein Apache ist da völlig ungeeignet, weder für Websockets noch als Proxy für Websockets. Daher hab ich ja den haproxy, der problemlos Websockets an den passenden Server weiterleitet.
Hier auch eine Anleitung zum Installieren: http://blog.yourtech.us/2012/08/exploring-gateone-browser-ssh-terminal.html
Zur Installation: zuerst wird das Python Framework tornado benötigt, was wohl ein python-Webserver darstellt. Ein
apt-get install python-tornado
unter Debian und gut wars.
GateOne möchte Tornado 2.* verwenden, debian bringt Version 1.* mit und die sind inkompatibel zueinander. Daher muss man pip install --upgrade tornado verwenden.
Weitere Abhängigkeiten : pip install ordereddict
Für die Faulen(mich) gibt es ein *.deb-Paket welches mit wget URL; dpgk -i Datei.deb installiert werden kann.
Zusammengefasst die Installation als root:
pip install --upgrade tornado; pip install ordereddict; wget https://github.com/downloads/liftoff/GateOne/gateone_1.1-1_all.deb; dpgk -i ateone_1.1-1_all.deb
Dann kann das Programm unter /opt/gateone/gateone.py gestartet werden, beschwert sich wenn was fehlt und generiert eine Config-Datei – weil es Spaß macht, crasht GateOne am fehlenden Port 443(https), der meinem Proxy gehört. Außerdem läuft es per default als root – gar nicht gut 😛
Die server.conf wird entsprechend angepasst:
port = 1443
uid = "1000"
gid = "1001"
disable_ssl = True # das ist Aufgabe meines Proxys
user_dir = "/opt/gateone/data/users"
log_file_prefix = "/opt/gateone/data/logs/webserver.log"
origins = "http://localhost;https://localhost;http://127.0.0.1;https://127.0.0.1;https://apps.dragonhort.de"
url_prefix = "/ssh/" # da die Subdomain auch noch anderweitig verwendet werden soll, wird gateone auf das /ssh/ subverzeichnis verwiesen.
Damit kann alles als User 1000 gestartet werden, die Order /opt/gateone/data/[users,logs,tmp] dem User überlassen, dass dieser Schreiben kann.
Vergisst man in origins die eigentliche Server-Url anzugeben, erhält man eine nette Fehlermeldung mit dem Hinweis, dass von dieser Domain kein Zugriff erfolgen kann.
url_prefix ist genau Richtig, wenn der Server an ein unterverzeichnis ohne Url-Rewriting gebunden wird.
Damit kann der Server per init-script gestartet und betrieben werden.