Установка Filestash + WebDAV на Ubuntu 24.04

В этой статье мы подробно разберем, как установить и настроить Filestash – современный веб-интерфейс для управления файлами, используя WebDAV в качестве бэкенда на сервере Ubuntu 24.04. Решение будет полностью автоматизировано с помощью одного bash-скрипта.

📋 Что такое Filestash?

Filestash – это мощный веб-интерфейс для управления файлами, который поддерживает подключение к различным источникам данных: облачные хранилища, FTP, S3, WebDAV и другие. Мы настроим его как локальное облачное хранилище с доступом через браузер.

🧰 Требования

  • VPS сервер или выделенный сервер с Ubuntu 24.04
  • Доступ по SSH с правами sudo
  • Открытые порты: 8334 (Filestash) и 8335 (WebDAV)

🛠️ Шаг 1: Создание установочного скрипта

Создайте файл install_filestash_webdav.sh со следующим содержимым:

#!/bin/bash

# Цвета для вывода
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== Установка Filestash + WebDAV на Ubuntu 24.04 ===${NC}"

# Проверяем, запущен ли скрипт от root
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}Пожалуйста, запустите скрипт с sudo: sudo ./install_filestash_webdav.sh${NC}"
    exit 1
fi

# Получаем оригинального пользователя (не root)
if [ -n "$SUDO_USER" ]; then
    CURRENT_USER="$SUDO_USER"
else
    CURRENT_USER=$(logname 2>/dev/null || whoami)
fi

echo -e "${BLUE}Текущий пользователь: $CURRENT_USER${NC}"

# Обновление системы
echo -e "${BLUE}Обновление системы...${NC}"
apt update && apt upgrade -y

# Установка Docker
echo -e "${BLUE}Установка Docker...${NC}"
apt install -y ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Добавляем пользователя в группу docker
echo -e "${BLUE}Добавление пользователя $CURRENT_USER в группу docker...${NC}"
usermod -aG docker $CURRENT_USER

# Установка rclone
echo -e "${BLUE}Установка rclone...${NC}"
curl https://rclone.org/install.sh | bash

# Создание директорий
echo -e "${BLUE}Создание директорий...${NC}"
mkdir -p /srv/webdav/data
mkdir -p /srv/filestash

# Настройка прав доступа
chown -R 1000:1000 /srv/webdav/data
chown -R 1000:1000 /srv/filestash

# Создание systemd сервиса для WebDAV
echo -e "${BLUE}Создание systemd сервиса для WebDAV...${NC}"
tee /etc/systemd/system/webdav.service > /dev/null <<EOF
[Unit]
Description=WebDAV Server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/rclone serve webdav /srv/webdav/data --addr :8335 --user admin --pass admin123
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# Запуск и включение сервиса
echo -e "${BLUE}Запуск WebDAV сервиса...${NC}"
systemctl daemon-reload
systemctl enable webdav
systemctl start webdav

# Создание docker-compose файла для Filestash
echo -e "${BLUE}Создание docker-compose.yml для Filestash...${NC}"
tee /srv/filestash/docker-compose.yml > /dev/null <<EOF
version: '3.8'
services:
  filestash:
    image: machines/filestash
    container_name: filestash
    restart: unless-stopped
    ports:
      - "8334:8334"
    volumes:
      - /srv/filestash//app/data
      - /etc/localtime:/etc/localtime:ro
EOF

# Функция для выполнения команд от пользователя с правами docker
run_as_user_with_docker() {
    local user="$1"
    shift
    local cmd="$*"
    
    # Создаем временную оболочку с правильными группами
    sudo -u "$user" bash -c "newgrp docker << 'EOF_DOCKER'
cd /srv/filestash
$cmd
EOF_DOCKER"
}

# Запуск Filestash с немедленным применением прав docker
echo -e "${BLUE}Запуск Filestash с правами docker...${NC}"
run_as_user_with_docker "$CURRENT_USER" "docker compose up -d"

# Проверка статуса контейнера
echo -e "${BLUE}Проверка статуса контейнера Filestash...${NC}"
sleep 5
run_as_user_with_docker "$CURRENT_USER" "docker compose ps"

# Настройка фаервола (опционально)
echo -e "${BLUE}Настройка UFW (если активен)...${NC}"
if ufw status | grep -q "active"; then
    echo "UFW активен. Открываем порты 8334 и 8335"
    ufw allow 8334/tcp
    ufw allow 8335/tcp
else
    echo "UFW не активен. Пропускаем настройку фаервола."
fi

# Создание символической ссылки для глобального доступа
echo -e "${BLUE}Создание глобальной ссылки...${NC}"
SCRIPT_PATH="$(realpath "$0")"
ln -sf "$SCRIPT_PATH" /usr/local/bin/install-filestash-webdav

# Вывод информации
echo -e "${GREEN}=== Установка завершена успешно! ===${NC}"
echo ""
echo -e "${YELLOW}=== ПОРЯДОК НАСТРОЙКИ ===${NC}"
echo ""
echo -e "${BLUE}ШАГ 1: Настройка администратора Filestash${NC}"
echo "  Откройте в браузере: http://$SERVER_IP:8334"
echo "  Создайте администратора (придумайте пароль)"
echo ""
echo -e "${BLUE}ШАГ 2: Добавление WebDAV подключения${NC}"
echo "  После входа в Filestash:"
echo "  1. Выберите 'WebDAV' из списка доступных типов подключений"
echo "  2. Заполните поля:"
echo "     Type: WebDAV (уже выбрано)"
echo "     User: admin"
echo "     Password: admin123"
echo "     Address: http://$SERVER_IP:8335"
echo "     Path: /"
echo "  3. Нажмите кнопку 'Подключить'"
echo ""
echo -e "${RED}ВАЖНО: Обязательно измените пароль admin123 на более безопасный!${NC}"
echo "Команда для изменения: sudo nano /etc/systemd/system/webdav.service"

🔧 Шаг 2: Запуск скрипта установки

Сделайте скрипт исполняемым и запустите его:

chmod +x install_filestash_webdav.sh
sudo ./install_filestash_webdav.sh

Скрипт автоматически выполнит все необходимые действия:

  • Установит последнюю версию Docker и Docker Compose
  • Добавит вашего пользователя в группу docker
  • Установит rclone для WebDAV
  • Настроит и запустит WebDAV-сервис
  • Запустит контейнер Filestash
  • Откроет необходимые порты в firewall (если используется UFW)

🌐 Шаг 3: Настройка Filestash через веб-интерфейс

ШАГ 1: Создание администратора

  1. Откройте в браузере: http://ваш_IP_адрес:8334
  2. Создайте учетную запись администратора (придумайте надежный пароль)
  3. Войдите в систему

ШАГ 2: Подключение WebDAV

После входа:

  1. Выберите ‘WebDAV’ из списка доступных типов подключений
  2. Заполните поля:
    • Type: WebDAV (уже выбрано)
    • User: admin
    • Password: admin123
    • Address: http://ваш_IP_адрес:8335
    • Path: /
  3. Нажмите кнопку ‘Подключить’
💡 Совет: Имя подключения генерируется автоматически на основе типа подключения.

🔍 Что вы увидите после установки

http://ваш_IP:8334 – Основной интерфейс Filestash

  • Красивый, современный веб-интерфейс
  • Управление файлами через веб-браузер
  • Поддержка drag & drop загрузки
  • Просмотр и редактирование файлов

http://ваш_IP:8335 – WebDAV сервер

  • Служебный интерфейс rclone WebDAV
  • Работает в фоне как бэкенд
  • Не предназначен для прямого использования

📁 Где хранятся ваши файлы

Все файлы физически хранятся в директории сервера:

/srv/webdav/data

Вы можете:

  • Добавлять файлы через веб-интерфейс Filestash
  • Добавлять файлы напрямую через SSH в эту директорию
  • Файлы будут доступны и там, и там

🔐 Безопасность

Обязательно измените пароль WebDAV:

sudo nano /etc/systemd/system/webdav.service

Найдите строку:

ExecStart=/usr/bin/rclone serve webdav /srv/webdav/data --addr :8335 --user admin --pass admin123

Измените admin123 на более сложный пароль, затем перезапустите сервис:

sudo systemctl daemon-reload
sudo systemctl restart webdav

Дополнительные меры безопасности:

  • Ограничьте доступ по IP через firewall
  • Настройте HTTPS (рекомендуется)
  • Регулярно обновляйте Docker и Filestash
  • Включите логирование для мониторинга

🛠️ Полезные команды управления

# Проверить статус сервисов
sudo systemctl status webdav
sudo docker ps | grep filestash

# Перезапустить сервисы
sudo systemctl restart webdav
sudo docker restart filestash

# Посмотреть логи
sudo journalctl -u webdav -f
sudo docker logs filestash

# Остановить всё
sudo systemctl stop webdav
sudo docker stop filestash

🎯 Административный интерфейс

Для доступа к расширенным настройкам Filestash перейдите по адресу:

http://ваш_IP:8334/admin

Здесь вы найдете:

  • Настройки безопасности
  • Управление подключения
  • Настройки производительности
  • Логирование и мониторинг
  • Резервное копирование
✅ Итог
Теперь у вас полностью рабочее облачное хранилище с современным веб-интерфейсом:

Filestash как красивый веб-интерфейс на порту 8334
WebDAV как безопасный бэкенд на порту 8335
• Все файлы хранятся в /srv/webdav/data
• Полная автоматизация через один скрипт
• Возможность управления через административный интерфейс

Это решение идеально подходит для:
• Личного облачного хранилища
• Обмена файлами в команде
• Резервного копирования
• Управления файлами с мобильных устройств

Удачи с вашим облачным хранилищем! 🚀