Jak zrobić własny serwer Dropbox / Ubuntu One w domu?


70

Czy ktoś wie o jakichkolwiek zasobach, które mogłyby pokazać mi, jak zrobić własny serwer „Dropbox, Ubuntu One” w domu?

Bardzo podoba mi się pomysł tych usług, ale nie chcę umieszczać swoich „rzeczy” w chmurach. Idealnie powinien mieć klienta działającego w systemie Linux i Windows.

Próbowałem skonfigurować iFolder na moim Ubuntu 10.04, ale jak dotąd bez powodzenia.


Nie jestem pewien, czy rozumiem problem. Co jest nie tak z Dropbox?
Oli

Ma pewne limity miejsca i przy wielu współpracownikach przy wielu projektach, ci, którzy zapłacili 50 GiB, giną dość szybko.
Henrik

4
Zezwolenie firmom takim jak Dropbox na przechowywanie naszych danych osobowych może mieć nieprzewidziane konsekwencje. Na szczęście, istnieje projekt trwa do systemu operacyjnego, który można uruchomić własną chmurę prywatnego na ARM zasilany komputerze plug-stylu.
daithib8

2
Ironiczne, że to nie jest tak proste jak sudo apt-get install ubuntu-one-server.
Prateek

Odpowiedzi:


41

Obecnie nie ma świetnej alternatywy typu open source, która działałaby od razu po wyjęciu z pudełka. Najlepiej mieć na oku projekt sparkleshare: http://www.sparkleshare.org/

Mam nadzieję, że rozwinie się to w świetną, zrób to sam, alternatywę.


2
Niestety używa git DVCS jako backendu nieprzystosowanego do ~ 1 TB danych binarnych, ponieważ modyfikacje danych binarnych spowodują nadmierne zużycie miejsca na serwerze. Ale poza tym wygląda obiecująco.
matematyka

44

Jest ich naprawdę dużo.

  • SparkleShare (zależnie: git / subversion, mono, python) w oprogramowaniu do synchronizacji opartym na GUI github .

    za. Wersjonowanie: poprzez system kontroli źródła, a więc oparty jest na muteksie na centralnym serwerze poprzez numer wersji.

    b. Stan: w przygotowaniu

    do. Plusy: OSS, tak łatwo modyfikowalny mono, Wady: proces na poziomie użytkownika, zależny od GC, nieefektywny protokół udostępniania według rzędów wielkości, ponieważ git jest przede wszystkim dla małych plików tekstowych, dość trudny do skompilowania (próbowałem). Korzystanie z narzędzi wysokiego poziomu.

  • Lipsync (deps: Unison, rsync) oprogramowanie oparte na usługi linii poleceń.

    za. Wersjonowanie: poprzez algorytm delta rsync . Zakładam, że programista musi wybrać rozwiązanie konfliktu.

    b. Stan: Nie mogę znaleźć jego kodu źródłowego, więc nie mam pojęcia. Jedynymi rzeczami w jego repozytorium git są binaria.

    do. Plusy: niezła konfiguracja, użycie narzędzi średniego poziomu.

  • iFolder - Dropbox firmy Novell. Nie badałem jeszcze jego źródła. Chcę tylko zakończyć tę edycję i jeśli ludzie będą zainteresowani, dodam więcej.

    za. Wersjonowanie:

    b. Stan: Problematyczne jest nawet skompilowanie go na Ubuntu, nie mówiąc już o pakietach. Oto szczegółowy przewodnik instalacji .

    do. Plusy: klient Windows X64, dojrzały, integracja AD z listami kontroli dostępu, funkcje, których żaden inny projekt nie rozpoczął. Myślę, że może to być dobry punkt wyjścia. Minusy: Novell może nie używać swojej publicznej repozytorium svn jako podstawowej repozytorium i jedynie upuszczać kod. Nie wiem jednak dokładnie o tym. Może być zbyt sprzężony z openSUSE, aby łatwo zainstalować na Ubuntu. Aby sprawdzić jego algorytmy.

  • scp / rcp - przestarzałe na rzecz rsync

  • DRDB - blokuje narzędzia do tworzenia kopii lustrzanych urządzeń dla rozproszonej RAID-1, tj. Wariant serwera Dropbox. Nie sprawdziłem jeszcze jego kodu źródłowego, ale jest to tylko Linux. Rzeczywisty algorytm byłby prawdopodobnie łatwy do połączenia z kodem źródłowym w moich rozważaniach poniżej tej listy oprogramowania.

    za. Wersjonowanie: wewnętrzny format wiadomości przez LAN / WAN

    b. Stan: wydaje się wystarczająco dojrzały

    do. Plusy: wystarczająco stabilne dla systemu Linux, Wady: nie są obsługiwane żadne inne systemy operacyjne


Obecnie badam poprawę czasów kompilacji w zwirtualizowanym systemie Windows 7, gdzie czasy kompilacji w systemie Windows 7 na metalu wynoszą 40 s, ale zwirtualizowane około 3 mln 20s. Zastanawiam się nad napisaniem sterownika ioctl, który jest pamięcią podręczną zapisu, która wygląda jak dysk RAM dla wybranych folderów w systemie plików NTFS.

Korzystając z powyższego oprogramowania, myślę, że tygodniowy program rozwoju dla 2-3 osób w pełnym wymiarze czasu wytworzyłby użyteczną Alphę, która nie straci plików przez połączenie powyższych programów.


W moim systemie ogólną ideą byłoby:

  1. Zamontuj dysk wirtualny \? {GUID}, czyli dysk RAM i pamięć podręczną RW. Oprogramowanie tworzące ten dysk wirtualny przyjmuje dwa parametry wejściowe (istotne):

    za. Folder docelowy; to jest folder SMB, więc pozwolę stosowi sieciowemu systemu operacyjnego obsłużyć faktyczne operacje wejścia / wyjścia. W moim przypadku jest to z kolei wirtualny folder VMWare, który sam w sobie ma cel na dysku ext4, ale może to być twój serwer plików korzystający z SAMBA / SMB.

    b. Ścieżka folderu do zamontowania, np. C: \ ramdisk

    Ten kod do tworzenia wirtualnych woluminów pochodzi z kodu TrueCrypt , w /Driver/DriverFilter.c (między innymi plikami)

  2. Dysk korzysta z protokołu SMB / protokołu VMWare / sieciowego do pobierania danych podczas uruchamiania; pobiera z niskim priorytetem zadania, asynchronicznie z sieci i zapełnia pamięć podręczną. Może korzystać z prostego algorytmu kompaktowania i mieć 1 wątek, który wykorzystuje przekazywanie kontynuacji typu komunikatu w celu uzyskania doskonałej wydajności. W systemie Windows może używać normalnych asynchronicznych wywołań we / wy, a w systemie Linux może korzystać z implementacji epoll / inotify i pobierać kod z nginx .

  3. Moja usługa, która jest dyskiem RAM, montuje nienazwany dysk RAMDISK jako folder NTFS. Wszystkie programy mogą kontynuować pisanie do C: \ ramdisk lub jakkolwiek to nazywam.

  4. Kopiowanie asynchroniczne z sieci wciąż trwa. Przy szybkości odczytu około 100 MiB / si ramdysku 2 GiB odczytanie wszystkich danych wynosiłoby 20,5 s.

Każde wywołanie odczytu spowoduje wykonanie obliczenia indeksu w CPU w ustalonej tablicy n: ulong GiB max. Wymagałoby to jednak rozwiązania konfliktu lub blokad odczytu i zapisu. Gdybyśmy wdrożyli algorytm rozwiązywania konfliktów, taki jak te dostępne za pośrednictwem Microsoft Sync, moglibyśmy przekazać każdą porcję, która jest w konflikcie, jako wiadomość do innego procesu rozwiązywania konfliktu. Dropbox rozwiązuje go, tworząc nowy plik i nadając mu nazwę „PrevFileName Konflikt kopii nazwy użytkownika (rrrr-MM-dd) .ext”. Być może można to zmienić za pomocą małego widżetu, jeśli kompiluje się w oparciu o to jedno źródło - widżet wykryłby zaległe zmiany jako komunikaty / zdarzenia i wybrałby protokół rozwiązywania konfliktów. W związku z tym podczas programowania dla folderu w trybie wyłączności maszyna wirtualna z systemem Windows może ustawić widżet na „wyłączny”.

To miałoby te PRO

  • Byłoby to nieblokujące / asynchroniczne
  • Przyjąłoby to założenie, ale nie wymagałoby, aby jeden komputer zapisywał głównie pliki.
  • Będzie działać dla dowolnie dużych plików
  • Działa na systemach * nix i Windows, łącząc ze sobą wspomniane projekty.
  • Działa, gdy potrzebna jest wysoka wydajność odczytu (tzn. Pliki są fizycznie zlokalizowane na dysku)
  • Po osiągnięciu konfliktu zdarzeń można udostępnić aplikację interfejsu użytkownika, która pozwala użytkownikowi pisać / pobierać wtyczki działające w sposób rozsądny dla różnych rodzajów zdarzeń - tj. Różnych rodzajów plików. Np. Plik tekstowy można wywołać za pomocą Kompare / WinDiff, natomiast plik binarny zostałby zduplikowany i zapisany jako inny plik.

Folder bin wipsync zawiera skrypty powłoki, a nie pliki binarne.
haggai_e



3

Nie sądzę, że jest to dokładnie to, czego szukasz, ale zależy to od zamierzonego użycia.

CrashPlan to pakiet oprogramowania do tworzenia kopii zapasowych i powiązana z nim usługa hostingu kopii zapasowych online, ale różni się tym, że ich oprogramowanie ma tryb, który pozwala na tworzenie kopii zapasowych danych przez Internet (lub LAN) na innym komputerze z uruchomionym oprogramowaniem.

Oznacza to, że miejsce docelowe nie musi znajdować się w chmurze. Nie przypomina dropbox, ponieważ polega raczej na tworzeniu kopii zapasowych, a nie synchronizowaniu plików i uzyskiwaniu do nich dostępu z dowolnego miejsca, ale jeśli chcesz tworzyć kopie zapasowe, działa dobrze. Jeśli chcesz uzyskać dostęp do plików z kopii zapasowej z drugiego komputera, myślę, że możesz wykonać „przywracanie lokalne”, ale nie próbowałem tego.

Podstawowy pakiet oprogramowania jest bezpłatny i obsługuje tryb „tworzenia kopii zapasowej na innym komputerze”, ale wykonuje tylko zaplanowaną kopię zapasową, ale istnieje wersja „pro” oprogramowania, która kosztuje i synchronizuje w czasie rzeczywistym, a nie tylko zaplanowane kopie zapasowe. (Przestrzeń dyskowa w chmurze jest również opcjonalną opłatą dodatkową za miesiąc)



2

-1 Nie sądzę, że jest to najlepsze rozwiązanie, a zatem nie odpowiedź.
Henrik

-1 to serwer rsync, a nie rozwiązanie typu dropbox ...
Arman,

1
To rozwiązanie ma ograniczoną przydatność, ponieważ po prostu łączy się z innym artykułem, stwarzając ryzyko linkrotu. Ta odpowiedź powinna być zredagowana, aby była bardziej merytoryczna, przy jednoczesnym cytowaniu danego linku jako źródła.
Christopher Kyle Horton

Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Tim

2

Jeśli chcesz skonfigurować dwa (lub więcej) komputery z replikowanym folderem, spójrz na glusterfs.

Konfiguracja jest łatwa, jeśli postępujesz zgodnie z instrukcją obsługi GlusterFS .


Czy mówisz, że w klastrze GlusterFS pliki będą synchronizowane, podczas gdy klienci są podłączeni do innych, ale system plików nadal będzie dostępny lokalnie dla klienta odłączonego od innych? Zastanawiam się nad tym, aby zsynchronizować mój laptop z serwerem.
Ryan Thompson,

Tak. Nie ukończyłem jeszcze testów, ale wydaje się, że działa bez żadnych problemów.
Richard Holloway,

To nie działa w systemie Windows, więc nie jest „zgodne z Dropbox”.
Henrik

2

Nikt nie wspomniał o synchronizacji Bitorrent ? Działa na czymkolwiek - Ubuntu, Windows, wiele popularnych systemów operacyjnych na smartfony, raspberry pi .... nazywasz to, prawdopodobnie działa i jako zwykły użytkownik. Zaszyfrowane transfery, pliki nie są przechowywane w chmurze (choć myślę, że bittorrent uruchamia moduł śledzący), dość szybko, możesz selektywnie udostępniać foldery i prawie bez komplikacji, wystarczy skopiować i wkleić klucz do drugiego system.

Po skonfigurowaniu po prostu działa.


1

Trzymam moje oko na AeroFS . Wygląda na to, że może to być usługa typu Dropbox, w której przechowywanie w chmurze jest opcjonalne. Nie wiem, czy / kiedy wdrożą wsparcie mobilne i myślę, że wymagałoby to również synchronizacji tych plików z chmurą. Interesuje mnie przede wszystkim dość bezbolesne rozwiązanie do synchronizacji między komputerami z systemem Windows, Mac i Linux.

Są na wczesnej wersji beta, ale jeśli chcesz, możesz zapisać się na zaproszenie.


1

Używam apache z mod_dav (webdav) dla serwera apache, mogę go zamontować jako napęd i pobierać / pobierać pliki przez Internet. Jest to dość proste, ale może zaspokoić twoje potrzeby.


1

Chociaż są już tutaj wymienione ciekawe alternatywy i jest to starsze pytanie, jestem przekonany, że ten temat wyraźnie nie jest przestarzały i, wręcz przeciwnie, nabiera coraz większego znaczenia, ze względu na ostatnie wydarzenia naruszające prywatność.

Dlatego chcę podzielić się własnym doświadczeniem. Moje obecne rozwiązanie dla własnego hostowanego środowiska chmurowego to Seafile .

Funkcje Seafile:

  • Dostęp do chmury internetowej
  • Klienci dla systemów Linux, Windows, Mac, iOS (nie za darmo), Android
  • Zarządzanie użytkownikami / grupami
  • Organizacja plików za pomocą różnych bibliotek
  • Automatyczna synchronizacja plików za pomocą oprogramowania klienckiego
  • Możliwość publikowania plików poprzez tworzenie publicznych łączy

Moje doświadczenia Seafile:

  • Instalacja była bardzo łatwa i szybka! (na cienkim vm Debianie, z plikami przechowywanymi przez udostępnianie na fizycznym hoście dmraid 5)
  • Interfejs użytkownika czysty i funkcjonalny
  • Oprogramowanie klienckie czyste i funkcjonalne
  • Do tej pory nie było dla mnie problemów funkcjonalnych! (korzystam z tego od kilku tygodni)
  • Zestaw funkcji jest prosty (w porównaniu np. Do własnej chmury), ale podkreślam, że wszystko tu działa!
  • Brak bezpośredniego wsparcia proxy (przynajmniej dla klienta linux - i interfejsu WWW!). Uwaga: interfejs internetowy działa, ale pobieranie plików przez interfejs internetowy nie działa za serwerem proxy - nie wiem, czy jest to możliwe

Ponieważ nie potrzebuję wsparcia proxy, jestem bardzo zadowolony z Seafile!


0

Używam SSHFS do montowania katalogów na moim serwerze jako katalogów lokalnych na moim komputerze stacjonarnym i laptopie. Wszystkie zmiany plików są zapisywane bezpośrednio na serwerze. Jednak w przeciwieństwie do Dropbox, pliki nie są przechowywane lokalnie na komputerach klienckich. Myślę, że jest to świetne, ponieważ nie musisz się martwić synchronizacją i wersjonowaniem, ale nie jest idealne do użytku offline lub bardzo dużych plików.

Jest to bardzo bezpośrednie i proste i uważam, że jest to najlepsze rozwiązanie. Jedyne, czego nie używam, to duże media, takie jak zdjęcia i filmy, ponieważ wszystkie pliki są dostępne przez sieć. Te, które synchronizuję z Rsync.

Link do dokumentacji SSHFS -> http://fuse.sourceforge.net/sshfs.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.