NextExplorer. Web доступ к файлам

Мы с Вами уже знакомились с
web-file-browser и его актуальным форком => quantum

А сегодня посмотрим на еще 1 инструмент для доступа\загрузки\предоставления доступа к Вашим файлам

nextExplorer

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

Документация: explorer.nxz.ai

Демо

Основные моменты

  • По умолчанию обеспечивается безопасность: локальные пользователи и группы, опционально доступен единый вход OIDC.
  • Быстрый предварительный просмотр: изображения, видео, PDF-файлы, миниатюры (FFmpeg) и встроенные проигрыватели.
  • Встроенный редактор: редактирование текста/кода с подсветкой синтаксиса (расширяется с помощью EDITOR_EXTENSIONS ).
  • Рабочие процессы предоставления доступа: предоставление доступа по ссылкам (только для чтения/чтение-запись), гостевой доступ, «Доступно мне».
  • Интеллектуальный поиск: поиск по имени файла и содержимому с использованием Ripgrep, с настраиваемыми ограничениями.
  • Современный пользовательский интерфейс: табличное/списочное/столбцовое отображение, перетаскивание элементов, контекстные меню, сочетания клавиш.
  • Docker-native: единый образ, монтирование томов в каталог /mnt , совместимость с обратным прокси через PUBLIC_URL .

Docker compose

Docker Compose
services:
  nextexplorer:
    image: nxzai/explorer:latest
    container_name: nextexplorer
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./config:/config
      - ./cache:/cache
      # Each /mnt/<Label> mount becomes a top-level volume in the UI
      - /path/to/your/files:/mnt/Files
    environment:
      - NODE_ENV=production
      - PUBLIC_URL=http://localhost:3000

Видео:

О круто, будем посмотреть. Я пока остановился на этом файловом менеджере. Настроил OIDC, OnlyOffice

Роман, спасибо за поддержку!
Но чтобы Вам что-то новое показать, это надо ну ооочень что-то инстересное найти в проекте =) Я вот пока сегодня снимал, узнал что добавили zip архивацию через GUI..

Обновился, версия 2.1.8 уже

  • Русский язык появился и активировался по-умолчанию. Кстати, i18n это не опенсорс проект, а сокращение от internationalization, l10n от localization (число означает количество пропущенных символов), т.е. это просто возможность смены “локали”, интернационализация подразумевает смену языка, локализация добавляет к этому еще и региональные настройки, например, формат даты и времени, разделители в числах, первый день недели и т.д.
  • По кодекам, есть подозрение, что используется стандартный html контейнер video соответственно, это вам не jellyfin или plex, которые могут транскодировать видео для воспроизведения в браузере, то тут просто передается как есть
  • Есть еще PWA, но у меня почему-то не хочет появляться иконка, но из браузера открывается. (Появляется, но называется MySite)

Пока является основным, но не сильно используемым мною файловым менеджером, лично мои мымли.

  • Ставил ранее Palmr, но мне не нравится развитие того проекта, возможно что опубликую nextexplorer за пределами локалки и буду его пользовать для шаринга по ссылке, хотя.. смущают вопросы безопасности
  • Нравится, что он работает с реальными файлами на диске, т.е. они же доступны по самбе, например, я могу залить файлы по SMB/NFS и потом получить ссылку для скачивания в nextexplorer
  • Какое-то движение в сторону облаков не сильно здоровое, сейчас все, кому не лень разрабатывают это, но я пока остановился на cloudreve и даже в конце года купил Pro версию
  • Но по сравнению с cloudreve, который хранит файлы в биде блобов на диске и нельзя просто взять и подсунуть файл в папку, тут намного проще работа с файлами на стороне, собственно, я прокинул общие каталоги типа сканов документов, фотки, видео и т.д. т.е. то, что обычно управляется вне веб файлового менеджера

Буду наблюдать за проектом, может даже что-то в issues напишу

О как, круто. Странно, что под него нет локали каталогах. Но видимо живёт под капотом и скорее всего завязывается на язык системы.

Спасибо за повышение “ерундиции”, был уверен, что это модуль или фреймворк с одной из открытых лицензий..

Спасибо, выглядит хорошо, надо будет посмотреть/показать сообществу.

Круть, кто то “из наших” добавли, даже два пул реквеста =)

Доброе время суток, пытаюсь поставить в TrueNAS как стандартное приложение. если прописываю реальный url и даю доступ через Nginx, то всё работает. но хотелось бы настроить для работы только внутри локальной сети . Если прописываю Public URL в виде http:// 192.168.1*.* ,* ничего не отрывается. подскажите как правильно настроить для работы в локальной сети ?

лучше всего - приложить Ваш docker-compose

services:
  nextexplorer:
    image: nxzai/explorer:latest
    container_name: nextexplorer
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - ./config:/config
      - ./cache:/cache
      # Each /mnt/<Label> mount becomes a top-level volume in the UI
      - /opt:/mnt/Files
    environment:
      - NODE_ENV=production
      - USER_VOLUMES=true
      - PUBLIC_URL=http://192.168.1.145:3000
      #- PUBLIC_URL=https://nextexplorer.samohosting.ru
      #- TRUST_PROXY=true
networks: {}

Обратите внимание, что я указываю 3000 порт и в public_url и в ports

Если Вы указываете просто ip PUBLIC_URL=http://192.168.1.145
То нужно изменить в блоке ports порт слева на 80

    ports:
      - 80:3000

Зачем? т.к. протокол http это :80 даже если Вы его не прописываете - Вас будет вести на этот порт, а он у Вас не “открыт” и никуда не ведет.

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

Добрый день,
Буквально на днях (чисто случайно) наткнулся на это видео от самохостинга, и меня это заинтересовало, но опыта работы в Proxmox тем более с докерами не имею, я только начал знакомится с Proxmox и виртуализацией в целом, не могли бы Вы продемонстрировать пошаговую инструкцию по установке NextExplorer (т.к. в обзоре уже только функционал, без установки), иначе познать данную науку - невозможно!

Глупых вопросов не бывает(с)
Не Стыдно не знать, стыдно не спросить(с)

На этом народные мудрости кончаются, но если серьезно, то когда Вы сами потыкались, но не поняли - спрашивайте. Подскажут - хорошо, нет.. ну значит не нашлось у ребят или меня времени. Тут главное понимать, что могут просто дать ссылку на документацию, не потому что ленивые, а потому что Вам все равно придется потихоньку в это все “въезжать”.
Подход “копируй\вставляй” крайне не долговечен, у всех свои конфигурации и потребности, нужно плавно изучать суть вопроса.

Удачного самохостинга!

  1. Развернуть VM\LXC
  2. Установить туда докер
  3. Установить стэк менеджер(Портейнер или Докедж или иной по вкусу)
  4. Запустить стек взяв docker compose выше в этой теме или с оф. репозитория

Быстро можно попробовать так:

  1. В Proxmox shell ввести
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dockge.sh)"

Что такое Скрипты помощники - смотреть на канале

  1. Как пользоваться Докедж
    https://www.youtube.com/watch?v=CNfBxfE_xVs

  2. Ну а дальше - изучать, как это все работает
    Прям идти по блока и смотреть видео

Здравствуйте! Никак не могу побороть проблему. Для меня главное - доступ из интернета. Пользуюсь KeenDNS, в public_url Прописываю его, но тогда пропадает возможность зайти через локальный адрес, и что самое печальное не работает интеграция с OnlyOffice

В роутере в разделе Сетевые правила -> Доменное имя есть Доступ к веб-приложениям домашней сети Добавьте домен четвёртого уровня и привяжите к нему ip вашего сервиса в lan сети. Там же, в настройках, установите способ доступа.

Приветствую. Помогите победить интеграцию OnlyOffice с NextExplorer при использовании NginxProxyManager и Authelia. OnlyOffice, NextExplorer, NginxProxyManager установлены через Docker. Authelia установлена через LXC. Всё настроено и вроде как работает, но при открытиии документов в NextExplorer пишет: “Не удается сохранить документ. Проверьте параметры подключения или обратитесь к вашему администратору”. Если отключить Authelia, то документы открываются без проблем. Как мне кажется, в конфигурации хоста для NextExplorer в NginxProxyManager нехватает каких-то заголовков, которые должны проксироваться. Скрины с ошибкой и конфигурации прикреплю ниже.

Скрин с ошибкой

Конфигурация NextExplorer

environment:

  • AUTH_MODE=disabled
  • NODE_ENV=production
  • ONLYOFFICE_LANG=ru
  • ONLYOFFICE_SECRET=secret
  • ONLYOFFICE_URL=URL моего OnlyOffice
  • PUBLIC_URL=URL моего Nextexplorer
Конфигурация хоста Authelia в NginxProxyManager

location / {
set $upstream_authelia http://192.168.1.51:9091;
proxy_pass $upstream_authelia;
client_body_buffer_size 128k;

    #Timeout if the real server is dead
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

    # Advanced Proxy Config
    send_timeout 5m;
    proxy_read_timeout 360;
    proxy_send_timeout 360;
    proxy_connect_timeout 360;

    # Basic Proxy Config
    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_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Uri $request_uri;
    proxy_set_header X-Forwarded-Ssl on;
    proxy_redirect  http://  $scheme://;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_cache_bypass $cookie_session;
    proxy_no_cache $cookie_session;
    proxy_buffers 64 256k;

    # If behind reverse proxy, forwards the correct IP
    set_real_ip_from 10.0.0.0/8;
    set_real_ip_from 172.0.0.0/8;
    set_real_ip_from 192.168.1.0/16;
    set_real_ip_from fc00::/7;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
}
Конфигурация хоста NextExplorer в NginxProxyManager

location /authelia {
internal;
set $upstream_authelia http://192.168.1.51:9091/api/verify; #ADD YOUR IP AND PORT OF AUTHELIA
proxy_pass_request_body off;
proxy_pass $upstream_authelia;
proxy_set_header Content-Length “”;

# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
client_body_buffer_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr; 
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect  http://  $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;

send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;

}

location / {
    set $upstream_explorer http://192.168.1.161:4322;  #CHANGE NAME AND IP AND PORT
    proxy_pass $upstream_explorer;  #change name of the service

	auth_request /authelia;
	auth_request_set $target_url $scheme://$http_host$request_uri;
	auth_request_set $user $upstream_http_remote_user;
	auth_request_set $groups $upstream_http_remote_groups;
	proxy_set_header Remote-User $user;
	proxy_set_header Remote-Groups $groups;
	error_page 401 =302 https://auth.myserver.ru/?rd=$target_url; #change YOURDOMAIN.COM to your domain

	client_body_buffer_size 128k;

	proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

	send_timeout 5m;
	proxy_read_timeout 360;
	proxy_send_timeout 360;
	proxy_connect_timeout 360;

	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_set_header X-Forwarded-Host $http_host;
	proxy_set_header X-Forwarded-Uri $request_uri;
	proxy_set_header X-Forwarded-Ssl on;
	proxy_redirect  http://  $scheme://;
	proxy_http_version 1.1;
	proxy_set_header Connection "";
	proxy_cache_bypass $cookie_session;
	proxy_no_cache $cookie_session;
	proxy_buffers 64 256k;

	set_real_ip_from 192.168.1.0/16;
	real_ip_header X-Forwarded-For;
	real_ip_recursive on;

}

NextExplorer работает нормально с OIDC, не надо использовать Proxy Auth там, где это можно не использовать - это дикий костыль

NextExplorer и OnlyOffice должны общаться между собой, с Authelia в режиме MitM сервис OnlyOffice напрямую обращается к NextExplorer за файлом, в параметрах передается временный токен аутентификации, но Authelia не знает об этом и запрашивает аутентификацию у OnlyOffice, которую он, естественно, проваливает.

Варианта 2:

  1. Перевести NextExplorer на полноценный OIDC
  2. Отловить в логах запрос (а он там точно есть) и написать правило для Authelia, которое для данных типов запросов будет разрешать незащищенный доступ

Ребята, как установить это чудо-юдо?
Ставлю pve контейнер ubuntu, туда docker, в докер nextexplorer, докер не запускается. Иногда чудом запускается, но не имеет доступа к файлам и тд.
Какой правильный вариант?
Я уже устал переустанавливать контейнер с разными параметрами.

это не связано с данным ПО
стоит создать отдельную тему в разделе Docker описав, что именно у Вас происходит, какие ошибки видите при

docker ps

Чтобы Вам смогли помочь - нужно дать больше информации:

  • какой конфиг используете
  • куда хотите дать доступ?

Пока звучит как

“Ребята, машина не едет, что делать?”

Куда не едет? не заводиться? какая машина? электричесво(акб) в норме?крутит стартер? Не ясно..

Смотрели ли Вы ролик про матрешку ?
там я показываю, как связаны между собой каталоги на разных уровнях\слоях.

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

Теперь другой вопрос.
Я создал нового юзера в некст эксплорер. Как мне ограничить для этого юзера одну папку? Т.е. чтобы он имел доступ только к своей папке?

Видео в 1ом посте темы, с 21 минуты