Skip to content

Repository files navigation

Seafile ALL-in-One: локальная установка в Docker с HTTPS

Bash-инсталлятор, который поднимает self-hosted файловое хранилище Seafile в локальной сети одной командой: ставит Docker, генерирует самоподписанный TLS-сертификат с SAN на IP сервера и запускает docker compose со стеком MariaDB + memcached + Seafile + nginx на HTTPS.

Рассчитан на запуск от root на чистом Linux-сервере. Синхронизация — через официальные клиенты Seafile: https://www.seafile.com/en/download/

Что разворачивается

Компонент Образ Роль
Seafile seafileltd/seafile-mc:11.0.13 сервер Seafile
MariaDB mariadb:10.11 (LTS) база данных
memcached memcached:1.6-alpine кэш
nginx nginx:1.27-alpine HTTPS-прокси на ${HTTPS_PORT}

Все образы запинены на конкретные версии. Seafile запинен на 11.x намеренно: install.sh и переменные в docker-compose.yml написаны под контракт конфигурации 11.x. На теге :latest сейчас приезжает 13.x, где формат конфигов другой и стенд ломается молча. Подробнее — в разделе «Ограничения».

Требования

  • Linux-сервер (Debian/Ubuntu — установка docker compose plugin рассчитана на apt), root или sudo.
  • Свободный порт HTTPS_PORT (по умолчанию 8443).
  • curl, openssl, доступ в интернет для скачивания Docker и образов.
  • Docker и docker compose plugin — если их нет, скрипт поставит сам.

Быстрый старт

git clone https://github.com/RoXyGeNOFF/SeaFile-ALLinOne.git
cd SeaFile-ALLinOne
cp .env.example .env && chmod 600 .env
nano .env          # заполните LOCAL_IP, email и пароли
chmod +x install.sh
./install.sh

После установки откройте https://<SEAFILE_SERVER_HOSTNAME>:<HTTPS_PORT> и войдите под админом из .env.

Что делает install.sh по шагам

  1. Проверяет наличие .env, выставляет на него права 600.
  2. Загружает переменные и валидирует: все обязательные заданы, пароли не дефолтные и не короче 12 символов. Иначе — остановка.
  3. Ставит Docker (get.docker.com), если его нет; ставит docker compose plugin через apt, если его нет.
  4. Генерирует самоподписанный RSA-4096 сертификат на 3650 дней с SAN (IP:LOCAL_IP, DNS:SEAFILE_SERVER_HOSTNAME). Ключ создаётся под umask 077 и получает chmod 600. Если сертификаты уже есть — шаг пропускается.
  5. docker compose up -d.
  6. Ждёт до 120 секунд появления seafile/seafile/conf (инициализация Seafile). Если не дождался — печатает логи контейнера и завершается с ошибкой.
  7. Прописывает SERVICE_URL в ccnet.conf и SECURE_PROXY_SSL_HEADER / FILE_SERVER_ROOT / CSRF_TRUSTED_ORIGINS в seahub_settings.py, чтобы Seafile корректно работал за nginx на HTTPS.
  8. Перезапускает seafile и nginx.

Переменные .env

Переменная Описание
LOCAL_IP IP сервера в локальной сети. Попадает в SAN сертификата.
SEAFILE_SERVER_HOSTNAME Хостнейм для конфига Seafile и CN сертификата. Обычно тот же IP.
HTTPS_PORT Порт HTTPS-прокси nginx на хосте. По умолчанию 8443.
SEAFILE_ADMIN_EMAIL Логин администратора Seafile.
SEAFILE_ADMIN_PASSWORD Пароль администратора. Минимум 12 символов.
MYSQL_ROOT_PASSWORD Root-пароль MariaDB. Минимум 12 символов.
SEAFILE_TIME_ZONE Часовой пояс контейнера, например Europe/Moscow.

Пароли генерируйте так: openssl rand -base64 24

Данные на диске

  • ./data/db — база MariaDB
  • ./seafile — данные и конфиги Seafile (конфиги в ./seafile/seafile/conf)
  • ./certs — сертификат и приватный ключ

Клиенты

  • ПК/ноутбук: Seafile Client, адрес сервера https://<IP>:8443.
  • Телефон: Seafile для Android/iOS, тот же адрес. В настройках включается автозагрузка фото по Wi-Fi.

При первом подключении браузер и клиент попросят подтвердить исключение — это нормально для самоподписанного сертификата.

Полезные команды

docker compose ps
docker compose logs -f
docker compose restart seafile nginx
docker compose down

Как удалить

docker compose down            # остановить и удалить контейнеры
docker compose down -v         # то же + удалить анонимные тома
sudo rm -rf data seafile certs # УДАЛИТ ВСЕ ФАЙЛЫ И БАЗУ БЕЗВОЗВРАТНО
rm .env

Docker, установленный скриптом, удаляется отдельно средствами пакетного менеджера.

Ограничения и предупреждения по безопасности

  • Только для доверенной локальной сети. Самоподписанный сертификат не защищает от MITM без ручной проверки отпечатка и не годится для публикации в интернет.
  • Секреты в .env. Там лежат root-пароль базы и пароль админа. Скрипт выставляет 600, но файл хранится на диске в открытом виде. Не коммитьте .env в git.
  • Приватный ключ certs/selfsigned.key — права 600. При копировании каталога на другую машину права нужно перенести.
  • Seafile ходит в базу под root-пользователем MariaDB — стек рассчитан на изолированный стенд, а не на многопользовательский хост.
  • Seafile запинен на 11.0.13. Ветка 11.x получает только базовые обновления; следите за релизами и планируйте миграцию на 12/13. Обновление не сводится к смене тега: в 12+ удалены SERVICE_URL в ccnet.conf и FILE_SERVER_ROOT, URL задаётся через SEAFILE_SERVER_PROTOCOL/SEAFILE_SERVER_HOSTNAME — шаг 7 инсталлятора придётся переписать.
  • Бэкапов нет. Каталоги ./data/db и ./seafile бэкапьте самостоятельно.

Поддержать разработчика

Если репозиторий был полезен:

Адрес (USDT TRC20): TDb2rmYkYGoX2o322JmPR12oAUJbkgtaWg

Donate

About

Установка Seafile в локальной сети одной командой: Docker, MariaDB, nginx и HTTPS с самоподписанным сертификатом

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages