Установка 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. Перейдите в раздел Файлы >> Поиск на странице. Здесь мы включим некоторые расширенные функции поиска файлов и OCR.
Введите http://elasticsearch:9200 в качестве URL-адреса хоста ElasticSearch. Имя хоста относится к имени службы Elastic в файле docker. Нажмите кнопку Проверить сервер, чтобы протестировать, работает ли он правильно.

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

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

Шаг 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. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.