Как перестать мучиться с передачей файлов и поднять свой облачный менеджер
Представьте ситуацию: вам нужно быстро дать заказчику доступ к папке с макетами, собрать у студентов курсовые или организовать общую «свалку» документов для команды. Можно, конечно, завести корпоративный Google Drive или мучаться с FTP-клиентами, но иногда хочется чего-то своего, легкого и под полным контролем.
Недавно наткнулся на FileGator. Это опенсорсный менеджер файлов на PHP и Vue.js, который превращает любую папку на сервере или облачное хранилище в аккуратный веб-интерфейс. Он выглядит как нормальный современный проводник и не требует от пользователя знания консоли или установки стороннего софта.
Что это вообще такое
Если вкратце, FileGator — это фронтенд для вашей файловой системы. Вы ставите его на сервер, и у вас появляется веб-панель, где можно перетаскивать файлы, создавать папки, просматривать картинки и даже редактировать код прямо в браузере.
Самое приятное, что проект не пытается быть «комбайном» вроде Nextcloud. Тут нет встроенных календарей, чатов и почтовых клиентов. Только файлы и пользователи. Благодаря этому он работает быстро и не требует мощного железа.
Главные фишки, которые упрощают жизнь
Я выделил несколько вещей, которые делают этот проект полезным в реальной работе.
Умная загрузка файлов Разработчики использовали библиотеку Resumable.js. Это значит, что загрузка идет частями (chunked upload). Если интернет моргнет во время заливки архива на пару гигабайт, загрузка просто встанет на паузу, а потом продолжится с того же места. Для веб-интерфейсов это до сих пор не самая тривиальная задача, а тут она решена «из коробки».
Гибкие хранилища FileGator не привязан только к локальному диску. Благодаря поддержке Flysystem, вы можете подключить:
- Локальные папки сервера
- Amazon S3 или DigitalOcean Spaces
- Dropbox
- FTP/SFTP серверы
- Azure Blob Storage
Это удобно, если вы хотите дать команде удобный доступ к S3-бакету, не выдавая ключи от AWS-консоли.
Многопользовательский режим
Вы можете создавать разных пользователей, назначать им роли (админ или обычный юзер) и, что самое важное, ограничивать их домашними папками. Допустим, фрилансер видит только одну папку /projects/freelancer, а вы видите все дерево каталогов.
Техническая начинка
Под капотом довольно стандартный, но крепко сбитый стек. Бэкенд написан на PHP (поддерживается работа без базы данных, на JSON-файлах), а фронтенд — на Vue.js с использованием Bulma и Buefy.
Интересно, что проект полностью развязан (decoupled). Это значит, что если вам не нравится стандартный способ хранения сессий или авторизации, вы можете подкинуть свои адаптеры. Например, можно хранить сессии в Redis или MongoDB, а пользователей подтягивать из базы данных WordPress.
Кому и зачем это нужно
В моей практике такие инструменты обычно пригождаются в трех случаях:
- Замена FTP для клиентов. Давать доступ к FTP людям, которые не знают, что такое FileZilla — это боль. Проще скинуть ссылку на FileGator.
- Сбор данных. Когда нужно, чтобы внешние контрагенты загрузили пачку тяжелых логов, фотографий или документов в ваше хранилище.
- Быстрое управление CDN. Если вы храните статику в облаке, FileGator станет удобным пультом управления для удаления или обновления файлов без написания скриптов.
Кстати, для быстрой проверки проект можно запустить одной командой в Docker:
docker run -p 8080:8080 -d filegator/filegator
После этого идете на localhost:8080, логинитесь под admin/admin123 и можно тестировать.
Есть ли нюансы
Конечно, не обошлось без ограничений. Например, FileGator не дружит с симлинками из-за особенностей Flysystem. Также здесь нет поддержки смены владельца файла (chown) через интерфейс. И, как честно предупреждают авторы, если вы засунете десять тысяч файлов в одну директорию, интерфейс начнет заметно подтормаживать.
Стоит ли пробовать
Если вам нужно простое решение для управления файлами «здесь и сейчас», определенно да. Это не замена полноценным корпоративным хранилищам с версионностью и совместным редактированием документов, но как легкий и быстрый файловый менеджер FileGator справляется отлично.
Проект живой, обновляется и имеет понятную документацию. Если у вас завалялся лишний контейнер или пара сотен мегабайт на хостинге, попробуйте поднять его для личных нужд — это гораздо удобнее, чем перекидывать файлы самому себе в мессенджерах.
