Сам себе Dropbox

Через анонс на Hacker News нашел относительно простую в обращении утилитку Syncthing, которая позволяет воссоздать базовый функционал Dropbox – синхронизацию конкретной папки на своем сервере со своими ключами для шифрования.

Код (на языке Go) лежит в открытом доступе на GitHub, клиенты для каждой из операционных систем доступны там же. После установки syncthing каждый из хостов получает уникальный ключ, двухсторонний обмен которыми и создает канал для синхронизации папки. Под Windows это по умолчанию C:users<current_user>Sync, под линуксом это ~/Sync.

Для VPS я использую Digital Ocean (512 МБ оперативки, 20 ГБ дискового пространства, терабайт траффика за $5 в месяц), из дешевых еще есть Atlantic.net или Ubiquity, под сервер можно приспособить и домашний компьютер с большим жестким диском, если он всегда находится в онлайне.

Интерфейс для обмена ключами пока существует только в Web-версии, которая запускается сугубо локально, поэтому на VPS-сервере придется (и в документации этот момент не очень подробно описан)

  • разархивировать нужную версию syncthing в отдельную папку (пакетов для apt-get или yum у них еще нет)
  • запустить linux-клиент, чтобы дать ему возможность создать конфигурационный файл
  • в конфигурационном файле по адресу ~/.config/syncthing/config.xml найти строку <address>127.0.0.1:8080</address> и временно заменить ее на <address>:8080</address>
  • открыть порт 8080 через /sbin/iptables, если доступ к нему закрыт
  • перезапустить клиент ./syncthing дабы тот считал новые конфигурационные данные
  • добавить нужные ключи на обоих клиентах, между которыми требуется синхронизация, по адресу http://123.456.789.012:8080, где 123.456.789.012 – IP сервера
  • конфигурационный файл ~/.config/syncthing/config.xml вернуть в изначальное положение, порт 8080 при необходимости снова закрыть от внешнего доступа
  • перезапустить клиент ./syncthing дабы тот считал новые конфигурационные данные
    [VE4LG] 2014/05/13 05:59:05 INFO: syncthing v0.8.5 (go1.2.2 linux-amd64) jb@jborg-mbp 2014-05-11T18:46:09Z
    [VE4LG] 2014/05/13 05:59:05 INFO: My ID: VE4LGU2XUQQQQQQQQQQQWWWWWWWWEEEEEEEEERRRRRRRRRRRRTTTTTTTTTTTYYYYYYYYY
    [VE4LG] 2014/05/13 05:59:05 INFO: Starting web GUI on http://127.0.0.1:8080/
    [VE4LG] 2014/05/13 05:59:05 INFO: Populating repository index
    [VE4LG] 2014/05/13 05:59:08 INFO: No UPnP IGD device found, no port mapping created (read udp4 0.0.0.0:41696: i/o timeout)
    [VE4LG] 2014/05/13 05:59:08 INFO: Sending local discovery announcements
    [VE4LG] 2014/05/13 05:59:08 INFO: Sending global discovery announcements
    [VE4LG] 2014/05/13 05:59:08 OK: Ready to synchronize default (read-write)

Статус канала для синхронизации можно всегда проверить в Web-интерфейсе на локальной машине по адресу http://127.0.0.1:8080

image

  • Кирилл Николенко

    Я вижу запись

    Обзор Soylent в New Yorker , но когда пытаюсь перейти по ссылке http://moskalyuk.name/4641 то получаю ошибку

    Error establishing a database connection
    Такое происходит начиная со статьи про сойлент и заканчивается на записи http://moskalyuk.name/4609 потом опять ошибка

  • Alex

    Спасибо за подробное описание.

    Один момент: насколько я понимаю, Syncthing шифрует только трафик в процессе обмена данными между хостами. На сервере ваши файлы будут лежать в открытом виде.

    Можно использовать TrueCrypt, а можно глянуть на SeaFIle – https://seacloud.cc/group/3/wiki/faq-for-security-features/. Последнее вроде как больше ориентировано на серверное хранение, в то время как Syncthing рекомендуется использовать для создания распределенной сети машин для синхронизации данных.

  • Igor Khomyakov

    encfs лучше подходит т к шифрует по файлово

  • Igor Khomyakov

    напоминает скорее btsync чем dropbox

  • prostoalex

    Вроде поправил.

  • Pingback: VPS за $1 в месяц | александр.moskalyuk.name()