Dropbox auf dem eigenen Server

Update: Inzwischen empfehle ich Syncthing auf dem Uberspace zu installieren.

Ich habe nun Dropbox auf meinem Webserver installiert. Das ist sehr praktisch. Denn: egal wo ich programmiere, ob an meinem iMac oder am Laptop, ich habe die aktuellen Dateien da und muss mir nicht erst die aktuellen Versionen über FTP vom Server holen. Überhaupt, das FTP Programm fällt eigentlich komplett weg; wenn ich Dateien hochladen möchte, ziehe ich sie einfach in den Dropbox-Ordner und alles passiert von selbst im Hintergrund. Wenn ich etwas an einem Script ändere und die Datei speichere, wird sie automatisch auf den Server hochgeladen. Ich habe automatisch ein zusätzliches Backup der verschiedenen Versionen und gelöschten Dateien in meinem Dropbox-Account. Dateien, die auf dem Webserver generiert werden (zum Beispiel sind alle Blogeinträge auf dieser Seite nur Texteinträge) werden automatisch auf meinen Rechner runtergeladen. (Die Daten liegen immer noch auch auf den Dropbox-Servern; es wird einfach noch zusätzlich mit dem Webserver synchronisiert)

Da ich meinen Server inzwischen bei Uberspace habe, ist das einrichten von Dropbox auch gar nicht so schwer:

  • über SSH-Shell auf dem Webserver einloggen
  • Dropbox auf dem Webserver installieren:
    $ cd ~ && wget -O - http://www.dropbox.com/download?plat=lnx.x86_64 | tar xzf -
    
    (siehe hier)
  • ~/.dropbox-dist/dropboxd starten
  • Die angezeigte URL mit einem Webbrowser aufrufen, um ein Dropbox-Konto zu verknüpfen
  • ~/.dropbox-dist/dropboxd als Daemon einrichten, damit er immer auf dem Server läuft (wie das bei Uberspace funktioniert, steht hier)
  • klappt alles, gibt es den Ordner ~/Dropbox/
  • hier rein kommt jetzt ein Symlink zum Inhalt des www-Verzeichnisses. Bei mir:
    $ ln -s /var/www/virtual/mh/ ~/Dropbox/wwwroot
    
    (mh ist der User auf dem Webserver, wwwroot heißt der Ordner dann in meiner Dropbox)
  • und schon sollte das syncen klappen …

ich habe mir der besseren Übersicht halber für meinen Webserver einen neuen Dropbox-Account angelegt. Mit diesem Account habe ich den Ordner wwwroot für meinen eigentlichen Dropbox-Account freigegeben. (Wenn man direkt seinen eigentlichen Account verknüpft, synct Dropbox natürlich ALLE Daten auf den Webserver (sie landen zwar nur im Ordner ~/Dropbox/ und sind vom Web aus nicht erreichbar - aber sie benötigen natürlich Platz und liegen dann noch an einem weiteren Ort). Wer das nicht möchte, kann selektives syncen anschalten und nur bestimmte Ordner synchronisieren lassen; dafür benötigt man ein Script, mit dem man Dropbox kontrollieren kann. Von Dropbox selber gibt es ein CLI-Script (Command-Line-Interface-Script, geschrieben in Python), das habe ich bei mir allerdings nicht zum Laufen bekommen. Die Lösung mit einem Zweitaccount schien mir eleganter und funktioniert hervorragend.)

Dropbox auf dem eigenen Webserver laufen zu lassen, bringt einiges an praktischen Vorteilen:

  • Backup der Dateien, falls man mal ausversehen etwas löschen sollte
  • Archivieren älterer Versionen
  • zum Hochladen oder Aktualisieren der Dateien muss ich sie einfach nur in meinen Dropbox-Ordner schieben; ohne ein FTP-Programm starten zu müssen
  • da mein selbst geschriebenes CMS auf Text-Dateien basiert, kann ich neue Blogeinträge usw. ganz einfach und ohne Probleme auf meinem Rechner schreiben, einfach in der Dropbox speichern, fertig
  • Einträge, die ich online schreibe (wenn ich unterwegs bin) werden automatisch auf meinen Rechner gesynct
  • egal an welchem Rechner ich arbeite - ich habe immer die aktuellen Dateien der Webseiten da, ohne sie neu runterladen zu müssen
  • ich kann mit meinem iPhone auf den wwwroot-Ordner zugreifen

Aus den Kommentaren:

  • Das CLI-Script zum Laufen bekommen:
    cd ~/bin/
    wget https://www.dropbox.com/download?dl=packages/dropbox.py
    chmod 700 dropbox.py
    mv dropbox.py dropbox
    
    (Danke Mate!)
  • Selektive Synchronisation: Die Lösung für die selektive Synchronisation ist, absolute Pfade statt relativen anzugeben. Das ist also falsch:
    python dropbox.py exclude add (/Dropbox)/Ordner
    
    Es muss lauten:
    python dropbox.py exclude add ~/Dropbox/Ordner
    
    Wobei "~" kurz für "/home/user" ist. (Danke Peter!)

dropbox.py mit Python 2.6

damit das CLI-Script bei mir laufen konnte, musste ich es mit Python 2.6 ausführen. Bei Uberspace funktioniert das so:

python2.6 ~/bin/dropbox.py status

(dieser Befehl gibt den aktuellen Status von Dropbox aus; syncing oder idle etc.)

Kirby

Kirby ist ein CMS von Bastian Allgeier, das komplett auf Dateien basiert, ohne Datenbank dahinter. Die Verbindung mit Dropbox ist hier perfekt. Ein kleines Tutorial hierzu: Kirby meets Dropbox

» Veröffentlicht am 12.02.2012 in den Kategorien Internet & Webentwicklung.

20 Kommentare

Thunderflash 13. Februar 2012, 13:05 Uhr

Klingt spannend!
Habe ich das richtig verstanden, dass die Daten nur noch auf deinen eigenen Server liegen und von Dropbox nicht mehr theoretisch eingesehen werden können?
Auf meiner Arbeit würde ich Dropbox gerne nutzen, da ist aber das Gegen-Argument dass dann Firmendaten auf fremden Servern liegen.

Max (maxhaesslein.de) 13. Februar 2012, 13:08 Uhr

Nein, es geht nur darum, dass die Daten vom Webserver automatisch synchronisiert werden. Die Daten liegen einfach ZUSÄTZLICH auf dem eigenen Server, allerdings auch immer noch auf den Servern von Dropbox.

Max (maxhaesslein.de) 16. April 2012, 10:20 Uhr

Falls du einen Cloud-Server auf deinem eigenen Server einrichten möchtest, kannst du dir http://owncloud.org/ mal näher anschauen.

Christoph (om.de) 26. April 2012, 15:10 Uhr

Es hat ein bisschen gedauert, weil ich mich mal wieder beim symlink vertippt habe, aber jetzt funktioniert es. Einfacher kann man Dateien nicht syncen.

Vielen Dank dafür.

Mate 27. Juni 2012, 17:46 Uhr

Vielleicht kann ich die Anleitung noch damit vervollständigen indem ich erzähle, wie ich das CLI-Skript benutze. Ich hab das einfach ins persönliche bin-Verzeichnis runtergeladen und mit cmod 700 ausführbar gemacht, und anschließend umbenannt von dropbox.py nach dropbox. Jetzt kann ich von überall dropbox aufrufen

cd ~/bin/
wget https://www.dropbox.com/download?dl=packages/dropbox.py
chmod 700 dropbox.py
mv dropbox.py dropbox

Peter 12. Juli 2012, 15:07 Uhr

Die Lösung für die selektive Synchronisation ist, absolute Pfade statt relativen anzugeben.

Das ist also falsch:
python dropbox.py exclude add (/Dropbox)/Ordner

Es muss lauten:
python dropbox.py exclude add ~/Dropbox/Ordner
Wobei „~“ kurz für „/home/user“ ist.

Ich hatte anfangs auch dieses Problem, und daher zwei Accounts, aber wirklich elegant ist es mit einem.

Mit den bereits genannten symlinks zu Dropbox wird das Uberspace schliesslich wirklich grossartig.

Florian 24. Juli 2012, 14:35 Uhr

Vielen Dank für die super Anleitung!

spektakel 13. November 2012, 14:26 Uhr

Wer Dropbox meiden möchte kann Owncloud in Verbindung mit Unison nutzen.

Adrian (adrianthomas.org) 7. Januar 2013, 19:32 Uhr

Hallo Max,

Vielen Dank für deinen sehr hilfreichen Blogeintrag! Ich versuche gerade das gleiche Setup auf Überspace hinzubekommen, habe jetzt jedoch das Problem das neue Dokumente und Ordner die ich auf Dropbox erstelle immer als Zugriffsrecht „777“ bekommen. Was habe ich falsch gemacht?

Genauere Infos habe ich für die Allgemeinheit auch im Kirby Forum gepostet:
http://getkirby.com/forum/general/topic:269

Danke!
Adrian

Kevin Lorenz (kevinlorenz.com) 2. April 2013, 14:33 Uhr

Alternativ zu Dropbox lässt sich mit dem Plugin SFTP für Sublime Text upload on save einrichten. Einmal die Serverdaten hinterlegt muss man sich keinen Kopf mehr drum machen, dass die Daten synchron sind.

Max (maxhaesslein.de) 16. Juni 2013, 11:52 Uhr

Wenn man Bittorrent Sync benutzt, fällt der Umweg über einen Drittanbieter, so wie Dropbox, komplett weg. Hier gibt es eine Anleitung: http://blog.mitterrutzner.pw/?p=10

ActionLuzifer 17. Juli 2013, 23:20 Uhr

@Peter

Es ist völlig ok absolute sowie relative Pfade anzugeben.

Ihr Versuch schlug wahrscheinlich fehl, weil mit dem führendem „/“ war die Pfadangabe keine relative, sondern eine absolute.
„Das ist also falsch:
python dropbox.py exclude add (/Dropbox)/Ordner

Somit sind die relativen:
python dropbox.py exclude add ~/Dropbox/Ordner
und absoluten Pfade:
python dropbox.py exclude add /home/username/Dropbox/Ordner
beide korrekt.

Falls man z.b. autocompletion nutzt, muss man noch den „/“ hinter dem Ordnernamen entfernen

weissertiger2 (blog.markus-mail.com) 15. August 2013, 22:22 Uhr

Super Anleitung. Kann mir noch jemand einen Tipp geben wie man Dropbox wieder Deinstalliert falls man es nicht mehr braucht?

Max (maxhaesslein.de) 16. August 2013, 13:43 Uhr

Hallo weissertiger2,

im Prinzip musst du den Daemon wieder entfernen (wie das geht steht im Uberspace-Wiki – http://uberspace.de/dokuwiki/system:daemontools#einen_daemon_entfernen ) und anschließend ~/.dropbox-dist/ sowie ~/Dropbox/ löschen. Eventuell auch noch das Python-Script löschen, falls du das laufen hast.

David 28. September 2013, 21:12 Uhr

hab das versucht, aber bekomme immer wieder die Meldung:

Unable to access the X Display, is $DISPLAY set properly?

(auf ueberspace.de)

Hat jemand eine Ahnung, wie sich das beheben lässt? An den zugriffsrechten auf dem Folder liegt es nicht… :(

Eckhard Rotte (erotte.de) 20. November 2013, 14:51 Uhr

Hallo,

Ich nutze die Dropbox seit geraumer Zeit für die Synchronisierung von Daten in einem Kundenprojekt.

Leider steigt die Dropbox unregelmässig aus, und funktioniert dann einfach nicht mehr.

Der Status gibt dann „Downloading XX Files“, mit stetig wachsender Anzahl aus.

Ich habe herausgefunden, dass Dropbox unter Linux Probleme mit Dateirechten hat und reparieren nun stündlich diese Rechte mit einem Script.
Heute streikt die Dropbox schon wieder mit den gleichen Symptomen. Alles, was wir an Informationen haben, ist der o.g. Status. Es gibt kein Logfile und wir können nur Raten und in den Nebel feuern.

Insofern kann ich nur von Dropbox abraten. Die Software ist nicht quelloffen, man hat wenig bis gar keine Diagnosemöglichkeiten und der Support ist ebenfalls mau. Super, wenns funktioniert, richtig kacke, wenns Probleme gibt.

Beim nächsten mal werde ich sicherlich eine andere Lösung wählen, z.B. owncloud. Oder gleich eine Lösung bauen, die ohne Syncing funktioniert – ein einfacher Upload mit rsync o.ä. hätte es in unserem Fall sicherlich auch getan.

Samuel 9. Dezember 2013, 13:47 Uhr

Leider habe ich auch das

Unable to access the X Display, is $DISPLAY set properly?

Problem auf uberspace. Hat da jemand schon einen Work-a-round gefunden?

Samuel 9. Dezember 2013, 14:05 Uhr

Solved the `Unable to access the X Display, is $DISPLAY set properly?` problem by `unset DISPLAY`.

Dropboxer 27. Dezember 2013, 19:22 Uhr

Hallo,

danke für die tolle Anleitung! Allerdings komme ich nicht weiter!

Ich habe den Daemon eingerichtet, allerdings erhalte ich keinen Ordner

~/Dropbox/ .

Hat sich bei Uberspace etwas geändert?

Danke!

Felix 29. April 2015, 11:46 Uhr

Danke für die gute Anleitung!
Ich hab mir Dropbox auf meinen Uberspace gemacht, einige Files excluded und lasse per Python-Skript einige Webseiten zu Vorlesungen meiner Uni durchsuchen und lade die neu hochgeladenen Skripte in die Dropbox. Das Ganze läuft alle 4 Stunden per runwhen.
Klappt einwandfrei!

Schreibe einen Kommentar