derobo.de/blog

Ich habe mir mal eine vernüftige Domain zugelegt, und einen kleinen V-Server auch noch Bigsmile. In Zukunpft schreibe ich hoffendlich wieder mehr Zeug in diesen Blog.

Da ich mit allen Blogsoftwares die ich bisher benutzt habe nicht zufrieden war hab ich mich Entschlossen. Ich wollte auch mal ein kleines Ruby On Rails Projekt machen, einfach um das Konzept von RoR besser zu verstehn. Hab mir auch nette Features wie Textile als Markup für meine Posts und die Comments, Syntaxhiglighting für Quellcode und ein paar andere schöne Sachen gemacht. So ganz zufrieden mit dem Aussehn bin ich noch nicht, vielleicht ändert sich da noch etwas Wink

Während dem Entwicklen des Blogs hatte ich auch ein paar Ideen für Posts. Also bis Bald!

Samsung SMT-G3210 (DSL-Router) als Webserver

Nach Langer Pause mal wieder ein Blogbeitrag von mir. Es geht um meinen Router über den ich hier schon ein paar Mal geschrieben habe. Was ich heute hier schreibe soll eine Anleitung sein wie man den SMT-3210 in einen Webserver konfiguiert. Zuerst wird das Adminpanel auf einen anderen Port gelegt, ein 2.ter Webserver liefer die Daten von einem USB-Stick aus und das ganze soll von Außen erreichbar sein.

Vorraussetzung :

  • Einen Samsung SMT-3210 (3200 und 3220 sollten auch gehn, aber ich konnte das nicht testen)
  • Eine modifizierte Firmware (google). Ich habe Version 3.02 getestet.
  • Einen Telnet-Client und später optimal SSH-Client
  • USB-Stick (kommt in den USB-Port auf dem Router)

Vorbemerkung:

Falls etwas schief geht lässt sich der Router über ein angeschlossenes Telefon resetten. Dazu wählt man am Telefon “#8312345”.

1. Schritt: Das Adminpanel

Ich will das Adminpanel das normalerweise auf dem Router läuft auch weiterhin benutzten, aber auf einem anderen Port. Dazu gehn wir zunächst per Telnet auf den Router. Wir connecten zu “samsung.router” auf dem Port 30023 mit den Logindaten “root” und “banana”.

Als erstes ändern wir das Passwort. Dazu “passwd” starten und das neue Passwort eingeben. Nun sichern wir das Passwort indem wir “cp /configs/etc/passwd /configs/etc/newpass” ausführen. Nun ist nach einem Reboot des Routers auch das neue Passwort erhalten. Als nächstes aktivieren wir den SSH Zugang. “/usr/sbin/dropbearkey -t rsa -f /configs/rsakey” ausführen und dann mit “reboot” den Router neustarten.

Nun können wir uns per SSH auf samsung.router mit dem neuen Passwort anmelden. Jetzt sichern wir die Config des Webservers bevor wir was verändern. Dazu führen wir “cp /configs/etc/thttpd.conf /configs/etc/thttp.conf.backup” aus. Nun öffnen wir die Datei “/configs/etc/thttpd.conf” (vi ist auf dem router, ansonsten per SSH downloaden und auf dem normalen Rechner editieren und wieder hochladen). Was uns interessiert ist die erste Zeile “port=80”. Die änderen wir ind “port=8080”. Nach dem nächsten Reboot läuft der Standartwebserver nun auf http://samsung.router:8080/.

2. Schritt: Der neue Webserver

Ich möchte alle Veränderungen auf einem USB Stick haben und von da Ausführen. Der interne Speicher ist sehr beschränkt und den sollten man nicht voll machen. Der USB-Stick wird in “/ramdisk/mnt/usb-storage” gemountet (in meinem Fall /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0). Ich habe meinen USB-Stick folgende Ordnerstruktur gegeben :

  • /bin/ für Shellscripts und Programme
  • /config/ für Configuarationsdateien
  • /www/ für die Daten des Webservers

Wir erstellen zunächst die Config. Dazu erstellen wir in /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/config/thttpd.conf mit dem Inhalt:

1
2
3
4
5
6
7
8
port=80
nochroot
user=root
dir=/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/www/
cgipat=cgi-bin/*.cgi
charset=iso-8859-1
nosymlink
max_upload=12582912

Danach machen wir “cp /usr/sbin/thttpd /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/” und erstellen /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/thttp_wrapper mit dem Inhalt:

1
2
3
4
5
6
7
8
#!/bin/sh
basedir=/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0
thttpd=$basedir/bin/thttpd
while true; do
    $thttpd -D -C /mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/config/thttpd.conf -i /var/run/thttpd_alt.pid > /dev/null
    sleep 1
    rm -f /var/run/thttpd_alt.pid
done

Dieses Script startet den Server und startet ihn auch neu falls er mal abstürzen sollte (was ich bisher nicht erlebt habe).

Nun erstellen wir die Datei /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin//www/index.php mit dem Inhalt:


<?php echo phpinfo(); ?> 

Nun könnten wir den Webserver starten mit der thttp_wrapper. Allerdings müssten wir das nach jedem Reboot manuel starten. Also müssen wir noch was tun.

3. Schritt: Den Webserver starten

Wir erstellen die Datei /configs/rc.local :

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
if [ -d /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0 ]
then
    echo "staring webserver on port 80"
    /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/thttpd_wrapper &   
else
    echo "usb-drive not found, retry in 10 seconds"
    sleep 10
    /configs/rc.local
fi

Das Sorgt dafür das unser Webserver gestartet wird sobald der USB-Drive im Router gemountet wurde. Nach einem Reboot sollte nun alles laufen. Also “reboot” eingeben und dannach auf “http://samsung.router” gehn. Die Seite erscheint. Nun sind wir erstmal fertig. Aber die Seite ist von außen nicht erreichbar, noch nicht.

4. Schritt: DynDns

Wir gehn in das Adminpanel auf http://samsung.router:8080/. Unter Firewall → Fernzugriff seten wir Modus auf “erlauben”. Nun kann man von außen auch auf den Server zugreiffen, sofern man die IP weiß. Um das zu vereinfachen benutzten wir Dynamisches DNS. Dazu auf dem Router zu “Internet→Dynamisches DNS” gehn. Hier kann man einige Anbieter aussuchen. Ich habe aber nur dyndns ausprobiert. Hier die Accountdaten eingeben. Nun ist euere Router von außen auch als Webserver erreichbar.

Was wir haben :

  • Einen Webserver mit PHP (leider ohne Datenbank) und leider in der Version 4.3 (scheiß class-system und xml ist auch nicht besser) der Zuhause steht, leise und stromsparen ist. Dazu unlimited Traffig (wenn auch nur mit geringem Upload). Webspace hängt vom USB-Stick ab (ich benutzte derzeit 4GB)
  • Leider ist das AdminPanel des Routers auch von außen erreichbar. Dazu schriebe ich noch was. Derzeit einfach ein gutes Passwort einstellen Wink

Kostenloser Webspace …

Seit ner guten Woche war mein Blog nicht erreichbar. Das Problem war das ich bei einem kostenlosen Anbieter von Webspace bin. Nur hatte mein Anbieter einige Probleme (angeblich wurde er gehackt). Naja, bin jetzt bei einem anderen Anbieter und hab mir mal eine Addresse zu gelegt dich ich beliebig umleiten kann Bigsmile.
Leider hab ich die gesamte Datenbank verloren, so dass ich alle Einträge manuel wiederherstellen muss :/