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

Видео:

1 лайк

О круто, будем посмотреть. Я пока остановился на этом файловом менеджере. Настроил 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 напишу

2 лайка

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

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

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

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

Доброе время суток, пытаюсь поставить в 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 лайк
  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 минуты