Поиск по сайту:

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


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
    1. Cent OS/Rocky Linux/Alma Linux
    2. Убунту/Дебиан

    1. CentOS/Rocky Linux/Alma Linux
    2. Убунту
    3. Дебиан

    1. CentOS/Rocky Linux/Alma Linux
    2. Убунту/Дебиан

    1. Убунту/Дебиан
    2. CentOS/Rocky Linux/Alma Linux

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

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

    Предпосылки

    • A Linux server with a minimum of 2 CPU cores and 2GB of RAM. This tutorial will run on every Linux distribution.

    • A non-root user with sudo privileges.

    • A fully qualified domain name (FQDN) pointing to the server. For our purposes, we will use filerun.example.com as the domain name.

    • Make sure everything is updated.

      ## Ubuntu/Debian
      $ sudo apt update && sudo apt upgrade
      
      ## CentOS/Fedora/Rocky Linux/AlmaLinux
      $ sudo dnf update
      
    • Install basic utility packages. Some of these may already be installed.

      ## 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/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 по умолчанию используют ufw (несложный брандмауэр).

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

    $ 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
    

    Убунту

    $ 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
    

    Дебиан

    $ 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. Создайте конфигурацию FileRun Docker

    Создайте каталог для Filerun Docker Configuration.

    $ mkdir dockerfilerun
    

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

    $ cd ~/dockerfilerun
    

    Создайте и откройте файл компоновки Docker для редактирования.

    $ 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 при появлении запроса.

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

    • Сначала мы извлекаем образ докера 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. Запустите контейнер FileRun Docker

    Выполните следующую команду, чтобы запустить контейнер 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
    

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

    $ 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 при появлении запроса.

    Установите Нгинкс.

    $ sudo dnf install nginx
    

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

    $ sudo systemctl start nginx --now
    

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

    $ sudo setsebool -P httpd_can_network_connect on
    

    Убунту/Дебиан

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

    Импортировать ключ подписи Nginxs.

    $ 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
    

    Установите Нгинкс.

    $ sudo apt install nginx
    

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

    $ nginx -v
    nginx version: nginx/1.22.1
    

    Шаг 6 — Установите SSL

    Убунту/Дебиан

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

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

    $ sudo snap install core
    

    Установите Сертбот.

    $ 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. Установите Снапд.

    $ sudo dnf install snapd
    

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

    $ sudo systemctl enable snapd --now
    

    Установите пакет ядра Snap.

    $ 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  -d filerun.example.com
    

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

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

    Создайте групповой сертификат Диффи-Хеллмана.

    $ 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; # Enable 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;
    
       # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
       ssl_protocols TLSv1.2 TLSv1.3;
    
       # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
       # prevent replay attacks.
       #
       # @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 --- fetch OCSP records from URL in ssl_certificate and cache them
       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;
       }
    }
    
    # This block is useful for debugging TLS v1.3. Please feel free to remove this
    # and use the `$ssl_early_data` variable exposed by NGINX directly should you
    # wish to do so.
    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, и вы увидите следующий экран.

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

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

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

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

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

    Нажмите на ссылку Superuser в левом нижнем углу экрана и нажмите «Настройки учетной записи».

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

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

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

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

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

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

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

    Шаг 9 — Обновите FileRun

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

    $ cd ~/dockerfilerun
    

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

    $ docker compose down --remove-orphans
    

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

    $ docker compose pull
    

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

    $ docker compose up -d
    

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

    Заключение

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