Встановлення File Browser на VPS: керування файлами через веб-інтерфейс з Nginx та SSL
TL;DR
У цьому посібнику ми налаштуємо File Browser — легкий веб-інтерфейс для керування файлами — на вашому VPS. Ми забезпечимо безпечний доступ через Nginx як зворотний проксі та захистимо з'єднання за допомогою SSL-сертифікатів від Let's Encrypt, отриманих через Certbot. В результаті ви отримаєте повністю контрольоване хмарне сховище файлів, доступне з будь-якої точки світу через браузер.
- Встановлення File Browser як системного сервісу для автоматичного запуску.
- Конфігурація Nginx для маршрутизації трафіку та роботи як зворотний проксі.
- Налаштування SSL/TLS за допомогою Certbot для безпечного HTTPS-з'єднання.
- Забезпечення базової безпеки сервера за допомогою UFW та Fail2ban.
- Рекомендації щодо резервного копіювання та обслуговування системи.
- Повний контроль над вашими файлами та даними без сторонніх сервісів.
Що ми налаштовуємо і навіщо
У сучасному світі, де дані відіграють ключову роль, можливість керувати своїми файлами з будь-якої точки світу стає необхідністю. Хмарні сховища, такі як Google Drive, Dropbox або OneDrive, пропонують зручність, але часто ціною конфіденційності та повного контролю. Для тих, хто цінує незалежність та безпеку, ідеальним рішенням є розгортання власного файлового менеджера на віртуальному приватному сервері (VPS) або виділеному сервері.
Ми будемо встановлювати File Browser — легкий та потужний файловий менеджер з веб-інтерфейсом. Це однобінарний додаток, написаний на Go, що робить його надзвичайно ефективним, простим у розгортанні та експлуатації. File Browser дозволяє вам завантажувати, завантажувати, переглядати, редагувати, видаляти та ділитися файлами та папками прямо з вашого веб-браузера. Він підтримує безліч користувачів з різними правами доступу, що робить його чудовим вибором як для особистого використання, так і для невеликих команд.
Що отримає читач у підсумку
По завершенні цього посібника ви отримаєте повністю функціонуючу систему керування файлами, доступну за захищеним HTTPS-з'єднанням через ваш домен. Ви зможете:
- Отримати доступ до своїх файлів на VPS через інтуїтивно зрозумілий веб-інтерфейс.
- Завантажувати та вивантажувати файли та папки.
- Створювати, перейменовувати, переміщувати та видаляти файли та каталоги.
- Переглядати медіафайли та редагувати текстові документи прямо в браузері.
- Налаштовувати кількох користувачів з індивідуальними правами доступу до різних каталогів.
- Ділитися файлами та папками з іншими користувачами за тимчасовими або постійними посиланнями.
Які альтернативи є і чому self-hosted на VPS
Існує кілька підходів до керування файлами:
- Хмарні сервіси (Google Drive, Dropbox, iCloud): Зручні, не вимагають налаштування, але ви не контролюєте свої дані, залежите від політики провайдера і часто платите абонентську плату.
- Комплексні self-hosted рішення (Nextcloud, ownCloud): Пропонують широкий спектр функцій (календарі, контакти, нотатки, синхронізація), але значно важчі, вимагають базу даних і складніші в налаштуванні та обслуговуванні. Для простого завдання керування файлами вони можуть бути надмірними.
- Протоколи (SFTP, SMB/CIFS): Вимагають спеціалізованого клієнтського ПЗ, менш зручні для швидкого доступу з браузера і не завжди підходять для нетехнічних користувачів.
Чому File Browser на VPS? Вибір File Browser на VPS — це золота середина. Ви отримуєте повний контроль над своїми даними, високу продуктивність та гнучкість, при цьому File Browser залишається легким та простим у керуванні. Це ідеальне рішення для:
- Особистого "хмарного сховища" для зберігання документів, фотографій та відео.
- Обміну файлами всередині невеликої команди або сім'ї.
- Доступу до файлів проєкту для розробників та дизайнерів.
- Керування файлами на сервері без необхідності використання SSH та командного рядка.
Зрештою, ви будуєте власну, безпечну та приватну інфраструктуру для файлів, яка працюватиме саме так, як вам потрібно, без прихованих платежів та обмежень сторонніх сервісів.
Який VPS-конфіг потрібен для цього завдання
File Browser — дуже легкий додаток, тому його вимоги до ресурсів мінімальні. Однак, загальні рекомендації для VPS включають ресурси, необхідні для операційної системи, потенційного зберігання файлів та забезпечення стабільної роботи Nginx і Certbot.
Мінімальні вимоги
- CPU: 1 vCPU з частотою від 2 ГГц. File Browser не вимогливий до процесора, якщо немає інтенсивної обробки файлів (наприклад, масової конвертації).
- RAM: 1 ГБ оперативної пам'яті. Цього достатньо для ОС (наприклад, Ubuntu 24.04 LTS), File Browser, Nginx та Certbot. Якщо ви плануєте завантажувати дуже великі файли або обслуговувати багато одночасних користувачів, розгляньте 2 ГБ.
- Диск: 20-40 ГБ SSD. Сама система та ПЗ займуть 10-15 ГБ. Решта — для ваших файлів. SSD настійно рекомендується для швидкої роботи з файлами.
- Мережа: 100 Мбіт/с або 1 Гбіт/с порт з необмеженим або достатнім трафіком. Швидкість мережі безпосередньо впливатиме на швидкість завантаження та вивантаження файлів.
Конкретний VPS-план для завдання
Для більшості користувачів, включаючи розробників, соло-фаундерів та невеликі команди, оптимальним буде наступний конфіг:
- CPU: 2 vCPU
- RAM: 2-4 ГБ
- Диск: 80-100 ГБ NVMe/SSD
- Мережа: 1 Гбіт/с порт
Такої конфігурації буде більш ніж достатньо для комфортної роботи з File Browser, зберігання десятків тисяч файлів та обслуговування кількох десятків одночасних користувачів. Для цих цілей можна взяти VPS із зазначеними характеристиками.
Коли потрібен dedicated, а не VPS
Виділений сервер (dedicated server) може знадобитися в наступних випадках:
- Дуже великий обсяг даних: Якщо ви плануєте зберігати терабайти даних, для яких VPS може бути занадто дорогим або мати обмеження щодо дискового простору.
- Високе навантаження: Сотні одночасних користувачів, постійне інтенсивне завантаження/вивантаження.
- Специфічні вимоги до продуктивності: Наприклад, для додатків, які інтенсивно використовують дискову підсистему або вимагають максимальної продуктивності CPU без "сусідів" на тому ж фізичному хості.
- Вимоги до відповідності: Деякі регуляторні норми можуть вимагати повного фізичного розділення апаратного забезпечення.
Для File Browser у більшості випадків VPS — це оптимальний вибір за співвідношенням ціна/продуктивність/гнучкість.
Локація: на що впливає
Вибір локації VPS має значення для кількох аспектів:
- Затримка (Latency): Чим ближче сервер до вашої основної аудиторії (ви, ваша команда, користувачі), тим менша затримка та швидша відповідь веб-інтерфейсу.
- Юрисдикція даних: Якщо у вас є особливі вимоги до зберігання даних (наприклад, GDPR в Європі), вибирайте країну, яка відповідає цим вимогам.
- Швидкість мережі: Деякі регіони мають кращу зв'язність з певними частинами світу. Перевірте пінг до тестових серверів у різних локаціях, щоб вибрати найкращий варіант.
Підготовка сервера
Перед встановленням File Browser необхідно провести базове налаштування безпеки та встановити необхідні утиліти. Передбачається, що ви використовуєте свіжу інсталяцію Ubuntu Server 24.04 LTS (актуальна версія на 2026 рік) та маєте доступ по SSH з правами root.
1. Оновлення системи
Завжди починайте з оновлення списку пакетів та їх встановлення, щоб переконатися, що ваша система використовує найактуальніші версії ПЗ та патчі безпеки.
sudo apt update # Оновлює список доступних пакетів
sudo apt upgrade -y # Встановлює оновлення для всіх пакетів
sudo apt autoremove -y # Видаляє невикористовувані пакети
2. Створення нового користувача з правами sudo
Робота під користувачем root небезпечна. Створимо нового користувача, додамо його до групи sudo та налаштуємо для нього SSH-ключі. Замініть youruser на бажане ім'я користувача.
adduser youruser # Створити нового користувача
usermod -aG sudo youruser # Додати користувача до групи sudo
mkdir -p /home/youruser/.ssh # Створити директорію для SSH-ключів
chmod 700 /home/youruser/.ssh # Встановити правильні права для директорії
cp ~/.ssh/authorized_keys /home/youruser/.ssh/ # Скопіювати ваш публічний SSH-ключ (якщо ви зайшли за ключем root)
chown -R youruser:youruser /home/youruser/.ssh # Встановити власника для директорії SSH
Після цього вийдіть із сесії root та увійдіть під новим користувачем youruser, щоб переконатися, що все працює.
3. Вимкнення SSH-доступу для root та за паролем
Для підвищення безпеки рекомендується вимкнути вхід по SSH для користувача root та заборонити автентифікацію за паролем, залишивши тільки SSH-ключі.
sudo nano /etc/ssh/sshd_config
Знайдіть та змініть наступні рядки (або додайте, якщо їх немає):
# PermitRootLogin no
# PasswordAuthentication no
# ChallengeResponseAuthentication no
# UsePAM no
Переконайтеся, що PermitRootLogin встановлено на no та PasswordAuthentication на no. Якщо ці рядки закоментовані (починаються з #), розкоментуйте їх.
Після збереження файлу перезапустіть SSH-сервіс:
sudo systemctl restart sshd
ВАЖЛИВО: Переконайтеся, що ви можете увійти під новим користувачем з SSH-ключем, перш ніж вимикати root-доступ та парольну автентифікацію. В іншому випадку ви можете втратити доступ до сервера.
4. Налаштування фаєрволу (UFW)
UFW (Uncomplicated Firewall) — це простий у використанні інтерфейс для налаштування правил iptables. Ми дозволимо лише необхідні порти: SSH (22), HTTP (80) та HTTPS (443).
sudo apt install ufw -y # Встановлення UFW
sudo ufw allow OpenSSH # Дозволити SSH-доступ (порт 22)
sudo ufw allow http # Дозволити HTTP-доступ (порт 80)
sudo ufw allow https # Дозволити HTTPS-доступ (порт 443)
sudo ufw enable # Увімкнути фаєрвол
sudo ufw status verbose # Перевірити статус фаєрволу
Після увімкнення UFW переконайтеся, що ви все ще можете підключитися по SSH.
5. Встановлення Fail2ban
Fail2ban сканує логи сервера на предмет підозрілої активності (наприклад, спроб підбору паролів по SSH) та тимчасово блокує IP-адреси зловмисників, додаючи правила до фаєрволу.
sudo apt install fail2ban -y # Встановлення Fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Створення локальної копії конфігу
sudo systemctl enable fail2ban # Увімкнути автозапуск Fail2ban
sudo systemctl start fail2ban # Запустити Fail2ban
sudo systemctl status fail2ban # Перевірити статус
У файлі /etc/fail2ban/jail.local ви можете налаштувати параметри блокування, але за замовчуванням він вже захищає SSH.
6. Встановлення Nginx (попередньо)
Nginx буде використовуватися як зворотний проксі для File Browser та для обробки SSL-сертифікатів.
sudo apt install nginx -y # Встановлення Nginx
sudo systemctl enable nginx # Увімкнути автозапуск Nginx
sudo systemctl start nginx # Запустити Nginx
sudo systemctl status nginx # Перевірити статус
Тепер ваш сервер готовий до встановлення File Browser.
Встановлення ПЗ — покроково
Тепер, коли сервер підготовлений, ми приступимо до встановлення основних компонентів: самого File Browser, Nginx (якщо не встановлений на попередньому кроці) та Certbot для автоматичного отримання та оновлення SSL-сертифікатів.
У цьому посібнику ми будемо використовувати File Browser версії 2.30.0 (передбачувана актуальна версія на 2026 рік), Nginx 1.28.0 та Certbot 2.10.0. Усі команди виконуються від користувача з правами sudo.
1. Встановлення File Browser
File Browser розповсюджується як єдиний бінарний файл, що значно спрощує його встановлення. Ми завантажимо його з офіційного репозиторію GitHub.
# Створюємо тимчасову директорію для завантаження
mkdir -p ~/filebrowser_install
cd ~/filebrowser_install
# Завантажуємо останню версію File Browser (v2.30.0 на 2026 рік)
# Завжди перевіряйте актуальну версію на https://github.com/filebrowser/filebrowser/releases
wget https://github.com/filebrowser/filebrowser/releases/download/v2.30.0/filebrowser_2.30.0_linux_amd64.tar.gz
# Розпаковуємо архів
tar -xvf filebrowser_2.30.0_linux_amd64.tar.gz
# Переміщуємо виконуваний файл до системної директорії
sudo mv filebrowser /usr/local/bin/
# Видаляємо тимчасові файли
cd ~
rm -rf ~/filebrowser_install
# Перевіряємо, що File Browser встановлений та доступний
filebrowser --version
Вивід filebrowser --version повинен показати встановлену версію.
2. Створення системного користувача та директорій для File Browser
Для безпеки File Browser працюватиме від виділеного системного користувача та зберігатиме свої дані в окремих директоріях.
# Створюємо системного користувача 'filebrowser' без можливості входу в систему
sudo useradd -r -s /bin/false filebrowser
# Створюємо директорію для файлів File Browser (де зберігатимуться користувацькі файли)
sudo mkdir -p /var/lib/filebrowser
# Створюємо директорію для конфігураційного файлу File Browser
sudo mkdir -p /etc/filebrowser
# Встановлюємо власника та права для директорій
sudo chown -R filebrowser:filebrowser /var/lib/filebrowser
sudo chown -R filebrowser:filebrowser /etc/filebrowser
3. Налаштування File Browser як systemd сервісу
Щоб File Browser запускався автоматично при старті сервера та керувався як звичайний сервіс, створимо systemd-юніт файл.
sudo nano /etc/systemd/system/filebrowser.service
Вставте наступний вміст у файл:
[Unit]
Description=File Browser
After=network.target
[Service]
User=filebrowser
Group=filebrowser
# Запускаємо File Browser на локальному інтерфейсі (127.0.0.1) та порту 8080
# Nginx буде проксіювати запити до цієї адреси
ExecStart=/usr/local/bin/filebrowser -r /var/lib/filebrowser -c /etc/filebrowser/filebrowser.json --port 8080 --address 127.0.0.1
Restart=on-failure
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Збережіть та закрийте файл (Ctrl+X, Y, Enter). Тепер активуємо та запускаємо сервіс:
sudo systemctl daemon-reload # Перезавантажити конфігурацію systemd
sudo systemctl enable filebrowser # Увімкнути автозапуск сервісу при старті системи
sudo systemctl start filebrowser # Запустити сервіс File Browser
sudo systemctl status filebrowser # Перевірити статус сервісу
Переконайтеся, що сервіс знаходиться у стані "active (running)".
4. Встановлення Certbot (для SSL)
Certbot — це інструмент для автоматичного отримання та оновлення безкоштовних SSL/TLS сертифікатів від Let's Encrypt. Ми встановимо його через Snap, що є рекомендованим способом для Ubuntu 24.04.
# Переконайтеся, що snapd встановлений та оновлений
sudo snap install core # Встановлення базового пакета snapd
sudo snap refresh core # Оновлення snapd
# Встановлення Certbot
sudo snap install --classic certbot # Встановлення Certbot у класичному режимі
# Створення символічного посилання для зручності використання команди certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Тепер Certbot готовий до роботи та буде використовуватися на етапі конфігурації Nginx.
Конфігурація
На цьому етапі ми налаштуємо Nginx для роботи як зворотний проксі для File Browser та отримаємо SSL-сертифікати для забезпечення безпечного HTTPS-з'єднання.
Важливо: Для успішної роботи вам знадобиться доменне ім'я (наприклад, files.yourdomain.com), яке вказує на IP-адресу вашого VPS.
1. Створення першого адміністратора File Browser
Перед тим як налаштувати Nginx, створимо першого адміністратора File Browser. Це можна зробити через команду, поки сервіс запущений.
# Створюємо першого адміністратора. Замініть <admin_password> на надійний пароль.
# Ця команда створить файл filebrowser.json в /etc/filebrowser, якщо його немає.
sudo /usr/local/bin/filebrowser users add admin <admin_password> --perm.admin --perm.create --perm.delete --perm.modify --perm.rename --perm.share --config /etc/filebrowser/filebrowser.json
Ви побачите підтвердження створення користувача. Пароль не відображатиметься в консолі, але буде встановлений.
2. Налаштування Nginx як зворотного проксі
Ми створимо новий конфігураційний файл Nginx для вашого домену. Замініть yourdomain.com на ваше реальне доменне ім'я.
sudo nano /etc/nginx/sites-available/filebrowser.conf
Вставте наступний вміст. Цей конфіг спочатку перенаправлятиме весь HTTP-трафік на HTTPS і готовий для використання Certbot.
server {
listen 80;
listen [::]:80;
server_name yourdomain.com; # Замініть на ваш домен
# Перенаправляємо весь HTTP-трафік на HTTPS
return 301 https://$host$request_uri;
}
# Цей блок буде налаштований Certbot'ом після отримання сертифіката
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain.com; # Замініть на ваш домен
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # Буде створено Certbot
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # Буде створено Certbot
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1h;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# HSTS (HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
# Проксіювання запитів до File Browser
location / {
proxy_pass http://127.0.0.1:8080;
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;
# Підтримка WebSocket (для деяких функцій File Browser)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Додаткові налаштування для безпеки
client_max_body_size 100G; # Максимальний розмір файлу, що завантажується (змініть за необхідності)
error_log /var/log/nginx/filebrowser_error.log warn;
access_log /var/log/nginx/filebrowser_access.log;
}
Збережіть та закрийте файл. Тепер активуйте конфігурацію, створивши символічне посилання та протестувавши Nginx:
# Створюємо символічне посилання
sudo ln -s /etc/nginx/sites-available/filebrowser.conf /etc/nginx/sites-enabled/
# Перевіряємо синтаксис Nginx-конфігурації
sudo nginx -t
# Якщо помилок немає, перезавантажуємо Nginx
sudo systemctl reload nginx
3. Отримання SSL-сертифіката за допомогою Certbot
Тепер, коли Nginx налаштований, ми можемо використовувати Certbot для автоматичного отримання SSL-сертифіката від Let's Encrypt. Certbot сам модифікує Nginx-конфігурацію для додавання шляхів до сертифікатів.
sudo certbot --nginx -d yourdomain.com # Замініть yourdomain.com на ваш домен
Certbot поставить вам кілька запитань:
- Введіть адресу електронної пошти для сповіщень про закінчення терміну дії сертифіката.
- Погодьтеся з умовами обслуговування Let's Encrypt.
- (Необов'язково) Дозвольте EFF надсилати вам листи про свої роботи.
Якщо все пройде успішно, Certbot автоматично налаштує Nginx для використання HTTPS та перезавантажить його. Ви побачите повідомлення про успішне отримання сертифіката.
4. Перевірка працездатності
Відкрийте ваш веб-браузер і перейдіть за адресою https://yourdomain.com (замініть на ваш домен). Ви повинні побачити сторінку входу File Browser. Використовуйте логін admin та пароль, який ви встановили раніше, щоб увійти.
Ви також можете перевірити статус сервісів з командного рядка:
sudo systemctl status filebrowser
sudo systemctl status nginx
Для перевірки роботи SSL-сертифіката можна використовувати онлайн-інструменти, такі як SSL Labs SSL Server Test, або просто переконатися в наявності "замочка" в адресному рядку браузера.
Для локальної перевірки доступності File Browser через Nginx можна використовувати curl:
curl -kL https://yourdomain.com # Опція -k ігнорує перевірку сертифіката, -L слідує редиректам
Ви повинні отримати HTML-код сторінки входу File Browser.
5. Оновлення правил UFW
Якщо ви раніше дозволили порти HTTP та HTTPS окремо, Certbot міг вже оновити правила Nginx Full. Переконаємося, що все гаразд:
sudo ufw allow "Nginx Full" # Дозволяє порти 80 та 443 для Nginx
sudo ufw delete allow http # Видаляємо старе правило, якщо воно є
sudo ufw delete allow https # Видаляємо старе правило, якщо воно є
sudo ufw status verbose
Переконайтеся, що "Nginx Full" дозволено, а окремі правила для HTTP/HTTPS видалені, щоб уникнути дублювання.