Установка Docker · 12 min read · Nov 30, 2025

Как установить FileRun с помощью Docker

FileRun — это веб-приложение для синхронизации и обмена файлами, которое можно развернуть на собственном сервере. Оно может работать на любом сервере, включая Linux, Windows, NAS и т. д. Файлы доступны в интернете и на мобильных устройствах с помощью PWA-приложения. Оно совместимо с Nextcloud, поэтому вы можете использовать его настольные и мобильные приложения для доступа к вашим файлам. Вы также можете получить доступ к файлам с помощью протокола WebDAV. FileRun также может использоваться в качестве замены Google Photos и поддерживает плагины для офисных приложений и изображений.

FileRun доступен в бесплатной версии, которая поддерживает до 10 учетных записей, и в корпоративной версии, если вам нужны дополнительные функции и учетные записи. В этом руководстве вы узнаете, как установить FileRun с помощью окружения Docker на вашем сервере Linux. Мы также настроим Elasticsearch для обеспечения поддержки полнотекстового поиска.

Предварительные требования

  • Сервер Linux с минимум 2 ядрами ЦП и 2 ГБ ОЗУ. Это руководство будет работать на любой дистрибуции Linux.
  • Пользователь без прав root с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN), указывающее на сервер. Для наших целей мы будем использовать filerun.example.com в качестве доменного имени.
  • Убедитесь, что все обновлено. ## Ubuntu/Debian $ sudo apt update && sudo apt upgrade ## CentOS/Fedora/Rocky Linux/AlmaLinux $ sudo dnf update
  • Установите базовые утилиты. Некоторые из них могут быть уже установлены. ## Ubuntu/Debian $ sudo apt install wget curl nano unzip -y ## CentOS/Rocky Linux/AlmaLinux $ sudo dnf install wget curl nano unzip yum-utils -y

Шаг 1 - Настройка брандмауэра

Cent OS/Rocky Linux/Alma Linux

У вас должен быть установлен брандмауэр Firewalld. Проверьте статус брандмауэра.

$ sudo firewall-cmd --state
running

Откройте порты 80, 9443 и 443. Portainer использует порт 9443 для отображения своего веб-интерфейса через HTTPS. Nginx Proxy Manager использует порт 81 для своего интерфейса.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Перезагрузите брандмауэр, чтобы применить изменения.

$ sudo firewall-cmd --reload

Ubuntu/Debian

Системы Ubuntu и Debian по умолчанию используют ufw (Uncomplicated Firewall).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Если он работает, откройте порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Откройте порт SSH, если брандмауэр не работает.

$ sudo ufw allow "OpenSSH"

Включите брандмауэр, если он не работает.

$ sudo ufw enable

Если он работает, перезагрузите его, чтобы применить изменения.

$ sudo ufw reload

Шаг 2 - Установка Docker и Docker Compose

Запустите следующую команду для установки Docker.

CentOS/Rocky Linux/Alma Linux

$ sudo dnf install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Вы можете получить следующую ошибку при попытке установить Docker.

ror: 
 Problem: problem with installed package buildah-1:1.26.2-1.el9_0.x86_64
  - package buildah-1:1.26.2-1.el9_0.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package containerd.io-1.6.9-3.1.el9.x86_64 conflicts with runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - package containerd.io-1.6.9-3.1.el9.x86_64 obsoletes runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - cannot install the best candidate for the job

Используйте следующую команду, если вы получили вышеуказанную ошибку.

$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin --allowerasing

Ubuntu

$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo 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" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Debian

$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo 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/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Включите и запустите службу Docker.

$ sudo systemctl start docker --now

Добавьте ваше имя пользователя в группу Docker.

$ sudo usermod -aG docker $USER

Выйдите из системы и войдите снова, чтобы применить изменения.

Шаг 3 - Создание конфигурации Docker для FileRun

Создайте каталог для конфигурации Docker FileRun.

$ mkdir dockerfilerun

Перейдите в каталог.

$ cd ~/dockerfilerun

Создайте и откройте файл docker-compose для редактирования.

$ nano docker-compose.yml

Вставьте следующий код в него.

version: '3.8'

services:
  db:
    image: mariadb:10.5
    container_name: filerun_mariadb
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_USER: your_filerun_username
      MYSQL_PASSWORD: your_filerun_password
      MYSQL_DATABASE: your_filerun_database
    volumes:
      - ./db:/var/lib/mysql

  web:
    image: filerun/filerun
    container_name: filerun_web
    environment:
      FR_DB_HOST: db
      FR_DB_PORT: 3306
      FR_DB_NAME: your_filerun_database
      FR_DB_USER: your_filerun_username
      FR_DB_PASS: your_filerun_password
      APACHE_RUN_USER: www-data
      APACHE_RUN_USER_ID: 33
      APACHE_RUN_GROUP: www-data
      APACHE_RUN_GROUP_ID: 33
    depends_on:
      - db
    links:
      - db
      - tika
      - elasticsearch
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
      - ./user-files:/user-files

  tika:
    image: apache/tika
    container_name: filerun_tika

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23
    container_name: filerun_search
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65535
        hard: 65535
    mem_limit: 1g
    volumes:
      - ./esearch:/usr/share/elasticsearch/data

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Давайте пройдемся по файлу компоновки.

  • Сначала мы загружаем образ Docker MariaDB для хранения данных. Введите пароль root, имя пользователя MySQL, пароль MySQL и имя базы данных для FileRun. Мы создаем резервную копию базы данных, монтируя ее в каталоге ~/dockerfilerun/db.
  • Далее мы загружаем контейнер FileRun, который подключается к образу MariaDB, используя те же учетные данные базы данных. Он также запускает сервер Apache внутри и открывает FileRun через порт 80. Мы также монтируем публичный каталог на хосте в каталоге ~/dockerfilerun/html и соответствующие загруженные пользователем файлы в каталоге ~/dockerfilerun/user-files.
  • Далее мы загружаем контейнер Apache Tika, который помогает FileRun считывать метаданные файлов.
  • И, наконец, мы загружаем контейнер Elasticsearch, который помогает выполнять полнотекстовый поиск по содержимому, загруженному в FileRun. FileRun в данный момент поддерживает только Elasticsearch 6.8.x. Вы можете использовать переменные окружения, чтобы контролировать лимит памяти в зависимости от доступной памяти на вашем сервере. Мы смонтируем данные Elasticsearch в каталоге ~/dockerfilerun/esearch.

Создайте каталог для Elasticsearch. Docker автоматически создает каталоги для томов, но Elasticsearch работает только тогда, когда локальный каталог принадлежит пользователю, а группа имеет 1000 в качестве своего идентификатора.

$ mkdir esearch

Установите правильные разрешения, используя следующие команды.

$ chmod g+rwx esearch
$ sudo chgrp 1000 esearch

Перед запуском контейнера нам нужно увеличить лимиты на количество mmap, чтобы Elasticsearch работал. Откройте файл /etc/sysctl.conf для редактирования.

$ sudo nano /etc/sysctl.conf

Вставьте следующую строку в конец.

vm.max_map_count = 262144

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Это сделает изменение постоянным, но только если вы перезагрузите систему.

Запустите следующую команду, чтобы применить изменение прямо сейчас.

$ sudo sysctl -w vm.max_map_count=262144

Перезапустите службу Docker.

$ sudo systemctl restart docker

Шаг 4 - Запустите контейнер Docker FileRun

Запустите следующую команду, чтобы запустить контейнер Docker.

$ docker compose up -d

Процесс займет некоторое время, включая загрузку образов Docker, создание сети и запуск необходимых контейнеров.

Проверьте статус контейнеров.

$ docker ps

Вы получите аналогичный вывод.

Следующий шаг — установить SSL с помощью Nginx, чтобы сделать его более безопасным. Мы будем использовать сервер Nginx для этого.

Шаг 5 - Установка Nginx

CentOS/Rocky Linux/Alma Linux

Чтобы установить последнюю версию Nginx, вам нужно установить официальный репозиторий Nginx.

Установите предварительный пакет.

$ sudo dnf install yum-utils

Создайте и откройте yum-репозиторий Nginx.

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте следующий код.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Установите Nginx.

$ sudo dnf install nginx

Включите и запустите сервер Nginx.

$ sudo systemctl start nginx --now

Настройте SELinux, чтобы разрешить сетевые подключения от FileRun.

$ sudo setsebool -P httpd_can_network_connect on

Ubuntu/Debian

Ubuntu 22.04 и Debian 11 поставляются с более старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для стабильной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Для Debian используйте следующую команду вместо этого.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

Установите Nginx.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.1

Шаг 6 - Установка SSL

Ubuntu/Debian

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Ubuntu, или получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 и Debian 11 поставляются с установленным Snapd по умолчанию. Запустите следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку на каталог /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

CentOS/Rocky Linux/Alma Linux

Certbot требует репозиторий EPEL для работы.

$ sudo dnf install epel-release

Мы будем использовать Snapd для установки Certbot. Установите Snapd.

$ sudo dnf install snapd

Включите и запустите службу Snap.

$ sudo systemctl enable snapd --now

Установите пакет Snap core.

$ sudo snap install core
$ sudo snap refresh core

Создайте необходимые ссылки для работы Snapd.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Выполните следующую команду для установки Certbot.

$ sudo snap install --classic certbot

Включите Certbot, создав символическую ссылку на его исполняемый файл.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Запустите следующую команду для генерации SSL-сертификата.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d filerun.example.com

Мы сгенерировали SSL-сертификат, используя опцию certonly Certbot с использованием Nginx. Он устанавливает сертификат с помощью сервера Nginx, но ничего не изменяет.

Вышеуказанная команда загрузит сертификат в каталог /etc/letsencrypt/live/filerun.example.com на вашем сервере.

Сгенерируйте сертификат Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Чтобы проверить, работает ли автоматическое обновление SSL, выполните пробный запуск процесса.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы все настроили. Ваш сертификат будет автоматически обновляться.

Шаг 7 - Настройка Nginx

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте и откройте файл /etc/nginx/conf.d/filerun.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/filerun.conf

Вставьте следующий код в него. Замените filerun.example.com на ваше доменное имя.

upstream backend {
   server 127.0.0.1:8080;
   keepalive 32;
}

server {
  listen 80 default_server;
  server_name filerun.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name filerun.example.com;

   http2_push_preload on; # Включить HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/filerun.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/filerun.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/filerun.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Включить версии TLS (TLSv1.3 требуется для предстоящего HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Включить 0-RTT для TLSv1.3. Используйте $ssl_early_data при обратном проксировании, чтобы
   # предотвратить атаки повторного воспроизведения.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;
   # OCSP Stapling --- извлекает OCSP записи из URL в ssl_certificate и кэширует их
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   add_header X-Early-Data $tls1_3_early_data;

   access_log /var/log/nginx/filerun.access.log main;
   error_log  /var/log/nginx/filerun.error.log;

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_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;
       proxy_set_header X-Forwarded-Protocol $scheme;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 1800s;
       proxy_connect_timeout 1800s;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }
}

# Этот блок полезен для отладки TLS v1.3. Пожалуйста, не стесняйтесь удалять это
# и использовать переменную `$ssl_early_data`, предоставленную NGINX, напрямую, если вы
# хотите это сделать.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте вашу конфигурацию Nginx.

$ sudo nginx -t

Перезапустите сервер Nginx.

$ sudo systemctl restart nginx

Шаг 8 - Доступ и настройка FileRun

Перейдите по URL https://filerun.example.com, и вы увидите следующий экран.

Установщик FileRun

Нажмите кнопку Далее, чтобы открыть страницу системных требований.

Страница требований сервера FileRun

Если все в порядке, нажмите кнопку Далее, чтобы перейти к странице настройки базы данных.

Страница настройки базы данных FileRun

Заполните имя вашей базы данных, пользователя и пароль, и нажмите кнопку Далее, чтобы продолжить.

Учетные данные пользователя FileRun

Здесь вам будут предоставлены данные для входа. Нажмите кнопку Далее, чтобы открыть страницу входа.

Страница входа FileRun

Введите ваши учетные данные для входа из предыдущего шага и нажмите кнопку Войти, чтобы открыть панель управления FileRun.

Панель управления FileRun

Нажмите на ссылку Суперпользователь в самом нижнем левом углу экрана и выберите Настройки учетной записи.

Нажмите на вкладку Сменить пароль, чтобы получить доступ к следующей странице, где вы можете изменить свой пароль по умолчанию. Нажмите кнопку Сохранить изменения, чтобы сохранить.

Экран смены пароля FileRun

Нажмите на ссылку Панель управления в нижней части страницы, чтобы получить доступ к Панели управления FileRun. Перейдите в раздел Файлы >> Поиск на странице. Здесь мы включим некоторые расширенные функции поиска файлов и OCR.

Введите http://elasticsearch:9200 в качестве URL-адреса хоста ElasticSearch. Имя хоста относится к имени службы Elastic в файле docker. Нажмите кнопку Проверить сервер, чтобы протестировать, работает ли он правильно.

Тест ElasticSearch FileRun

Вы должны получить аналогичный вывод выше, который подтверждает, что он работает правильно.

Введите tika в качестве имени хоста сервера Apache Tika. Введите 9998 в качестве номера порта. Убедитесь, что кнопка OCR PDF Files отмечена. Нажмите кнопку Проверить сервер, чтобы протестировать, работает ли он правильно.

Тест Tika FileRun

Вы должны получить аналогичный вывод для сервера Tika, который подтверждает, что он работает правильно. Также нажмите кнопку OCR image files. Нажмите кнопку Сохранить изменения в верхней части страницы.

Далее измените значение параметра Default search criteria с Name на Contents, чтобы включить полнотекстовый поиск. Нажмите кнопку Сохранить изменения снова, чтобы завершить процесс.

Настройки поиска FileRun

Шаг 9 - Обновление FileRun

Обновление FileRun — это простой шаг. Перейдите в каталог Docker Compose FileRun.

$ cd ~/dockerfilerun

Далее остановите и удалите существующий контейнер. Ваши данные будут сохранены.

$ docker compose down --remove-orphans

Загрузите последнюю версию образа Docker FileRun.

$ docker compose pull

Запустите контейнеры снова.

$ docker compose up -d

Ваша установка FileRun обновлена и снова запущена.

Заключение

Это завершает руководство, в котором вы узнали, как установить программное обеспечение для хостинга файлов FileRun с помощью Docker на сервере Linux. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.