Seafile где хранятся файлы

Обновлено: 06.07.2024

Наиболее подходящий по параметрам продукт, который мне попался, был ownCloud. Описание было многообещающим. Клиент есть под все популярные ОС, возможность скачать и установить свой сервер, приятный веб интерфейс. К тому же его пишут люди имеющие отношение к KDE, значит качество должно быть на уровне.
Правда ownCloud имел кучу дополнительных, не нужных мне сервисов, таких как: галерея, проигрыватель mp3, календарь, контакты и многое другое. Но зато умел авторизовывать пользователей с помощью LDAP.

Сервер

Что ж, попробуем. Были поставлены nginx, php-fpm, PostgreSQL, скачан и настроен ownCloud. Логинюсь под админом, настраиваю LDAP, пробую залогиниться под LDAP пользователем и… сразу получаю 500-ю ошибку. После долгих поисков было выяснено, что связка LDAP+PostgreSQL в ownCloud работает очень плохо, да и судя по всему поддержка PostgreSQL вообще очень плохо реализована, т.к. разработчики пытаются одни и те же запросы использовать на разных типах DB. Что ж, PostgreSQL был заменен на MySQL и LDAP заработал как и планировалось. Правда через стандартный порт LDAP 389 он не захотел работать, заработал только через порт Gloval Catalog 3268.

Клиент

Настало время попробовать клиент. Скачиваю, устанавливаю, запускаю, подключаюсь к серверу, указываю где будет лежать директория для синхронизации. Пока все хорошо. Закидываю файлы в директорию. Они заливаются на сервер. Захожу в веб, расшариваю директорию для других пользователей и… ничего. Они ее не видят. Даже через веб-интерфейс. После опять же долгих поисков был найден workaround, говоря по русски «костыль». В директории clientsync на сервере каждому пользователю, которому нужно открыть доступ, делается симлинк на «главную» директорию пользователя, который открывает доступ к своим файлам. Потом еще было множество экспериментов, в процессе которых директория clientsync то появлялась в веб-интерфейсе, то нет, были найдены багрепорты, где говорилось о проблемах с обновлением кеша в базе, но готового «правильного» решения я не нашел.

В начале я пытался создавать багрепорты, использовать версию из master, но потом понял, что критические для меня проблемы, такие как расшаривание директорий, основное для чего я собирался использовать ownCloud, решаются крайне медленно. Так ownCloud постепенно был забыт и заброшен.

Seafile

Но буквально несколько дней назад на одном из новостных сайтов я увидел новость о выходе версии 1.3 некой системы Seafile, которая так же делает попытку заменить Dropbox. Позже оказалось, что до версии 1.3 она была только на китайском языке и поэтому не была широко известна.

Описание показалось мне заманчивым и я решил попробовать.

Сервер

Сервер для хранилища уже был, так что оставалось только поставить Seafile. Скачал, распаковал. По привычке создал новую базу, запустил инсталлятор. Он ругнулся на нехватку пары пакетов. Установил пакеты, запустил инсталятор заново. Ответил буквально на несколько вопросов, таких как, имя сервера, URL, порты, пути, логин и пароль админа и все, сервер установлен. Никакой базы не надо (на данный момент Seafile использует sqlite, позже планируется поддержка других баз). При желании даже веб сервер не нужен, Seafile имеет свой встроенный веб сервер. Но у меня уже имелся настроенный nginx с валидным ssl сертификатом, так что мне оставалось только настроить его на проксирование запросов к Seafile. Позже я нашел готовый, с немного другим принципом конфиг ngnix для Seafile, но «работает — не трогай».


Добавляем «библиотеку». Можно указать пароль для ее шифрования, но я пока не тестировал это


И так, у нас есть библиотека, в которой будут хранится файлы с клиентов. Как видно, с русским языком проблем нет. Забегая наперед скажу, что нет их с файлами на кириллице.
Библиотеку можно: скачать (добавить в клиент), расшарить или удалить.

Клиент

Теперь настала очередь клиента. Скачал deb пакет для своего kubuntu 12.10, установил и по привычке хотел запустить его из консоли, но команда 'seafile' лишь выводила пример ее использование. Позже я нашел, что запускать нужно 'seafile-applet'. Либо через меню KDE, там он называется Seafile с оранжевеньким логотипом.


И так, клиент запустился. В KDE он встроился в трей с непонятной иконкой, точнее без нее, и меню выглядит несколько непонятно:


Возвращаемся на наш сервер, щелкаем на Dowload рядом с библиотекой. Открывается, в зависимости от браузера, новое окно или вкладка с адресом localhost:13420/repo/download/ и далее служебной информация и страница со следующим содержимым:

Можно принять путь по умолчанию либо указать свой. Можно так же указать уже имеющуюся директорию с данными, щелкнув на «sync with an existing folder». В этом случае придется вручную ввести или скопировать/вставить полный путь к директории, кнопки Browse/Обзор нет. Файлы в директории будут объедены с файлами в библиотеке, если таковые имеются.

И все! Seafile начнет автоматическую синхронизацию и отправку либо загрузку файлов с/на сервер.

Расшаривание библиотеки так же никакой сложности не представляет. Можно расшарить как отдельному пользователю, предварительно создав для него аккаунт, так и группе пользователей. Расшаренные библиотеки для группы можно посмотреть щелкнув на имя группы справа внизу под «My Groups». В следующих версиях они будут так же отображаться в «My Home -> Shared». Можно дать доступ как на чтение-запись, так и только на чтение. При выборе последнего варианта добавленные пользователем файлы просто не будут загружаться в библиотеку. Измененные на стороне пользователя файлы, скорее всего, будут переписаны файлами с сервера, но я пока не проверял.

Пользователю лишь остается скачать и установить клиент, зайти на сервер и скачать библиотеку. Все очень просто и после первого раза становится интуитивно понятно.

Итоги

На данный момент Seafile для меня выглядит как наиболее подходящая замена Dropbox. От внедрения в компании удерживает отсутствие LDAP, но для личного пользование, при наличии лишнего сервера, вполне подходит.

  • возможность синхронизировать уже имеющиеся директории, при чем не имеет значения где эта директория расположена;
  • клиент под все популярные ОС. Мобильные клиенты на подходе;
  • интуитивный интерфейс и процесс;
  • сервер все-в-одном;
  • возможность синхронизации с/на несколько серверов в одном клиенте;

Не знаю плюс это или минус, но все храниться в git-подобной scm, поэтому если файл случайно удалили или затерли, всегда есть возможность его восстановить. Правда только через веб интерфейс. Это плюс. Минус, судя по обсуждению, в том, что если хранить большие бинарные файлы, то репозиторий будет сильно разрастаться.

Пока писал статью, обнаружил еще пару мелких багов, таких как, например, при удалении библиотеки в клиенте и/или на сервере, она не удаляется из «Download Tasks» клиента или клиент Seafile не загружается автоматически при запуске Windows хотя эта опция включена, но все они никак не влияют на синхронизацию файлов и на общую работу системы и я считаю Seafile вполне пригодным, как минимум, для личного использования в качестве замены Dropbox.

Здравствуйте други. Собираюсь ставить Seafile для файлохранилища и прочих плюшек. Как и что предварительно нагуглил, проблем с установкой не вижу. Единственное меня интересует, если допустим у меня рассыпется железо, обновится криво прога. но диски с базой будут целы, то как там они из этой базы извлекаются-то?
Насколько я понял, это не просто диск физически примонтировать к другой машине знающей ext4, и типа читай без проблем. Шифрования я не планирую
Или иначе этот же вопрос: требования к машине для спасения данных из базы данных Seafile. Что на ней должно быть установлено?

И если не трудно, ещё вопрос: Будет ли у меня возможность, при нормальной работе Seafile, использовать эту базу в других приложениях? Например если это Nextcloud какой, то там файлы просто лежат на диске и на чтение как минимум будут доступны всегда. И допустим кроном, скопировать лишь одну папку из всей базы на некую другую машину скопировать не проблема

Спасибо. С базами данных просто дела не имел. Линки в т.ч. английские приветствуются



яннп. сформулируй мысль. что за база данных!?


MariaDB. Как из нее извлекаются файлы со всей структурой папок, которые я вижу с помощью Seafile например?

dromer ★ ( 31.01.20 06:56:21 )
Последнее исправление: dromer 31.01.20 06:57:46 (всего исправлений: 1)


засомневался, посмотрел твои темы - а ты занятный персонаж.

Если версия Субд не отличается от версии Субд создавшие файлы БД, то простое восстановление /var/lib/mysql (или где они там у марии) вместе со служебной БД mysql позволит тебе полностью восстановить работу БД сервера


То есть если я вено понял, необходимый минимум для восстановления файлов из базы, - это сервер с установленной базой данных, такой же какую юзал Seafile?

Гарантия восстановления - полная копия каталога с базами даннных, включая служебную БД mysql

Может хватить и только папки с конкретной БД, но придётся немного поплясать с бубном.

Само файлохранилище это вариант git. Для восстановления нужно:
1. субд той же версии
2. seafile той же версии

И допустим кроном, скопировать лишь одну папку из всей базы на некую другую машину скопировать не проблема

Тут есть несколько путей
1. davfs (со всеми вытекающими проблемами)
2. seaf-fsck.sh --export .
3. seaf-fuse.sh (работает крайне глючно, во всяком случае было раньше, возможно починили, но я не проверял)


Спасибо. Именно это и было интересно знать до того как начал огород городить

Часто ли вам приходится пользоваться сайтами-файлообменниками? А хотите иметь свой собственный файлообменник? В этом руководстве мы изучим, как производится установка и настройка сервера Seafile для синхронизации и общего доступа к файлам на Ubuntu 20.04.

В качестве основы для установки Seafile мы будем использовать виртуальный сервер с установленной операционной системой Ubuntu 20.04. Сервер должен иметь как минимум 2GB оперативной памяти. Все подключения к серверу мы будем осуществлять под учётной записью, которая не является root -ом, но имеет полномочия sudo . В нашем руководстве это будет пользователь your-user . Также, на сервере должен быть установлен и настроен брандмауэр UFW.

Установка MariaDB

На нашем сервере в качестве системы управления базами данных мы будем использовать MariaDB. Поэтому сначала необходимо установить на сервер данную СУБД.

Для чего обновите индексы пакетов на сервере:

После этого запустите установку пакета MariaDB:

По окончании установки нужно будет запустить скрипт безопасности:

Скрипт безопасности MariaDB - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

Установка веб-сервера Apache

В качестве веб-сервера в данном руководстве мы будем использовать Apache. Поскольку Apache доступен для установки из официального репозитория Ubuntu, инсталляцию пакета нужно будет произвести при помощи apt :

Когда установка завершится, произведите настройку брандмауэра UFW. Запустите команду для просмотра списка приложений, включённых в брандмауэр в качестве разрешённых:

Список приложений UFW - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

Чтобы проверить изменения наберите:

Статус UFW - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

Теперь следует запустить проверку статуса службы Apache:

Вывод команды должен выглядеть примерно так:

Статус службы Apache - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

И остаётся лишь удостовериться в том, что наш веб-сервер доступен по сети. Для чего в браузере наберите IP-адрес вашего VPS. Вы должны увидеть стартовую страницу Apache:

Начальная страница Apache - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

Настройка виртуального хоста

Теперь привяжем имя нашего домена к установленному на наш VPS веб-серверу. Для этого необходимо на Apache произвести настройку виртуального хоста. В нашем руководстве мы будем использовать доменное имя my-domain.host . Настройку виртуального хоста нужно будет выполнить по пунктам:

Подключение к домену

Для начала установите на свой сервер программное обеспечение Certbot. Для чего в командной строке следует набрать:

Далее, запустите проверку статуса брандмауэра:

Просмотр статуса UFW

Далее, запустите получение SSL-сертификата при помощи Certbot через плагин Apache:

Выбор домена для подключения SSL-сертификата

Активация SSL-сертификата

Подключение к домену по HTTPS

Создание баз данных для компонентов Seafile

Три компоненты Seafile должны быть установлены в вашей системе для того, чтобы настраиваемый файловый сервер функционировал корректно:

Все эти сегменты будут хранить свои данные отдельно, каждый в своей базе данных. Именно поэтому, теперь мы должны создать три разных базы данных. Их мы создадим при помощи MariaDB. Также, нужно будет создать для них пользователя.

Итак, подключитесь к MariaDB:

В командной строке MariaDB введите команду для создания пользователя ваших баз данных:

Далее, необходимо создать базы данных для всех трёх компонентов Seafile:

Для создания баз данных наберите в командной строке MariaDB:

Теперь, нужно дать все полномочия созданному пользователю для работы с новыми базами:

После этого можно выйти из MariaDB. Для этого используйте команду:

Установка зависимостей и загрузка Seafile

Определённые элементы Seafile написаны на Python и, следовательно, для работы Seafile необходимо наличие программ и дополнительных модулей Python. На этом шаге мы установим требуемые зависимости прежде, чем скачать и распаковать пакет сервера Seafile.

По окончании установки пакета pip запустите инсталляцию дополнительных зависимостей при помощи команды pip3 :

Для команды pip3 install необязательно использование sudo . Эти пакеты устанавливаются в домашний каталог вашего пользователя, и поэтому их инсталляция не требует привилегий root . Сервер Seafile требует установки пакета Pillow , библиотеки для обработки образов. Также, для работы Seafile требуется установка пакетов captcha и django-simple-captcha , чтобы обеспечить поддержку каптча для аутентификации.

Теперь, когда необходимые зависимости установлены, вы можете загрузить установочный пакет Seafile. Для его инсталляции нам потребуются дополнительные каталоги. Их нужно будет создать в домашнем каталоге вашего пользователя:

Далее, загрузите последнюю версию Seafile. В нашем руководстве мы будем устанавливать версию 7.1.5:

Загруженный дистрибутив Seafile представляет из себя tar-архив, который вам нужно будет распаковать, прежде чем продолжить:

После чего перейдите в разархивированную директорию:

Настройка сервера Seafile

Для своей работы сервер Seafile потребует от вас некоторой информации. Её необходимо предоставить сервису перед первым его запуском. Эта информация включает в себя такие данные как имя домена и настройки базы данных. Чтобы начать наполнение Seafile ответами на требуемые вопросы, вам нужно запустить на исполнение скрипт setup_seafile_mysql.sh , который входит в состав архива, распакованного на предыдущем шаге:

Запуск скрипта setup_seafile_mysql.sh

Для продолжения нажмите Enter .

Далее скрипт задаст вам несколько вопросов. Везде, где вы хотите использовать значения по умолчанию, просто нажимайте клавишу Enter не вводя никакой информации.

В качестве имени сервера здесь мы будем использовать Seafile-Server . Вы, конечно же, можете ввести другое:

Имя сервера Seafile

Далее, введите ваше имя домена:

Имя домена

Введите номер порта, который вы хотите использовать на своём файловом сервере. Для принятия значения по умолчанию нажмите Enter :

Номер порта

Базы данных Seafile

Оставшиеся вопросы относятся к СУБД MariaDB. Здесь вам нужно будет ввести имя и пароль пользователя MariaDB, который вы создали ранее. А также, примите значения по умолчанию в назначении хоста и порта для сервера mysql:

Настройки MariaDB для Seafile

Если пароль вашего пользователя принят, скрипт попросит вас набрать имена баз данных Seafile. В нашем руководстве эти базы мы назвали seahubdb , seafiledb и ccnetdb . Скрипт проверит корректность подключения к базам данных и отобразит на экране сводную информацию о начальной конфигурации:

Базы данных Seafile

Для подтверждения нажмите Enter :

Завершение работы скрипта

Поскольку вы будете запускать сервер Seafile, который по факту находится за Apache, то в брандмауэре нет необходимости открывать порты 8000 и 8082. Следовательно, вы можете игнорировать заключительную часть вывода.

Настройка веб-сервера Apache

Для этой настройки также требуется наличие модулей ssl и rewrite . Их мы уже включили, когда настраивали шифрование трафика Apache при помощи Let’s Encrypt.

Далее, нужно будет настроить виртуальный хост my-domain.host . Это необходимо для того, чтобы обеспечить перенаправление запросов на Seafile и Seahub. Чтобы сделать это, откройте для редактирования файл конфигурации. Он располагается в каталоге /etc/apache2/sites-enabled/ :

В этом файле строки от ServerAdmin до SSLCertificateKeyFile относятся к настройке шифрования при помощи Let’s Encrypt, которую мы сделали ранее. Добавьте выделенные строки в файл, используя имя вашего пользователя вместо your-user :

Здесь, используется несколько директив:

По окончании редактирования закройте файл, сохранив внесённые изменения. После чего проверьте корректность синтаксиса Apache:

Если проверка выдала Syntax OK , перезапустите Apache для применения изменений:

Изменение конфигурации Seafile и запуск сервисов

Так как вы используете Apache, чтобы проксировать все запросы к Seafile, вам нужно будет изменить URL-адреса в конфигурационных файлах Seafile. Для этого перейдите в каталог conf и откройте для редактирования файл ccnet.conf :

Настройка Seafile

Сохраните изменения и закройте файл. После чего откройте файл seahub_settings.py :

Здесь вам необходимо добавить переменную FILE_SERVER_ROOT , определяющую путь, который Seafile будет прослушивать для загрузки и выгрузки файлов:

Настройка Seafile

Сохраните изменения, закройте файл. Затем запустите службу Seafile и интерфейс Seahub:

Так как вы впервые запускаете сервис Seahub, вам нужно будет создать учетную запись администратора. Здесь введите доступный вам адрес электронной почты и пароль для создаваемого пользователя:

Создание пользователя для доступа к Seafile - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

то, вам необходимо будет в файл /etc/default/locale добавить строку:

Теперь откройте в браузере адрес вашего сайта и авторизуйтесь на нём с помощью адреса электронной почты и пароля:

После успешного подключения к системе вы попадёте в веб-интерфейс администратора.

Успешное подключение к Seafile

Активизация старта сервера Seafile при загрузке системы

Чтобы ваш файловый сервер и веб-интерфейс запускался автоматически при загрузке системы, нужно будет создать файлы сервиса и активировать их.

Сначала создайте файл службы для файлового сервера Seafile:

Добавьте в этот файл следующие строки:

В строках ExectStart и ExecStop указаны команды запуска и остановки сервиса Seafile. Сервис будет запускаться от имени пользователя и группы your-user . Строка After определяет запуск службы Seafile только после старта сетевого окружения и сервиса MySQL.

Далее, создайте файл сервиса для веб-интерфейса Seahub:

Здесь всё так же, как и в предыдущем файле. Единственное отличие заключается в том, что веб-интерфейс будет стартовать после службы Seafile:

Закройте созданный файл с сохраненим изменений.

И наконец, активируйте автоматический старт обоих сервисов при запуске системы:

Теперь, если вы перезагрузите свой сервер, Seafile запустится автоматически.

Тестирование функциональности синхронизации файлов и их совместного использования

В этом разделе мы протестируем функционал нашего настроенного сервера, касающийся синхронизации и совместного использования файлов. Чтобы это осуществить, нужно будет установить клиентское приложение Seafile на отдельную рабочую станцию или мобильное устройство.

Перейдите на страницу загрузки Seafile и следуя инструкциям установите последнюю версию клиентской программы. Клиентское программное обеспечение Seafile доступно для различных дистрибутивов Linux, а также, MacOS, и Windows. При этом мобильный клиент также доступен для устройств, работающих на Android и IOS, и его можно загрузить из соответствующих магазинов приложений.

Установив клиента, откройте его и примите дефолтное расположение каталога Seafile, нажмите Next.

В следующем окне нужно будет ввести адрес вашего сервера, имя пользователя и пароль, после чего нажать Login.

Далее, на стартовой странице правой кнопкой мыши нажмите на My Library и затем кликните Sync this library, либо Синхронизировать эту библиотеку. Примите дефолтное расположение библиотеки на вашем компьютере или устройстве.

Синхронизация библиотек

Добавьте какой-нибудь файл, например, документ или фотографию, в каталог My Library. Спустя какое-то время файл загрузится на сервер, и вы сможете увидеть его в папке My Libraries, подключившись в браузере к вашему серверу.

My Libraries

Теперь правой кнопкой мыши нажмите на этот файл в браузере и кликните Share или Общий доступ. Таким образом, вы сможете сгенерировать ссылку на его скачивание.

Общий доступ - Настройка Seafile для синхронизации и общего доступа к файлам в Ubuntu 20.04

Заключение

В данном руководстве мы создали и настроили приватный файловый сервер Seafile. Теперь, вы можете загружать на него свои файлы, добавлять на нём пользователей и группы пользователей и предоставлять им доступ на файлы не используя при этом никаких сторонних файлообменных сервисов.

Ниже приведены некоторые из важных особенностей Seafile, которые делают надежную платформу для обмена файлами:

  • Шифрование файлов
  • Блокировка файлов
  • Онлайн-редактирование и совместное редактирование
  • Управление версиями файлов и моментальные снимки
  • Мобильный доступ к файлам
  • Легко установить и использовать клиент
  • Общий доступ к файлам и контроль разрешений

Установите сервер хранения Seafile на CentOS 8

Это шаги, которые вы выполните, чтобы установить и настроить Seafile Storage Server в системе CentOS 8.

Шаг 1. Обновите систему и установите имя хоста

Сначала мы отключим CentOS selinux, чтобы убедиться, что он не помешает какой-либо установке, которую мы собираемся выполнить.

После отключения Selinux запустите обновления на CentOS 8.

Теперь настройте файл hosts и установите имя хоста сервера.

Перезагрузите вашу систему

Шаг 2. Добавьте репозиторий EPEL и установите зависимости

Сначала давайте установим зависимости Seafile и необходимые пакеты

Шаг 3. Добавьте репозиторий EPEL и установите зависимости

Сначала давайте установим зависимости Seafile и необходимые пакеты

Безопасная установка mariadb и установка пароля root.

Шаг 4: Создайте базы данных Seafile

Настроив MariaDB, мы продолжим создание пользователя и баз данных Seafile. Подключитесь к MySQL с помощью приведенной ниже команды и введите пароль, который вы установили выше.

Мы создадим пользователя для Seafile и следующих трех баз данных:

  • ccnet_db
  • seafile_db
  • seahub_db

После подключения к MySQL выполните следующие команды для создания необходимых баз данных:

Шаг 5: Установка Seafile на CentOS 8

Загрузите Seafile с помощью команды wget и распакуйте загруженный архив.

Распакуйте загруженный файл

Переименуйте каталог в seafile-server и переключитесь в этот каталог.

Шаг 6: Настройте Seafile на CentOS 8

Выполнить « setup-seafile-mysql.sh » файл для настройки базы данных.

Теперь мы можем запустить сервисы seafile и seahub. Запустите seafile с помощью следующей команды:

Запустить сервис seahub

Как видно из вывода выше, seahub не запустился. Чтобы получить связанную ошибку, запустите seafile с помощью следующей команды:

Выходные данные показывают, что ошибка связана с не поддерживаемым sha1. Я решил эту проблему, заменив « from _sha1 import sha1 » на « import hashlib » в файле /var/www/seafile/seafile-server/seahub/seahub/repo_api_tokens/models.py . Файл выглядит следующим образом:

Сохраните файл и снова запустите seahub

Шаг 7. Настройте брандмауэр

Если ваш файловый экран активен, убедитесь, что порты seafile открыты через брандмауэр:

Шаг 8: Доступ к Seafile в браузере

Сохраните файл, и вы сможете запустить seafile в браузере. Вы должны увидеть страницу, как показано ниже:

Войдите в систему с учетными данными администратора, которые вы настроили ранее, и вы должны получить страницу, как показано:

У вас должна быть возможность выбрать новую библиотеку и либо создать, либо загрузить папку / файл.

Шаг 9: Настройка клиент Seafile

Мы будем использовать клиентский компьютер Ubuntu 20.04 для проверки возможности подключения к серверу Seafile.

Чтобы подключиться к Seafile в Ubuntu 20.04, сначала выполните приведенную ниже команду, чтобы установить клиент seafile в Ubuntu 20.04.

Только для использования cli выполните команду:

После установки найдите клиент seafile в своих приложениях, и вы должны его увидеть.


Дважды щелкните, чтобы открыть и выбрать папку для ваших библиотек, и нажмите кнопку «Далее».


Теперь предоставьте сведения для подключения к вашему серверу seafile:


Когда вы нажимаете « Войти », вы должны подключиться к серверу seafile, как показано:


Вот и все. Наслаждайтесь установкой Seafile. Надеюсь, блог был информативным.

Читайте также: