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.
- Проверяет наличие
.env, выставляет на него права600. - Загружает переменные и валидирует: все обязательные заданы, пароли не дефолтные и не короче 12 символов. Иначе — остановка.
- Ставит Docker (
get.docker.com), если его нет; ставит docker compose plugin через apt, если его нет. - Генерирует самоподписанный RSA-4096 сертификат на 3650 дней с SAN (
IP:LOCAL_IP,DNS:SEAFILE_SERVER_HOSTNAME). Ключ создаётся подumask 077и получаетchmod 600. Если сертификаты уже есть — шаг пропускается. docker compose up -d.- Ждёт до 120 секунд появления
seafile/seafile/conf(инициализация Seafile). Если не дождался — печатает логи контейнера и завершается с ошибкой. - Прописывает
SERVICE_URLвccnet.confиSECURE_PROXY_SSL_HEADER/FILE_SERVER_ROOT/CSRF_TRUSTED_ORIGINSвseahub_settings.py, чтобы Seafile корректно работал за nginx на HTTPS. - Перезапускает
seafileиnginx.
| Переменная | Описание |
|---|---|
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 downdocker compose down # остановить и удалить контейнеры
docker compose down -v # то же + удалить анонимные тома
sudo rm -rf data seafile certs # УДАЛИТ ВСЕ ФАЙЛЫ И БАЗУ БЕЗВОЗВРАТНО
rm .envDocker, установленный скриптом, удаляется отдельно средствами пакетного менеджера.
- Только для доверенной локальной сети. Самоподписанный сертификат не защищает от 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
