Бекап статті “Установка web сервера filebrowser” з docs.mineland.net
Файловый браузер - это web сервер, через который можно получить доступ к файлами на хосте. Доступ можно настроить к отдельным папкам для отдельных пользователей.
Файловый браузер работает на базе https://filebrowser.org/.

Установка web сервера filebrowser
Подключаемся по ssh к хосту, на котором находятся файлы, доступ к которым нужно осуществить.
Если файловый браузер filebrowser уже установлен, тогда этот шаг можно пропустить. Чтобы это проверить, мы можем воспользоваться командой:
filebrowser versionЕсли такая команда не найдена, значит необходимо выполнить установку.
Скрипт установки filebrowser:
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bashfilebrowserНажимаем Ctrl+С, чтобы остановить filebrowser, и продолжаем установку:
mkdir -p /etc/filebrowsermkdir -p /var/lib/filebrowser/base
filebrowser config set --address 0.0.0.0mv filebrowser.db /var/lib/filebrowser
cat > /etc/filebrowser/.filebrowser.yml <<EOFdatabase: /var/lib/filebrowser/filebrowser.dbaddress: 0.0.0.0port: 8090root: /var/lib/filebrowser/baseEOF
cat > /etc/systemd/system/filebrowser.service <<EOF[Unit]Description=File browserAfter=network.target
[Service]User=rootGroup=rootExecStart=/usr/local/bin/filebrowser
[Install]WantedBy=multi-user.targetEOFЗапускаем службу:
systemctl daemon-reloadsystemctl start filebrowsersystemctl enable filebrowsersystemctl status filebrowserЕсли все сделали правильно, тогда служба должна запуститься успешно, а ее вывод должен быть таким:
Dec 21 08:50:02 host4.mineland.local systemd[1]: Started File browser.Dec 21 08:50:02 host4.mineland.local filebrowser[14701]: 2020/12/21 08:50:02 Using config file: /etc/filebrowser/.filebrowser.ymlDec 21 08:50:02 host4.mineland.local filebrowser[14701]: 2020/12/21 08:50:02 Listening on [::]:8090Если все хорошо, переходим в браузере по адресу http://айпи_хоста:8090/, авторизируемся под логином admin и паролем admin. В настройках профиля нужно поменять пароль и сохранить его в keepass.
Проксируем filebrowser за NAT
Чтобы не афишировать айпи адрес хоста, где установлен filebrowser, можно проксировать его через прокси хост.
Для этого подключаемся по ssh к прокси хосту и создаем на нем такие iptables правила:
iptables -t nat -A PREROUTING -p tcp --dport 8091 -j DNAT --to-destination айпи_хоста:8090iptables -t nat -A POSTROUTING -p tcp --dport 8090 -j SNAT --to-source айпи_прокси_хостаВ данном примере используется порт 8091 на прокси-хосте, но такой порт может быть уже занят. Проверить занятость порта можно такими командами:
netstat -tnlp | grep :8091iptables -vnL -t nat --line-numbers | grep 8091Если эти команды дали какой-то вывод, значит такой порт занят, и нужно выбрать любой другой.
Пробуем подключиться через браузер к прокси хосту по адресу http://айпи_прокси_хоста:8091/.
Если все работает, тогда осталось поместить получившиеся iptables правила в файл /etc/iptables/iptables.d/10-nat, чтобы они сохранялись после перезагрузки системы. Пример такого файла:
*nat
# proxy-A PREROUTING -p tcp --dport 8091 -j DNAT --to-destination айпи_хоста:8090-A POSTROUTING -p tcp --dport 8090 -j SNAT --to-source айпи_прокси_хоста
COMMITСоздание пользователя
Открываем filebrowser в браузере, авторизируемся под аккаунтом админки admin, пароль от него можно узнать у любого админа Mineland.
После входа в аккаунт, открываем настройки Settings и переходим во вкладку User Management. Напротив заголовка Users есть кнопка New, жмем на нее.
В форме создания юзера указываем имя пользователя Username и пароль Password. Также нужно настроить параметр Scope. В это поле нужно указать путь к папке, которая будет доступна для этого пользователя. Папки всех пользователей располагаются по пути /var/lib/filebrowser/username, например, для пользователя с именем lokha его папка будет /var/lib/filebrowser/lokha.
Дальше подключаемся по ssh к хосту, на котором мы создали пользователя. На этом хосте создаем папку, которую мы указали при создании пользователя:
mkdir -p /var/lib/filebrowser/base/usernameПользователь он не сможет покинуть пределы этого каталога.
На данном этапе уже можно подключиться через filebrowser под созданным пользователем. Но его домашний каталог пока что пуст. Чтобы выдать доступ к конкретным каталогам, нужно воспользоваться командой ln -s каталог/ символическая_ссылка/:
# добавляем первый каталогln -s /home/mcraft/servers/creative /var/lib/filebrowser/base/username/server-creative
# добавляем второй каталогln -s /home/mcraft/servers/skyblock /var/lib/filebrowser/base/username/server-skyblock
# так можно добавлять сколько угодно каталоговВ качестве примера были добавлены две папки. Поскольку пользователь не может покинуть свою папку /var/lib/filebrowser/base/username/, нельзя выдать ему доступ напрямую к папкам каталогам извне. По этому мы создали точки символические ссылки внутри папки пользователя server-creative/ и server-skyblock/, которые ведут на конкретные папки /home/mcraft/servers/creative/ и /home/mcraft/servers/skyblock/.
Чтобы пользователь мог редактировать файлы в добавленных папках, нужно выполнить этот скрипт:
# файлам и каталогам добавляем права на публичное редактированиеfind -L /var/lib/filebrowser/base/*/** -type f -print0|xargs -0 chmod +666find -L /var/lib/filebrowser/base/*/** -type d -print0|xargs -0 chmod 777
# добавляем acl правила, которые будут для новых файлов и каталогов# ставить права на публичное редактирование по умолчаниюsetfacl -L -R -d -m u::rwX -m g::rwX -m o::rwX /var/lib/filebrowser/base/*/**Протестить, работает ли изменение прав по символическим ссылкам.
Опубліковано на Discourse: 2023-06-28 03:54:31.639787 UTC