AZ's Blog » Server https://azapps.de Einmal mit Profis arbeiten… Sat, 28 Jun 2014 13:46:52 +0000 de-DE hourly 1 http://wordpress.org/?v=4.2.4 Phusion Passenger und Apache mit Debian https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/ https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/#comments Thu, 03 Jan 2013 18:49:06 +0000 https://azapps.de/?p=284 Debian… dieser Hort uralter Software – Aber man muss es halt nutzen. In den Debian–Stable repos ist Ruby 1.8. eingetragen. Aktuell ist aber Ruby 1.9.3. Die Installation von Rails und vor allem dem Phusion Passenger gestaltete sich für mich ziemlich schwierig. Wie es trotzdem klappt, kannst du hier nachlesen.

Ruby installieren

Die Ruby–Version aus der Paketverwaltung kann man wie gesagt vergessen. Also müssen wir rvm nutzen. Am praktischsten ist es, rvm gleich Systemweit zu installieren:

curl -L https://get.rvm.io | sudo bash -s stable

Wichtig ist hier, den Befehl nicht als Root, sondern mit sudo auszuführen, weil rvm einige Variablen benötigt, die mit root anders gesetzt sind
Dann installierst du dir die aktuelle Ruby–Version:

rvm install 1.9.3
rvm use 1.9.3

Nun habe ich mir meine Rails–Applikation geholt und die benötigten Gems mit

bundle install

installiert.

Phusion Passenger einrichten

Passanger installieren:

gem install passenger

Nun muss noch das Modul für Apache installiert werden:

rvmsudo /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18/bin/passenger-install-apache2-module

Den Pfad zur Installation musst du Gegebenenfalls anpassen.
Jetzt nur noch die Apache Konfiguration anpassen und danach kann es losgehen:

Füge folgende Zeilen am Ende der /etc/apache2/apache.conf (o.ä.) hinzu:

   LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0
.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18
   PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p362/ruby

Dann erstellst du einen neuen Virtuellen Host: (z.B. /etc/apache2/sites-enabled/yourhost.com.conf)

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

Danach musst du die Seite aktivieren und dann Apache neu laden (oder neu starten):

sudo a2ensite yourhost.com.conf
sudo service apache2 restart

Anwendung vorbereiten

Wenn noch nicht getan, solltest du genau jetzt

bundle install

durchführen. Danach erstellen wir die Datenbank und kompilieren die Assets vor:

rake db:migrate RAILS_ENV="production"
bundle exec rake assets:precompile

Wenn du nun deine Seite aufrufst, sollte alles Funktionieren. Wenn eine Leere Seite mit irgendwas mit „Sorry“ kommt, schau in deinen Logs nach: /var/log/apache2/error.log Wenn eine Phusion–Passanger–Fehlerseite kommt, dann lies nach, was dort steht.

Mehr dazu unter…

]]>
https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/feed/ 0
Volles Server Backup mit rsync und SSH https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/ https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/#comments Sun, 16 Dec 2012 20:41:35 +0000 https://azapps.de/?p=188 Ich hatte das Problem, dass ich mal ein volles Backup meines Servers ziehen wollte, aber über SSH keinen root–Zugang habe. (Das ist auch gut so). Die Lösung habe ich dann schlussendlich hier gefunden: https://crashingdaily.wordpress.com/2007/06/29/rsync-and-sudo-over-ssh/

]]>
https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/feed/ 0
Owncloud Design zerschossen? https://azapps.de/blog/2012/11/19/owncloud-design-zerschossen/ https://azapps.de/blog/2012/11/19/owncloud-design-zerschossen/#comments Sun, 18 Nov 2012 23:31:18 +0000 https://azapps.de/?p=179 Ich habe mir Owncloud eingerichtet und nach dem einloggen hat es immer das Design vollkommen zerschossen. Grund für den ziemlich alten Bug ist die zlib–Kompression von PHP. Eine schöne Lösung dafür habe ich bislang nicht gefunden. Ich musste leider die Kompression ausschalten.

Ändere dazu folgende Zeile in der /etc/php5/apache2/php.ini (Debian):

zlib.output_compression = Off

Nun funktioniert Owncloud wieder, nur werden die Seiten ab sofort leider nicht mehr komprimiert und es werden somit mehr Daten über die Leitung geschickt

]]>
https://azapps.de/blog/2012/11/19/owncloud-design-zerschossen/feed/ 0
Und jetzt hab ich ‚nen Igel – Wer braucht denn schon Himbeeren? https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/ https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/#comments Sat, 17 Nov 2012 23:21:11 +0000 https://azapps.de/?p=167 3,2,1, meins…¹ Hups jetzt hab ich nen Igel. Einen was? Einen Igel, also genauer einen Igel 3/4 3210. (Die haben Humor…) Eigentlich gedacht als ThinClient für Unternehmenszwecke wird mein Igel mir wohl als Server für private Zwecke dienen.

Was ist drinne?

Die Ausstattung ist nicht gerade Leistungsstark. Das Innenleben besteht aus einem VIA Eden Prozessor, der mit sage und schreibe 600MHz getaktet ist. Dem steht ein OnBoard Grafikchip zur Verfügung, welcher sich den Speicher wie üblich vom RAM (256MB) abzwackt – Das stimmt nicht ganz, 16MB sind fest verlötet.

Klingt nicht schnell, aber für meine Anwendungen wirds hoffentlich reichen. Weitere Austattungsmerkmale

  • Der Igel hat eine RS232–Schnittstelle (seriell), welche vor allem für Spielereien mit Microcontrollern ganz praktisch ist.
  • VGA und DVI sind vorhanden (wer’s braucht).
  • leider nur 3 USB–Ports
  • leider nur schwachbrüstiges Ethernet (10/100MBit)
  • Kartenleser (wohl für Chipkarten wie Kreditkarten und so)
  • Paralleler Port (Für uralt–Drucker)
  • PS/2
  • Line–in und Line–Out (Besser als mein Thinkpad, das hat nur einen Ausgang…)
  • Freier IDE–Steckplatz

Dafür ist er ziemlich klein und passt auch in engere Löcher in Regalen rein,  verbraucht für sein Alter kaum Strom (~15 Watt) und hat keinerlei bewegliche Bauteile – Demzufolge also lautlos. Das einzig nervige ist die grell leuchtend blaue Status LED. Die blinkt zum Glück aber nicht und lässt sich leicht überkleben

Für die knapp 5€ (+5€ Versand) die ich für den bezahlt habe, ist das ganz passabel.

Was mach ich nun damit?

Obwohl als reiner ThinClient entworfen, lässt sich der Rechner natürlich wie jedes andere System nutzen. Einfach das Gehäuse aufschrauben, eine CF–Karte in den Steckplatz stecken (Größer=Besser). Dann einen USB–Stick z.B. mit einem Debian–Netinstall–Image einlegen und das Linux installieren. Dann funktioniert alles wie gewohnt. Eine grafische Oberfläche braucht man natürlich nicht, soll ja ein Server werden.

Soundserver

Ich hab ein Uralt–Soundsystem herumstehen und das hat ein nur 1,5m langes Klinkenkabel. Außerdem nerven Kabel am Notebook (Vor allem, wenn das Soundsystem ungünstig positioniert ist). Deshalb soll der Igel ab sofort für die Soundausgabe zuständig sein.

Printserver

Noch so ein leidiges Thema. Einen Printserver wünsche ich mir schon seit langem. Gründe sind die selben: kurze und nervige Kabel. Auch da soll der Igel Abhilfe schaffen.

Router

Naja zumindest sowas in der Art. Ich habe noch ein paar WLAN–Sticks rumliegen und mach mir wohl in der WG noch ein privates Funknetz auf. Warum? 1. Weil ichs kann. 2. Will ich dann meinen Internetverkehr von meinen Endgeräten in einem von mir kontrollierten Punkt bündeln und den dann weiterverteilen. Wie genau ich mir das vorstelle, weiß ich selbst noch nicht – Mir schwebt ein VPN mit meinem Server oder vorerst dem Uninetz vor.

DNS–Server mach ich mir auch noch drauf, damit ich keine blöden /etc/host Dateien pflegen muss. Dann kann ich direkt auf mein zukünftiges Handy zugreifen 😀

Fileserver

Vielleicht wirds auch noch nen Fileserver geben. Aber dafür hat die lahme Kiste wohl nicht genug Ressourcen um in halbwegs annehmbarer Geschwindigkeit auf meine verschlüsselte externe Festplatte zu schreiben.

Und warum eigentlich kein Raspberry Pi?

Ich glaub, meins ist in den Weiten von Farnells Lagerhallen verschollen :( Darum muss ich mich kümmern, aber die Bestellung ging ja nicht über mich, also wirds noch etwas stressig. Außerdem ist der Preis natürlich nicht zu vergleichen. Ich hab 1/4 vom Preis vom Raspberry bezahlt. Ganz davon abgesehen sind Raspberry Pi’s Mainstream und somit voll öde (Genau so wie ArchLinux) 😉

¹ Natürlich liegt das Copyright an dem Spruch bei ebay.

]]>
https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/feed/ 4
msmtp für E-Mailversand (auch für PHP) https://azapps.de/blog/2012/08/07/msmtp/ https://azapps.de/blog/2012/08/07/msmtp/#comments Tue, 07 Aug 2012 09:30:54 +0000 https://azapps.de/?p=52 Wenn man keinen eigenen Mailserver laufen hat und trotzdem E-Mails vom Server aus verschicken möchte, kann man einfach einen vorhandenen SMTP-Server nutzen und den E-Mail-Versand darüber abwickeln. Dafür eignet sich das Paket MSMTP hervorragend. Es ist einfach zu konfigurieren und sehr flexibel.

Bis vor kurzem habe ich SSMTP benutzt, doch dieses Paket wird laut ArchWiki seit 2009 nicht mehr weiterentwickelt. Außerdem ist MSMTP wesentlich flexibler, da man viele unterschiedliche Accounts nutzen kann.

Installation und Einstellungen

Die Installation geht wie immer ganz einfach über deinen Paketmanager:

sudo aptitude install msmtp

Wenn du zentrale Accounts nutzen willst, von denen aus jeder auf deinem Server E-Mails verschicken kann, dann erstelle die Datei /etc/msmtprc mit folgendem Inhalt:

defaults
tls on
tls_starttls off
tls_trust_file /etc/ssl/certs/smtprelaypool.cer

account default
host smtprelaypool.ispgateway.de
port 465
user foo@example.com
password geheim
auth plain
from foo@example.com
logfile /var/log/msmtp.log

Das sind die Einstellungen, die du brauchst, wenn du E-Mails über einen Provider verschickst, der den ispgateway.de nutzt. Bei GMail musst du darauf achten, den Port auf 587 zu setzen. Bei einigen Servern solltest du auch statt »auth plain« »auth on« benutzen. Ansonsten ist die Datei selbsterklärend. Bei dem Zertifikat lohnt es sich erst zu schauen, ob es nicht schon hier vorhanden ist: /etc/ssl/certs/ca-certificates.crt. Ansonsten gibt es das aktuelle Zertifikat bei deinem Provider.

Das tolle an MSMTP ist, dass du mehrere Accounts anlegen kannst: Erstelle einfach einen neuen Abschnitt in der gleichen Datei, der mit account ACCOUNTNAMEanfängt, den Rest kannst du von oben abschauen. Außerdem kann jeder Nutzer eine unter ~/.msmtprc seine eigenen Accounts anlegen.

Testen

Um zu testen, ob der Versand funktioniert kannst du einfach folgenden Befehl nutzen:

echo -e "Subject: Test Mail\r\n\r\nDas ist eine Test-Mail" |msmtp --debug --from=foo@example.com -t bar@example.com

Bei –from trägst du bitte die E-Mail die in der Konfiguration bei from steht ein. und -t ist die Empfängeradresse. Wenn es nicht klappt, dann musst du schauen, was du in der Konfigurationsdatei falsch gemacht hast. Du kannst relativ einfach aus den Log-Meldungen ablesen, was den Fehler verursacht hat.

PHP Konfigurieren

Damit PHP die E-Mails über diesen Account E-Mails verschickt, musst du nur eine Zeile in der PHP.ini ändern (/etc/php5/apache2/php.ini):

sendmail_path = /usr/bin/msmtp -t

Danach noch schnell den Apache neu starten und fertig.

Mit diesem PHP-Skript kannst du ganz einfach testen, ob alles geklappt hat:

if ( mail ( 'foo@example.com', 'Test mail', 'Es funktioniert.' ) );
echo 'Mail wurde gesendet';
else
echo 'Fehler';

Quellen

http://www.absolutelytech.com/2010/07/17/howto-configure-msmtp-to-work-with-gmail-on-linux/

]]>
https://azapps.de/blog/2012/08/07/msmtp/feed/ 2
ZeroBin https://azapps.de/blog/2012/08/06/zerobin/ https://azapps.de/blog/2012/08/06/zerobin/#comments Mon, 06 Aug 2012 21:10:48 +0000 https://azapps.de/?p=39 Es kommt öfter mal vor, dass man mal längere Textausschnitte (z.B. Log-Meldungen oder Programmcode) posten möchte, aber man es nicht unbedingt per E-Mail senden, oder in einem Forum eintragen will.

Dafür gibt es seit langer Zeit das tolle Tool PasteBin. Einziges Manko: Die Sachen werden unverschlüsselt gespeichert. Vor einiger Zeit hat Sébastien Sauvage das tolle Tool ZeroBin veröffentlicht, welches Einträge per JavaScript verschlüsselt. So sieht der Server nie, was eigentlich geschrieben wurde.

Ich habe nun einen eigenen ZeroBin-Server laufen, und zwar hier: zero.azapps.de.

Noch ein paar  technische Informationen und Tipps zur Installation:

Technische Informationen

URL

Die URL eines Eintrags ist folgendermaßen aufgebaut:

http://zero.azapps.de/?4c31c4883b6dd29f#A5rWM2NAkRD8QMbaADmDT2fHMaXSwwz2rs09JQVO9Nk=

Der Interessante Teil ist logischerweise der nach dem »?« .

Als erstes steht dort die ID des Eintrags (4c31c4883b6dd29f). Dies ist einfach eine JSON-Datei auf dem Server, die sich PHP holt und an den Browser schickt. Soweit so gut, aber der Interessante Teil ist der nach der Raute. Das ist der Schlüssel zum Ent– und Verschlüsseln. Dieser wird vom Browser nicht an den Server geschickt, also kann der Server selber die Daten nicht entschlüsseln, und außerdem kann man auch über einen unsicheren Kanal mit dem Server kommunizieren, ohne dass ein Angreifer mitlesen kann. Es ist natürlich klar, dass, sobald der Key dem Angreifer bekannt ist, er alles mitlesen kann.

Verschlüsselung

Das eigentlich interessante an ZeroBin ist die Verschlüsselung und Entschlüsselung. Diese funktioniert nämlich im Browser und basiert auf AES-256. Das ist zum heutigen Zeitpunkt ein ziemlich guter Verschlüsselungsalgorithmus. Da dieser Symmetrisch ist, kann man sogar Konversationen mit einem einzigen Schlüssel führen.

Die JavaScript-Implementierung des Algorithmus stammt von der Stanford–Universität: Stanford Javascript Crypto Library.

Installation

Lade dir das aktuelle Script hier herunter, oder noch besser, klone es dir aus dem Git-Repo:

git clone git://github.com/sebsauvage/ZeroBin.git

Dann lege noch folgende Ordner an:

mkdir data
mkdir tmp

Der data-Ordner ist für die Text(JSON)-Dateien (ZeroBin braucht keine Datenbank) und der tmp-Ordner ist für das Template (RainTPL) da. Logischerweise müssen beide Ordner für PHP beschreibbar sein:

chmod 777 -R tmp/ data/

Das wars auch schon. Viel Spaß mit ZeroBin.

Ich werde vielleicht noch versuchen einen Syntax-Highlighter und einen Datei-Upload (Unverschlüsselt :( ) für ZeroBin zu basteln.

]]>
https://azapps.de/blog/2012/08/06/zerobin/feed/ 0
Eigener Jabber-Server https://azapps.de/blog/2012/08/05/eigener-jabber-server/ https://azapps.de/blog/2012/08/05/eigener-jabber-server/#comments Sun, 05 Aug 2012 13:55:13 +0000 https://azapps.de/?p=24 Ein eigener Jabber-Server. Das wollte ich schon seit Jahren. Doch irgendwie bin ich nie dazu gekommen. Eigentlich ist es ganz einfach einen eigenen Server aufzusetzen, man muss nur wissen, wie.

Einführung

Warum eigentlich Jabber?

Man kann ja auch ICQ, AIM, Facebook-Chat, Google-Talk oder die Dienste der 1&1 Mail & Media GmbH (Web.de, GMX,1&1) nutzen. Aber: willst du deine mehr oder weniger wichtigen Chats über irgendwelchen Dubiosen Firmen aus Russland (ICQ), USA (AIM, FB, Google) oder Deutschland (der Rest) laufen lassen. Wer garantiert dir, dass da niemand mitliest? Und warum muss ICQ & Co solche blöden AGB’s haben. Die wollen auch Geld verdienen – und womit? Mit deinen Daten.

Außerdem: Google, Facebook und 1&1 nutzen auch XMPP (Das Protokoll hinter Jabber). Für Facebook brauchst du dafür einen Nutzernamen und ich weiß nicht, ob man da auch nach „draußen“ Kommunizieren kann.

XMPP ist ein freies Protokoll, welches dir ermöglicht, Kontrolle über deine Daten zu behalten. Außerdem kannst du über XMPP auch mit Google-Talk und den 1&1-Webchats kommunizieren.

Wozu einen eigenen Jabber-Server?

Es gibt so viele kostenlose Jabber-Server im Netz, warum sollte ich mir einen eigenen zulegen?

Der Gedanke hinter Jabber war, ein dezentrales Netz aufzubauen, wo sich jeder mit jedem über alles Unterhalten kann. Deshalb ist es die Philosophie hinter Jabber, dass jeder seinen eigenen Server hat.

Außerdem ist es doch einfach cooler eine eigene Adresse zu haben 😉 Aber es gibt noch mindestens zwei Vorteile: 1. Ich hab alles in meiner Hand und 2. Nervt es mich, wenn irgendwelche Jabber-Server ständig abstürzen, und ich kann nichts machen. So ging es mir bei jabme.de und deshalb habe ich mich für meinen eigenen Server entschieden.

Einrichtung des Servers

Installation

Ich habe mir unterschiedliche Server angeschaut und habe mich im Endeffekt für Prosody entschieden, weil dort alles so funktioniert, wie ich es benötige und es einfach einzurichten ist.

Als erstes installierst du den Server. Am besten mit der Paketverwaltung deines Betriebssystems.

apt-get install prosody

Globale Einstellungen

Danach sind noch wenige Handgriffe zu tun. Die Globalen Einstellungen findest du meistens in /etc/prosody/prosody.lua.cfg.

Am besten du definierst dir gleich einen Admin-Account:

admins = {"admin@example.com" }

Weiter unten kannst du noch einige Module aktivieren oder deaktivieren. Das register-Modul solltest du auf jeden Fall aktiviert lassen, auch wenn du keine Registrierungen zulassen willst, denn so kannst du ganz einfach dein Passwort über deinen Client ändern.

Um Registrierungen zuzulassen ändere einfach folgende Zeile:

allow_registration = false;

Wenn du mit Google-Accounts chatten willst, musst du leider die Server–zu–Server Verschlüsselung ausschalten:

s2s_require_encryption = false

Es gibt auch noch veraltete Clients, die keine Verschlüsselung unterstützen, doch auf die solltest du verzichten. Wenn das nicht geht, musst du c2s_require_encryption auch auf false setzen.

Konfiguration für eine Domain

Das schöne an Prosody ist, dass du beliebig viele Domains auf einem Server betreiben kannst. Um eine neue Domain zu aktivieren, kopiere einfach /etc/prosody/conf.avail/example.com.cfg.lua nach /etc/prosody/conf.d/example.com.cfg.lua. Benenne die Datei am besten gleich mit um.

Folgende Zeilen solltest du anpassen:

VirtualHost "example.com"

Setze enabled auf true, oder kommentiere diese Zeile aus. Bennene die Zertifikatsdateien (key und certificate) um, wir werden später neue Zertifikate erstellen. Es ist sinnvoll für jede Domain ein eigenes SSL-Zertifikat zu haben.

Das war es eigentlich. Erstellen wir noch ein SSL-Schlüsselpaar:

 openssl req -new -x509 -days 365 -nodes -out "example.com.cert" -keyout "example.com.key"

Nun kann es losgehen. Nur noch schnell den Server neu starten:

/etc/init.d/prosody restart

Nutzer erstellen

Um einen neuen Nutzer zu erstellen, rufe einfach folgenden Befehl auf:

prosodyctl adduser foo@example.com

DNS-SRV Records setzen

Um mit Google-Accounts zu kommunizieren musst du noch deinen DNS-Record bei deinem Domain Anbieter erweitern:

_jabber._tcp.example.com.       IN SRV   0 0 5269   example.com.
_xmpp-server._tcp.example.com.  IN SRV   0 0 5269   example.com.
_xmpp-client._tcp.example.com.  IN SRV   0 0 5222   example.com.

Vergiss nicht den Punkt am Ende.

[UPDATE]Eventuell musst du deinen Domain-Anbieter bitten, diese Einträge zu setzen. Bei mir (united-domains), ist es leider nicht möglich, dies selbständig zu erledigen[/UPDATE]

Was noch zu beachten wäre

Leider speichert prosody die Passwörter als Klartext. Das wird damit gerechtfertigt, dass einige ältere Programme damit sonst nicht klarkommen. Ich finde das schade. Also wähle nicht unbedingt das stärkste, und vor allem nicht dein root-Passwort für den Server. Wenn jemand in den Server einbricht hat er sonst alles, was er braucht.

Sicherheit

Irgendwie kann man ja doch abgehört werden. Deshalb empfehle ich dir stets OTR zu nutzen. Das gibts sogar für Windows.

Quellen

Prosody: http://prosody.im/
DNS-SRV: http://www.kernel-error.de/kernel-error-blog/124-dns-konfigurieren-um-die-xmpp-information-zu-verteilen
OTR: http://www.cypherpunks.ca/otr/

]]>
https://azapps.de/blog/2012/08/05/eigener-jabber-server/feed/ 2