Альтернативи Nextcloud для self-hosting
Порівняння альтернатив Nextcloud за завданнями: синхронізація файлів, легший сервер, об’єктне сховище чи SFTP. Враховано витрати на міграцію.
Які альтернативи Nextcloud варто розгортати на власному сервері?
Варто розгортати ті альтернативи Nextcloud, які не містять функцій, якими ви ніколи не користувалися. Nextcloud поєднує файловий сервер, календар, адресну книгу, офісний пакет і платформу застосунків в одному PHP-застосунку, а ви оплачуєте використання всіх цих компонентів під час кожного завантаження сторінки. Тому обирайте заміну, спочатку визначивши потрібне завдання, а потім перевірте, яких витрат потребує перенесення наявних файлів.
У цьому посібнику варіанти впорядковано за завданнями: лише синхронізація, синхронізація з швидшим сервером, об’єктне сховище з клієнтом поверх нього або звичайний віддалений доступ до файлів. У кожному розділі описано вимоги до сервера на невеликому VPS (virtual private server) і те, що станеться з наявною структурою каталогів. Якщо ви переходите з Dropbox або Google Drive, а не з уже запущеного сервера Nextcloud, ширший огляд self-hosted альтернатив Dropbox починається саме з цього варіанта.
Чому Nextcloud працює повільно на малому VPS
Повільна робота має конкретні причини. Розуміння цих причин допоможе визначити, чи справді перехід на інший план вирішить проблему.
Кожне завантаження сторінки займає PHP-воркер. У системних вимогах Nextcloud указано обсяг пам’яті для одного процесу: мінімум 128 MB, рекомендовано 512 MB станом на August 2026. Це не загальний обсяг пам’яті сервера. Пул із десяти воркерів фактично визначає бюджет пам’яті на плані з 2 GB. Тому адміністратори зменшують pm.max_children у конфігурації пулу PHP-FPM, а потім запити стають у чергу за наявними воркерами. Інтерфейс працює повільно, навіть коли диск не навантажений.
База даних зростає відповідно до кількості файлів, а не їхнього обсягу. Таблиця кешу файлів oc_filecache зі стандартним префіксом таблиць містить один рядок для кожного файлу й каталогу в кожному сховищі, про яке знає сервер. Фототека зі 300,000 малих файлів утворює велику таблицю, а 300 GB відеофайлів у 400 файлах — малу. Спільний доступ, пошук і сканер файлів читають цю таблицю.
sudo mysql nextcloud -e 'SELECT COUNT(*) FROM oc_filecache;'Кількість записів у мільйонах краще пояснює повільне відкриття списку файлів, ніж будь-який тест диска. Якщо у вашому екземплярі використовується інший префікс таблиць або PostgreSQL, скоригуйте запит.
Фонові завдання конкурують із вебінтерфейсом за ресурси. У посібнику Nextcloud рекомендовано системний cron-запис, який запускає cron.php кожні п’ять хвилин. Генерування попередніх переглядів і сканування файлів виконуються цим завданням на тому самому CPU, який обслуговує ваш браузер.
Великі оновлення є міграцією бази даних. Екземпляр переходить у режим обслуговування та відповідає на кожен запит повідомленням Nextcloud is in maintenance mode, please try again later, доки міграцію не буде завершено. На малому VPS із великою oc_filecache цей період може бути достатньо довгим, щоб це стало помітно.
Спочатку визначте, що саме потрібно зберігати
- Синхронізувати одну папку між власними машинами без вебінтерфейсу: Syncthing.
- Синхронізація для кількох людей із вебінтерфейсом, мобільними клієнтами та посиланнями для спільного доступу: Seafile.
- Недорого зберігати великий обсяг даних і отримувати до нього доступ зі скриптів та засобів резервного копіювання: об’єктне сховище та клієнт.
- Віддалено читати й записувати файли без встановлення нового серверного програмного забезпечення: SFTP або WebDAV.
- Редагувати документи спільно у браузері або користуватися спільним календарем: залиштеся на Nextcloud або погодьтеся запускати два сервіси.
Syncthing: синхронізація файлів без серверного застосунку
Syncthing зберігає файли як звичайні файли. Окремої бази даних вмісту немає, як і вебінтерфейсу для перегляду документів. Кожен пристрій, підключений до папки, зберігає її повну копію, а Syncthing підтримує ці копії однаковими.
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthingsudo systemctl enable --now syncthing@$USER
sudo ss -lntp | grep 8384Рядок із 127.0.0.1:8384 означає, що вебінтерфейс працює та прослуховує підключення лише на localhost. Для публічного VPS це правильне налаштування. Підключіться через SSH-тунель: ssh -L 8384:127.0.0.1:8384 you@your-vps, а потім відкрийте http://127.0.0.1:8384 на своєму ноутбуці. Якщо на 8384 немає процесу, що прослуховує підключення, сервіс не запустився. journalctl -u syncthing@$USER -n 50 пояснює причину.
Ресурси. Syncthing не публікує мінімальних вимог до обсягу пам’яті. Споживання пам’яті залежить від кількості проіндексованих файлів, а не від їхнього загального розміру, оскільки для кожного файлу в кожній спільній папці зберігається окремий запис індексу. Перше сканування великої папки створює навантаження на CPU: Syncthing обчислює хеш кожного файлу, перш ніж порівнювати файли. На спільному vCPU це початкове сканування може тривати певний час. Обсяг пам’яті зростає відповідно до кількості файлів, а не до їхнього розміру в гігабайтах.
Диск — основна витрата. Серверного зберігання немає, оскільки Syncthing не є сервером. Папка розміром 200 GB, спільна для VPS і ноутбука, потребує 200 GB на кожному пристрої. Це протилежність Nextcloud, де сервер зберігає всі дані, а клієнти вибирають, що синхронізувати. Використовуйте вибіркові папки та папку receive only на VPS, якщо VPS має бути цільовим пристроєм для резервного копіювання, а не рівноправним вузлом.
Причина обрати Syncthing — міграція. Вкажіть Syncthing на вже наявне дерево каталогів. Імпорт, завантаження чи конвертація не потрібні. Додайте папку на VPS і на ноутбуці з тим самим ідентифікатором папки, а потім дозвольте обом сторонам синхронізуватися. Якщо під час першого підключення на обох пристроях уже є різні версії одного файлу, Syncthing збереже обидві та перейменує одну з них на filename.sync-conflict-20260809-142530-ABCD123.txt. Поява таких файлів під час першої синхронізації є нормальною і не означає помилку.
Від чого доведеться відмовитися. Немає облікових записів, посилань для спільного доступу з іншими людьми та можливості переглядати файли з браузера на телефоні. Оригінальний застосунок для Android більше не підтримується самим проєктом, а спільнота продовжує його розробку у вигляді форка. Це важливо, якщо основною вимогою є мобільний доступ. Пряме порівняння Syncthing і Nextcloud послідовно розглядає відмінності у функціональності.
Seafile: швидка синхронізація з легшим сервером
Seafile розподіляє роботу між двома компонентами. Вебзастосунок на Python під назвою Seahub відображає інтерфейс, а окремий процес на C обробляє трафік синхронізації. Передавання файлів не проходить через вебзастосунок, тому велике завантаження залишається швидким, навіть коли інший користувач працює в інтерфейсі. Версію 13.0 випущено 5 January 2026.
sudo mkdir -p /opt/seafile
cd /opt/seafile
sudo wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
sudo wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/caddy.ymlПеред початком відредагуйте .env. У ньому задаються SEAFILE_SERVER_HOSTNAME, INIT_SEAFILE_ADMIN_EMAIL, INIT_SEAFILE_ADMIN_PASSWORD, SEAFILE_MYSQL_DB_PASSWORD і JWT_PRIVATE_KEY. Значення має бути випадковим рядком завдовжки щонайменше 32 символи. У цьому файлі також указано, які завантажені YAML-файли має прочитати compose, тому всі чотири завантаження утворюють один стек.
cd /opt/seafile
sudo docker compose up -d
sudo docker compose psКожен контейнер має повідомляти про стан running. Контейнер, який постійно перезапускається, майже завжди вказує на відсутнє значення в .env, а sudo docker compose logs seafile називає відповідний контейнер.
Ресурси. Станом на August 2026 документація Seafile рекомендує щонайменше 2 GB RAM і процесор із 2 ядрами та тактовою частотою понад 2 GHz. Вважайте це мінімальними вимогами для всього стека, оскільки Docker-розгортання також запускає MariaDB, reverse proxy Caddy і редактор SeaDoc. Виділіть 4 GB, якщо сервісом користуються понад один або два користувачі, або не запускайте необов’язкові контейнери.
Під час міграції важливий формат зберігання. Seafile не зберігає файли як окремі файли. Він розділяє кожен файл на блоки в /opt/seafile-data і записує структуру дерева у своїй базі даних. Не можна вказати Seafile на наявний каталог і зробити його бібліотекою, тому міграція потребує повного завантаження всього вмісту, яким ви володієте. Через цю саму схему не можна отримати дані за допомогою cp: відновлення виконується через сервер, seaf-fsck для перевірки узгодженості або монтування лише для читання через seaf-fuse.
rclone має вбудований backend Seafile. Завдяки цьому завантаження виконується однією командою з можливістю продовження, а не тривалим перетягуванням файлів.
rclone config
rclone copy /srv/files seafile:MyLibrary --progressУ документації rclone зазначено, що протестовано Seafile версій 6.x–9.x, тому спочатку запустіть його для однієї невеликої папки та перевірте результат, перш ніж передавати через нього терабайт даних.
Зашифровані бібліотеки — головна функція, заради якої користувачі переходять на Seafile. Пароль задається в клієнті, а сервер зберігає блоки, які не може прочитати. Важливе обмеження: під час попереднього перегляду файлу із зашифрованої бібліотеки у браузері пароль передається серверу на час цього сеансу. Тому попередній перегляд у браузері та зберігання без доступу сервера до даних одночасно недоступні. У матеріалі Порівняння Seafile і Nextcloud розглянуто інші відмінності функцій.
Об’єктне сховище із sync-клієнтом
Якщо потрібно дешево зберігати великий обсяг даних і мати до них доступ зі скриптів, розгорніть S3-сумісне об’єктне сховище, а sync використовуйте як окремий інструмент. Ви отримуєте надійність зберігання, версіювання та протокол, із яким уже працює кожен інструмент резервного копіювання. Але ви не отримуєте облікових записів користувачів у сенсі файлового сервера або файлового менеджера, яким буде зручно користуватися. Self-hosted об’єктне сховище з MinIO описує серверну частину.
rclone copy /srv/files s3remote:mybucket --progress
rclone check /srv/files s3remote:mybucketrclone check порівнює обидві сторони за розміром і хешем та виводить кількість файлів, що відрізняються. Будь-яке значення, відмінне від нуля, означає, що копіювання не завершене, тому повторно виконайте copy, перш ніж видаляти джерело. Слід врахувати два моменти: об’єктне сховище не має каталогів, а використовує лише префікси ключів, тому порожня папка не зберігається під час копіювання; збільшення --transfers разом із розміром S3-частини підвищує використання пам’яті rclone, тому на VPS із 1 GB залиште обидва параметри зі значеннями за замовчуванням.
Простий WebDAV або SFTP, якщо потрібен лише віддалений доступ до файлів
Найдешевша заміна часто не потребує нічого нового. Якщо на вашому VPS працює OpenSSH, у вас уже є файловий сервер. SFTP не потребує додаткового демона, бази даних, PHP або оновлення, яке може спричинити збій у неділю.
sftp you@your-vps
rclone mount sftpremote: ~/vps --vfs-cache-mode writesДля клієнтів із підтримкою WebDAV, зокрема більшості файлових менеджерів для телефонів, rclone може надавати доступ до того самого дерева каталогів.
sudo apt install apache2-utils
sudo htpasswd -c /etc/rclone/htpasswd you
rclone serve webdav --addr 127.0.0.1:8080 --htpasswd /etc/rclone/htpasswd /srv/filesПрив’яжіть його до 127.0.0.1 і розмістіть перед ним reverse proxy з TLS (transport layer security). Базова автентифікація WebDAV надсилає пароль у кожному запиті, тому звичайний HTTP у цьому випадку означає передавання пароля багато разів на хвилину. Вартість міграції дорівнює нулю, оскільки файли нікуди не переміщуються. Недолік полягає у відсутності синхронізації та автономної копії: коли з’єднання розривається, файли зникають із клієнта до його відновлення.
Що замінює календарі, контакти та редагування документів
Відмова від Nextcloud у цій частині має певну ціну, і важливо чітко розуміти яку саме. Календарі та контакти використовують CalDAV і CardDAV (синхронізація календарів і контактів через HTTP), а невеликою заміною є Radicale. Він зберігає кожну колекцію як файли на диску та використовує десятки мегабайтів пам’яті.
sudo apt install radicale
sudo systemctl enable --now radicale
sudo ss -lntp | grep 5232Пакет встановлює /usr/lib/systemd/system/radicale.service, а його стандартна конфігурація міститься у /etc/radicale/config. Сервіс прослуховує localhost:5232. У Radicale немає інтерфейсу для редагування подій, тому підключіть до нього клієнт на телефоні або комп’ютері та редагуйте події в ньому.
Редагування документів у браузері замінити складніше. OnlyOffice Docs і Collabora Online — це рушії редагування, а не сховища. Кожному з них потрібна хостова програма, яка зберігає файли та передає їй документи. Якщо прибрати Nextcloud, потрібна інша хостова програма, наприклад Seafile із власним редактором SeaDoc. Порівняння OnlyOffice і Collabora допоможе вибрати рушій після того, як ви визначитеся, яка програма його розміщуватиме.
Якщо виконується хоча б одна з цих умов, залишайтеся на Nextcloud
- Кілька людей спільно використовують один календар і одну адресну книгу з тими самими обліковими записами, що й для файлів.
- Ви редагуєте офісні документи в браузері, одночасно з іншою людиною та в тому самому файлі.
- Вам потрібні окремі посилання для спільного доступу до кожного файлу з терміном дії та паролями, а також дозволи для груп.
- Ваші користувачі не мають технічної підготовки, тому фактично користуються мобільними застосунками.
Для таких завдань немає простішого рішення, яке охоплювало б усе це, тому варто виправити інсталяцію, а не відмовлятися від неї. У більшості повільних інсталяцій використовується стандартний пул PHP-FPM без налаштованого кешу в пам’яті, і на сторінці огляду адміністратора Nextcloud відображається попередження про відсутній кеш. Зменшення кількості файлів, за якими ведеться облік, допомагає більше, ніж будь-яка інша окрема зміна, оскільки саме таблиця кешу файлів збільшується. Інсталяція Nextcloud на VPS з Docker, TLS і резервними копіями налаштовується так, щоб уникнути більшості цих проблем.
Скільки насправді коштує міграція: порівняння варіантів
- Syncthing: імпорт не потрібен. Вкажіть дерево каталогів, яке вже є з обох боків, і дочекайтеся синхронізації.
- SFTP або WebDAV через те саме дерево каталогів: імпорт не потрібен, оскільки дані нікуди не переміщуються.
- Об’єктне сховище: одна повна мережева копія, яку можна поновити після переривання та виконати за допомогою скрипта. Порожні каталоги не зберігаються.
- Seafile: одне повне завантаження до бібліотек, оскільки сервер зберігає блоки, а не файли.
Незалежно від вибраного варіанта спочатку створіть узгоджену копію даних із Nextcloud. Файли користувачів зберігаються в каталозі даних у звичайному вигляді, по одному каталогу на користувача, тому rsync цього дерева є джерелом даних. Перед копіюванням переведіть інстанс у режим обслуговування. Інакше можна скопіювати файли під час запису.
sudo -u www-data php occ maintenance:mode --on
sudo rsync -a --info=progress2 /path/to/nextcloud/data/ /srv/files/
find /srv/files -type f | wc -lПорівняйте отриману кількість із такою самою find на джерелі. Невідповідність зазвичай означає, що через проблеми з правами доступу rsync не зміг прочитати частину даних, і ці помилки виводяться під час виконання.
У цьому копіюванні є дві типові пастки. Файли, доступні через функцію зовнішнього сховища Nextcloud, взагалі не містяться в каталозі даних, оскільки вони зберігаються у віддаленій системі, яку вказали для Nextcloud. Якщо шифрування на стороні сервера коли-небудь було ввімкнено, файли на диску є зашифрованими даними, тому occ encryption:decrypt-all потрібно виконати до копіювання. Інакше ви перенесете каталог із даними, які неможливо прочитати. Перевірте обидва моменти, перш ніж скасовувати будь-які дії.
FAQ
Чи є альтернатива Nextcloud, яка збереже наявну структуру каталогів?
Syncthing, а також будь-яка звичайна конфігурація SFTP або WebDAV. Syncthing індексує каталог, який ви йому вказуєте, і зберігає однакові імена та структуру на кожному пристрої, тому імпортувати або завантажувати дані не потрібно. Seafile і об’єктне сховище потребують повного первинного завантаження, оскільки жодне з них не зберігає дані як звичайні файли у звичайному дереві каталогів. Seafile розділяє файли на блоки у своєму каталозі даних, а об’єктне сховище використовує ключі замість каталогів.
Чи працюватиме Seafile на VPS із 2 GB RAM?
У документації Seafile станом на August 2026 зазначено щонайменше 2 GB RAM і 2-ядерний CPU із частотою понад 2 GHz. Вважайте це мінімальною вимогою без запасу ресурсів, оскільки Docker-розгортання також запускає MariaDB, Caddy і редактор SeaDoc у власних контейнерах. Для одного користувача цього достатньо. Для сім’ї або невеликої команди перейдіть на 4 GB або вилучіть контейнер SeaDoc зі стека й відмовтеся від редагування документів у браузері.
Чому вебінтерфейс Nextcloud працює повільно, хоча завантаження файлів залишається швидким?
Тому що ці два шляхи виконують різну роботу. Під час завантаження дані передаються з диска потоком, а завантаження сторінки запускає PHP, звертається до таблиці кешу файлів і часто очікує на вільний процес PHP-FPM. Перш ніж звинувачувати сховище, порахуйте кількість рядків у oc_filecache і перевірте pm.max_children у пулі PHP-FPM. Таблиця з мільйонами рядків і пул із п’яти процесів створюють саме таку картину.
Чи можна залишити Nextcloud для календарів, а файли перенести в інше сховище?
Так, і часто це найдешевше рішення. Синхронізуйте великі каталоги за допомогою Syncthing або Seafile, а Nextcloud залиште для CalDAV, CardDAV і редагування документів у браузері. Оскільки база даних Nextcloud збільшується разом із кількістю файлів, які він відстежує, саме вилучення з нього великих дерев каталогів знову робить інтерфейс швидким. Видаляйте їх через вебінтерфейс або occ, а не безпосередньо з каталогу даних на диску, інакше в базі даних залишаться рядки, що вказують на файли, яких більше немає.