VPSРейтинг
Self-hosted24 августа 2026 · 20 мин

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. Задачи у этих трёх программ разные, и путать их дорого — переезд потом стоит выходных.

 OpenListNextcloudFile 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. Ставится одной командой, если его ещё нет.
от root на чистом Ubuntu
curl -fsSL https://get.docker.com | sh
проверка
docker --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

Теперь сам файл запуска:

nano /opt/openlist/docker-compose.yml
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 — чтобы вы всегда знали, какая версия у вас работает, и обновлялись осознанно.
из /opt/openlist
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 на свой домен:

sudo nano /etc/nginx/sites-available/openlist
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 enable
HTTPS
sudo certbot --nginx -d disk.example.com

Certbot сам допишет сертификат в конфиг и настроит переадресацию с 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
Addresshttps://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имя бакета
Endpointhttps://storage.yandexcloud.net
Regionru-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 гигабайт:

PowerShell от имени администратора
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 и не требует правки системных конфигов.

установка rclone и fuse
curl https://rclone.org/install.sh | sudo bash
sudo apt install -y fuse3
разовая настройка
rclone 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 размером в сотню килобайт. Копию делаем на остановленном контейнере — это занимает пару секунд, зато база гарантированно не окажется недописанной:

из /opt/openlist
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 на новую версию и две команды. Данные лежат снаружи контейнера, так что при обновлении ничего не теряется:

из /opt/openlist
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. Лечится так:

из /opt/openlist
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 минут.

Коротко: порядок действий

  1. VPS с 512 МБ памяти и диском на 10 ГБ, Ubuntu 22.04 или 24.04
  2. curl -fsSL https://get.docker.com | sh
  3. A-запись disk.example.com на IP сервера
  4. mkdir -p /opt/openlist/data /opt/openlist/files, затем обязательно chown -R 1001:1001
  5. docker-compose.yml с портом на 127.0.0.1, затем docker compose up -d
  6. Свой пароль: docker compose exec openlist ./openlist admin set '...'
  7. Nginx с client_max_body_size 0 и X-Forwarded-Proto, потом ufw allow 'Nginx Full' и certbot --nginx
  8. Manage → Storages → Add: локальная папка, Яндекс.Диск по WebDAV, бакет S3
  9. Manage → Users: включить WebDAV manage, если нужен диск с записью
  10. Manage → Settings → Traffic: ограничить скорость отдачи
  11. Раздавать не логином, а ссылками из Manage → Shares — с кодом и сроком
  12. Копия /opt/openlist/data в надёжное место: там ключи от всех хранилищ

OpenList не хранит файлы у себя и в покое занимает 17 МБ памяти — это тот редкий случай, когда самого дешёвого тарифа действительно достаточно

Дешёвые VPS 2026 →