OpenList на VPS: файловое облако поверх Яндекс.Диска и S3
Обычно «своё облако» означает: купить VPS с большим диском и перетащить туда все файлы. OpenList устроен наоборот. Он ничего не копирует к себе — он подключается к хранилищам, которые у вас уже есть, и показывает их одним списком с общими ссылками и общим WebDAV. Большой диск для этого не нужен, а памяти он занимает 17 мегабайт.
Проблема: файлы есть, а места, где они все вместе, — нет
Хранилищ у обычного человека давно больше одного. Терабайт на Яндекс.Диске, потому что он шёл в подписке. Бакет S3 с бэкапами, потому что так дешевле. Папка с фотографиями прямо на арендованном сервере. Может быть, ещё диск у коллеги, отдающийся по WebDAV. Всё это работает — но по отдельности.
Четыре интерфейса вместо одного
У каждого хранилища свой сайт, своё приложение и свой логин. Чтобы найти файл, надо сначала вспомнить, куда вы его положили.
Ссылку дать по-разному, а из S3 — почти никак
Яндекс.Диск умеет публичные ссылки, но со своим дизайном и своими правилами. В S3 ссылок нет вообще: либо открывать бакет всему интернету, либо генерировать подписанный URL из консоли.
Перенести файл между хранилищами = скачать и залить
Забрать папку с Яндекс.Диска в S3 — это гигабайты вниз на ноутбук и те же гигабайты обратно вверх.
Подключить диском получается не везде
WebDAV есть у Яндекс.Диска, но нет у S3 и нет у папки на чужом сервере. Единого «сетевого диска со всем сразу» не выходит.
Идея OpenList в одном предложении
Это не хранилище, а витрина: вы отдаёте ему ключи от своих хранилищ, а он показывает их содержимое одним деревом папок — с общими ссылками и одним адресом WebDAV на всё сразу.
Из этого следует главный практический вывод. Раз файлы остаются там, где лежали, серверу не нужны ни большой диск, ни много памяти — и подойдёт самый дешёвый тариф. Все цифры в статье — с настоящей установки версии 4.2.5, а не переписанные из чужих гайдов.
Почему OpenList, а не AList
Если поискать в интернете, половина статей будет про AList — программу, которая делает ровно то же самое и существует с 2020 года. Летом 2025 года репозиторий AList сменил владельца. Часть сообщества сочла, что проекту, который целиком держался на доверии к одному человеку, доверять больше нельзя, — и 11 июня 2025 года несколько разработчиков сделали форк, то есть копию исходников, которая дальше живёт своей жизнью.
Форк назвали OpenList. Его позиция сформулирована прямо в описании репозитория: остаться полностью открытым под лицензией AGPL-3.0 и управляться командой, а не одним владельцем. За год он набрал 24 тысячи звёзд, отрастил собственный фронтенд, свою документацию и свои Docker-образы. Актуальная версия на момент написания — 4.2.5 от 7 августа 2026 года.
AList при этом никуда не делся и продолжает выходить — у него 50 тысяч звёзд и регулярные релизы. Так что выбор между ними — вопрос доверия, а не возможностей. Дальше в статье речь идёт про OpenList: под него пишут новые гайды, и вокруг него собралась активная экосистема.
Когда OpenList, а когда что-то другое
У нас на сайте есть статьи и про Nextcloud, и про замену File Browser. Задачи у этих трёх программ разные, и путать их дорого — переезд потом стоит выходных.
| OpenList | Nextcloud | File Browser Quantum | |
|---|---|---|---|
| Где лежат файлы | В ваших хранилищах | На диске сервера | На диске сервера |
| Диск на VPS | Только под систему | Нужен большой | Нужен под все файлы |
| Память | 17 МБ | От 2 ГБ | Десятки МБ |
| Подключить чужое облако | 40+ видов хранилищ | Есть, список короче | Нет |
| Синхронизация папки с ПК | Нет клиента | Есть клиент | Нет |
| Документы, календарь, почта | Нет | Есть | Нет |
Коротко, по задачам:
- Файлы уже разложены по облакам, нужен один вход и общие ссылки — OpenList.
- Нужно полноценное облако с синхронизацией папки, документами и календарём — Nextcloud.
- Нужен простой веб-доступ к одной папке на сервере — File Browser Quantum, он для этого и сделан.
Что понадобится
- VPS с 512 МБ памяти и системным диском на 10 ГБ, Ubuntu 22.04 или 24.04. Диск нужен больше только в одном случае: если вы собираетесь держать часть файлов прямо на сервере.
- Домен и A-запись на IP сервера. В статье это
disk.example.com— подставляйте свой. - Docker. Ставится одной командой, если его ещё нет.
curl -fsSL https://get.docker.com | shdocker --version && docker compose versionШаг 1. Запуск
Создаём рабочую папку. В data будут лежать база с настройками и логи, в files — та самая локальная папка, которую мы позже подключим как одно из хранилищ.
mkdir -p /opt/openlist/data /opt/openlist/files
cd /opt/openlistСамая частая причина, по которой контейнер не стартует
Начиная с версии 4.1 OpenList внутри контейнера работает не от root, а от обычного пользователя с номером 1001. Это правильно с точки зрения безопасности, но папки, созданные вами от root, ему недоступны — контейнер напишет в лог Current user does not have write and/or execute permissions и уйдёт в бесконечный перезапуск. Поэтому владельца папок надо поменять до первого запуска.
chown -R 1001:1001 /opt/openlist/data /opt/openlist/filesТеперь сам файл запуска:
services:
openlist:
image: openlistteam/openlist:v4.2.5
container_name: openlist
restart: unless-stopped
ports:
- '127.0.0.1:5244:5244'
volumes:
- ./data:/opt/openlist/data
- ./files:/mnt/files
environment:
- UMASK=022
- TZ=Europe/MoscowЧто здесь важно:
127.0.0.1:5244:5244— порт виден только с самого сервера. Наружу его выпустит Nginx с сертификатом. Если написать просто5244:5244, панель окажется в открытом интернете без шифрования, и никакой UFW этому не помешает: Docker прописывает свои правила мимо него../files:/mnt/files— папка сервера, которую мы подключим как локальное хранилище. Если хранить файлы на сервере вы не собираетесь, строку можно убрать.UMASK=022— права на загруженные файлы: владельцу запись, остальным чтение.- Тег
v4.2.5вместоlatest— чтобы вы всегда знали, какая версия у вас работает, и обновлялись осознанно.
docker compose up -dЧерез несколько секунд проверяем, что сервис жив:
curl http://127.0.0.1:5244/pingВ ответ должно прийти pong. Если ответа нет или соединение отклонено — смотрите логи: docker compose logs openlist --tail 30.
Шаг 2. Пароль администратора
При первом запуске OpenList создаёт пользователя admin и печатает для него случайный пароль из восьми символов. Печатает один раз, только в консоль — дальше в базе лежит уже необратимый хеш, и посмотреть пароль будет негде. На этом спотыкаются чаще всего.
Поэтому не ищите его в логах, а сразу задайте свой:
docker compose exec openlist ./openlist admin set 'Ваш-длинный-пароль'Команда ответит admin user has been updated и повторит логин с паролем. Работает на запущенном контейнере, перезапускать ничего не нужно. Одинарные кавычки обязательны, если в пароле есть $, ! или пробелы.
Если всё же хочется увидеть тот самый первый пароль — он остаётся в журнале контейнера, пока контейнер не пересоздан:
docker compose logs openlist | grep 'initial password'Шаг 3. Домен, Nginx и HTTPS
Ставим веб-сервер и клиент Let's Encrypt:
sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginxКонфиг сайта. Замените disk.example.com на свой домен:
server {
listen 80;
server_name disk.example.com;
client_max_body_size 0;
proxy_request_buffering off;
location / {
proxy_pass http://127.0.0.1:5244;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}Здесь три строки, без которых всё сломается не сразу, а через неделю, и вы не поймёте почему:
client_max_body_size 0;— снимает ограничение на размер загружаемого файла. По умолчанию Nginx разрешает 1 мегабайт, и любая загрузка крупнее обрывается ошибкой 413. Мы проверили: с настройкой по умолчанию файл на 5 МБ не проходит, с нулём — проходит и на 20, и на 300.X-Forwarded-Proto $scheme;— говорит OpenList, что снаружи HTTPS. Без него все ссылки на файлы он будет строить сhttp://, браузер начнёт их блокировать как небезопасные, и кнопка «скачать» перестанет работать при живом на вид сайте.proxy_request_buffering off;— Nginx не будет сначала складывать весь загружаемый файл к себе на диск, а сразу передаст его дальше. На сервере с диском на 10 ГБ это спасает от переполнения при первой же большой загрузке.
Включаем конфиг и открываем порты. Файрвол настраиваем до выпуска сертификата: Let's Encrypt проверяет домен обращением на 80-й порт, и если он закрыт, сертификата не будет.
sudo ln -s /etc/nginx/sites-available/openlist /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enablesudo certbot --nginx -d disk.example.comCertbot сам допишет сертификат в конфиг и настроит переадресацию с HTTP. Через минуту открывайте https://disk.example.com/@login — логин admin и пароль, который вы задали.
Интерфейс на английском или китайском, русского перевода в проекте нет. Все нужные пункты меню дальше приводятся точно так, как они написаны в панели, — по ним можно ориентироваться, не зная языка. Панель управления живёт по адресу /@manage.
Шаг 4. Подключаем хранилища
Всё интересное происходит в разделе Manage → Storages → Add. Каждое хранилище получает свою точку монтирования — папку в общем дереве. Например, Яндекс.Диск станет папкой /yandex, бакет S3 — папкой /s3, и они окажутся рядом, как соседние каталоги на одном диске.
Папка на самом сервере
Начнём с самого простого — так сразу видно, что установка живая. Driver Local, поля:
| Mount Path | /files |
| Root folder path | /mnt/files |
| Thumbnail | выключено |
/mnt/files — это путь внутри контейнера, соответствующий папке /opt/openlist/files на сервере; так мы записали в docker-compose.yml. Превью картинок лучше выключить: их генерация — единственное, что реально нагружает процессор дешёвого VPS.
Если будете докладывать в эту папку файлы мимо OpenList — через scp или rsync от root, — не забывайте потом про chown -R 1001:1001 /opt/openlist/files. Иначе файлы будут видны и скачиваться, но переименовать или удалить их из веб-интерфейса не получится.
Яндекс.Диск
У OpenList есть отдельный драйвер YandexDisk, но по умолчанию он получает токены через сторонний сервис-посредник проекта. Подключаем по WebDAV: пароль выдаёт сам Яндекс, отзывается одной кнопкой, никаких посредников. Плата за это — файлы будут качаться через ваш сервер, а не напрямую с Диска; если вы раздаёте гигабайты и бережёте трафик, тогда есть смысл возиться с драйвером и токеном.
Сначала получите пароль приложения: Яндекс ID → Безопасность → Пароли приложений → Файлы WebDAV. Это отдельный пароль, который даёт доступ только к Диску и не подходит для входа в почту.
Затем в OpenList: Driver WebDav, поля:
| Mount Path | /yandex |
| Address | https://webdav.yandex.ru |
| Username | ваш логин на Яндексе |
| Password | пароль приложения |
| Root folder path | / |
Тем же способом подключается любой чужой WebDAV — другой OpenList, Nextcloud, NAS в офисе. Адрес пишется целиком, вместе с путём: у Nextcloud это обычно https://cloud.example.com/remote.php/dav/files/имя_пользователя.
S3-совместимое хранилище
Подойдёт и облачное (Яндекс Object Storage, Selectel), и своё на Garage. Driver S3:
| Mount Path | /s3 |
| Bucket | имя бакета |
| Endpoint | https://storage.yandexcloud.net |
| Region | ru-central1 |
| Access key id / Secret access key | ключ доступа |
| Root folder path | / |
Для Selectel адрес другой: https://s3.storage.selcloud.ru, регион ru-1. Для своего хранилища на MinIO или Garage адрес — ваш собственный, и там же нужно включить галочку Force path style: эти программы не понимают адреса вида бакет.домен и ждут домен/бакет. У облачных провайдеров галочка не нужна.
Заводите под OpenList отдельный ключ с доступом только к нужному бакету. Ключи хранятся на сервере в открытом виде — об этом ниже.
Приятный побочный эффект
Когда хранилища подключены, файлы между ними можно перекладывать прямо в браузере: выделить папку на Яндекс.Диске и скопировать её в /s3. Данные пойдут через сервер, а не через ваш домашний интернет, — и вы просто закроете вкладку, задача доделается сама в разделе Manage → Tasks.
Кто платит за трафик: две настройки, которые надо понять
Это самое важное место статьи. От двух полей в настройках хранилища зависит, пройдут гигабайты скачиваемого фильма через ваш VPS или не пройдут вовсе. На дешёвом тарифе с месячным пакетом трафика разница принципиальная.
Web Proxy — для скачивания из браузера
Выключено — OpenList отдаёт браузеру подписанную ссылку самого хранилища, и файл качается напрямую оттуда. Ваш сервер передаёт только список файлов, то есть килобайты. Включено — весь файл идёт через сервер. Включать имеет смысл, только если надо спрятать от посетителя настоящий адрес хранилища. Галочка есть не у всех драйверов: там, где прямых ссылок не бывает, её просто нет.
WebDAV Policy — для сетевого диска
302 redirect — то же самое, но для программ: клиенту говорят «иди за файлом туда». Трафик мимо сервера, но переадресацию понимают не все программы. Native proxy — файл идёт через сервер, зато работает с любым клиентом. Если сетевой диск подключился, папки видны, а файлы не открываются — переключите на Native proxy, это лечит почти всегда.
Значения по умолчанию расставлены разумно, и трогать их обычно не нужно:
- S3 и другие хранилища с прямыми ссылками — Web Proxy выключен, WebDAV Policy
302 redirect. Трафик идёт мимо сервера. - Любое подключение по WebDAV, в том числе наш Яндекс.Диск, — проксирование включено. Иначе браузеру пришлось бы идти на чужой сервер с вашим паролем, а так пароль остаётся только у вас. Цена — трафик через VPS.
- Локальная папка — выбора нет, файлы физически лежат на сервере и всегда идут через него.
А вот здесь умолчание другое
Публичные ссылки, которые вы раздаёте людям, по умолчанию качаются через ваш сервер независимо от настроек хранилища. Отвечает за это галочка Share force proxy в Manage → Settings → Global. Так сделано намеренно: иначе получатель ссылки увидел бы прямой адрес вашего бакета. Если вы раздаёте большие файлы и бережёте трафик — выключите её, понимая эту цену. Мы проверили: с галочкой сервер отдаёт файл сам, без неё — переадресует прямо в хранилище.
Шаг 5. Подключаем всё это диском
OpenList отдаёт наружу собственный WebDAV по адресу /dav, и в нём видно всё дерево сразу — и S3, и Яндекс.Диск, и локальную папку. Получается один сетевой диск, за которым стоят несколько разных хранилищ. Логин и пароль — те же, что от панели.
Сначала включите запись, иначе диск будет только для чтения
Право писать по WebDAV выключено по умолчанию даже у администратора— мы это проверили, попытка скопировать файл возвращает 403. Идите в Manage → Users, откройте своего пользователя и включите галочку WebDAV manage (WebDAV read уже включена). Сохраните — и войдите в панель заново, старая сессия после правки пользователя перестаёт действовать.
Windows
В проводнике: Этот компьютер → Подключить сетевой диск, адрес https://disk.example.com/dav, галочка «Использовать другие учётные данные», логин и пароль от OpenList. Именно https — по http Windows откажется передавать пароль без правки реестра.
У встроенного клиента Windows есть особенность, о которой мало кто знает: файлы больше 50 МБ он скачивать отказывается. Ограничение стоит с времён Windows XP и снимается в реестре — поднимем предел до 2 гигабайт:
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\WebClient\Parameters' `
-Name FileSizeLimitInBytes -PropertyType DWord -Value 2147483647 -Force
Restart-Service WebClientЗдесь именно New-ItemProperty с -Force, а не Set-ItemProperty: по умолчанию этого значения в реестре нет, и «изменить» будет нечего.
Linux и macOS
В macOS: Finder → Переход → Подключение к серверу и тот же адрес. В Linux удобнее всего через rclone: он быстрее davfs2 и не требует правки системных конфигов.
curl https://rclone.org/install.sh | sudo bash
sudo apt install -y fuse3rclone config create openlist webdav \
url=https://disk.example.com/dav vendor=other \
user=admin pass="$(rclone obscure 'Ваш-длинный-пароль')"mkdir -p ~/disk
rclone mount openlist: ~/disk --vfs-cache-mode writes --daemonПроверить, что диск виден, можно и без монтирования: rclone lsd openlist: — в ответ придёт список подключённых хранилищ. Обе команды мы прогнали на живой установке.
Телефон
Отдельного приложения у OpenList нет, но сайт нормально работает в мобильном браузере, включая загрузку файлов. Если хочется именно диск в файловом менеджере — подойдёт любой менеджер с поддержкой WebDAV: на Android это, например, бесплатный CX File Explorer, на iOS — Documents от Readdle. Адрес, логин и пароль те же.
Шаг 6. Публичные ссылки
Важная деталь, которая многих удивляет: сразу после установки посторонний не увидит вообще ничего. Гостевой пользователь создаётся отключённым, и на любой запрос без входа сервер отвечает Guest user is disabled, login please. Это хорошее умолчание — не надо срочно ничего закрывать.
Чтобы поделиться файлом или папкой, не открывая доступ ко всему остальному, есть раздел Manage → Shares. Создаёте запись, указываете пути — и получаете ссылку вида https://disk.example.com/@s/hJ2jie4d, которая работает без логина. Настраиваются три ограничителя:
Share code— код доступа. Ссылка без него открывается только на пустую форму ввода. Мы проверили: без правильного кода список файлов не отдаётся вообще.Expiration time— дата, после которой ссылка перестаёт работать.Maximum access count— сколько раз файл можно скачать. Удобно для «отправил одному человеку, дальше пусть не расходится».
Ссылку можно отозвать в любой момент кнопкой Disable — файл при этом остаётся на месте, меняется только доступ к нему.
Шаг 7. Не дать скачать всё сразу
Дешёвый VPS обычно продают с месячным пакетом трафика или с честным лимитом скорости канала. Один человек, скачавший папку с фильмами в двадцать потоков, способен сжечь пакет за вечер, а заодно положить всё остальное на сервере. Четыре настройки, которые стоит выставить сразу.
Ограничить скорость отдачи
Manage → Settings → Traffic → Max client download speed. Число — в килобайтах в секунду, -1 означает «без ограничений». Это общий предел на всех посетителей сразу, а не на каждого. Мы проверили на настоящей загрузке: значение 2048 даёт около 2 МБ/с, применяется мгновенно, перезапуск не нужен. Для сервера с каналом 100 Мбит разумно оставить половину, чтобы панель не подвисала: 6000.
Выключить скачивание папки архивом
Manage → Settings → Global → Package download. По умолчанию включено: посетитель может нажать одну кнопку и утянуть всю папку целиком. Если раздаёте ссылки посторонним — выключите, пусть качают файлы по одному.
Сделать прямые ссылки временными
Manage → Settings → Global → Link expiration, значение в часах. По умолчанию 0 — ссылка на файл, однажды скопированная из адресной строки, работает вечно. Поставьте 24, и утёкшая ссылка протухнет за сутки.
Дать человеку доступ к одной папке, а не ко всему
Manage → Users → Add. Ключевое поле — Base path: укажите /s3/proekt, и человек будет видеть эту папку как корень, а про остальные хранилища даже не узнает. Ограничение действует и в браузере, и по WebDAV — мы проверили оба. Галочки прав выдавайте по одной: чтобы человек мог смотреть и скачивать через сайт, не нужна ни одна из них. WebDAV read добавьте, только если ему нужен ещё и сетевой диск.
И ещё одно, про приватность. Просмотр офисных документов (docx, xlsx, pptx) устроен так: OpenList передаёт ссылку на файл сервисам Microsoft или Google, и открывают документ уже они. Для рабочих файлов это может быть неприемлемо — соответствующие строки убираются в Manage → Settings → Preview → Iframe previews. Просмотр PDF и картинок работает у вас и никуда ничего не отправляет.
Обновление и резервная копия
Всё состояние OpenList — это папка /opt/openlist/data: файл config.json и база data.db размером в сотню килобайт. Копию делаем на остановленном контейнере — это занимает пару секунд, зато база гарантированно не окажется недописанной:
docker compose stop
BACKUP=~/openlist-$(date +%F).tar.gz
tar czf "$BACKUP" -C /opt/openlist data && chmod 600 "$BACKUP"
docker compose startЭтот архив — связка ключей от всех ваших хранилищ
Ключи S3, пароли приложений, токены — всё лежит в data.db в открытом виде. Мы проверили: строки достаются из файла обычным поиском по тексту. Не кладите такую копию в тот же самый бакет, который через неё подключается, и не оставляйте в домашней папке с правами по умолчанию.
Обновление — смена тега в docker-compose.yml на новую версию и две команды. Данные лежат снаружи контейнера, так что при обновлении ничего не теряется:
docker compose pull && docker compose up -dПеред обновлением сделайте копию: откат — это вернуть старый тег и распаковать архив обратно.
Частые проблемы
Контейнер перезапускается по кругу и ничего не открывается
Посмотрите docker compose logs openlist --tail 20. Если там строка Current user does not have write and/or execute permissions — вы создали папки от root, а внутри контейнера работает пользователь 1001. Лечится так:
docker compose down
chown -R 1001:1001 /opt/openlist/data /opt/openlist/files
docker compose up -dПароль администратора потерян
Восстановить старый нельзя — в базе лежит только хеш. Задайте новый той же командой, что и при установке: docker compose exec openlist ./openlist admin set 'Новый-пароль'. Хранилища, ссылки и пользователи при этом не пострадают.
Загрузка обрывается на файлах больше мегабайта
Ошибка 413 Request Entity Too Large — это Nginx, а не OpenList. В конфиге сайта должна быть строка client_max_body_size 0; на уровне server, а не внутри location. Учтите, что после certbot блоков server в файле два: новый — только переадресация с 80-го порта, а ваш прежний теперь слушает 443. Строка нужна в том, где есть listen 443. После правки — sudo nginx -t && sudo systemctl reload nginx.
Сайт открывается, а файлы не скачиваются
Откройте консоль браузера (F12): скорее всего, там жалобы на смешанное содержимое, а ссылки начинаются с http://. Значит, OpenList не знает, что снаружи HTTPS. Добавьте в конфиг Nginx строку proxy_set_header X-Forwarded-Proto $scheme; и перезагрузите конфигурацию.
Сетевой диск подключился, но записать в него ничего нельзя
Классика: право WebDAV manage выключено по умолчанию даже у администратора. Включите его в Manage → Users и войдите в панель заново. Если запись всё ещё не идёт именно в локальную папку — проверьте, что она принадлежит пользователю 1001: ls -ld /opt/openlist/files.
Хранилище горит красным, список файлов пустой
В колонке Status списка хранилищ OpenList пишет текст ошибки прямо от хранилища — читайте его, он обычно точный. Три самых частых причины: просроченный пароль приложения у Яндекса, неверный регион у S3 и включённый Force path style там, где он не нужен (или выключенный там, где нужен). После правки нажмите кнопку обновления списка в самом интерфейсе: OpenList кэширует содержимое папок на 30 минут.
Коротко: порядок действий
- VPS с 512 МБ памяти и диском на 10 ГБ, Ubuntu 22.04 или 24.04
curl -fsSL https://get.docker.com | sh- A-запись
disk.example.comна IP сервера mkdir -p /opt/openlist/data /opt/openlist/files, затем обязательноchown -R 1001:1001docker-compose.ymlс портом на127.0.0.1, затемdocker compose up -d- Свой пароль:
docker compose exec openlist ./openlist admin set '...' - Nginx с
client_max_body_size 0иX-Forwarded-Proto, потомufw allow 'Nginx Full'иcertbot --nginx Manage → Storages → Add: локальная папка, Яндекс.Диск по WebDAV, бакет S3Manage → Users: включитьWebDAV manage, если нужен диск с записьюManage → Settings → Traffic: ограничить скорость отдачи- Раздавать не логином, а ссылками из
Manage → Shares— с кодом и сроком - Копия
/opt/openlist/dataв надёжное место: там ключи от всех хранилищ
OpenList не хранит файлы у себя и в покое занимает 17 МБ памяти — это тот редкий случай, когда самого дешёвого тарифа действительно достаточно
Дешёвые VPS 2026 →