如何使用 Docker 安装 FileRun
如何使用 Docker 安装 FileRun
FileRun 是一个自托管的文件同步和共享基于 Web 的应用程序。 它可以在任何服务器上运行,包括 Linux、Windows、NAS 等。可以使用 PWA 应用程序在 Web 和移动设备上访问这些文件。 它与 Nextcloud 兼容,因此您可以使用其桌面和移动应用程序访问您的文件。 您还可以使用 WebDAV 协议访问这些文件。 FileRun 也可以用作 Google Photos 的替代品,并支持 office 和图像插件。
FileRun 可作为免费版本使用,最多可支持 10 个帐户;如果您需要更多功能和帐户,则可作为企业版本使用。 在本教程中,您将学习如何在 Linux 服务器上使用 Docker 环境安装 FileRun。 我们还将配置 Elasticsearch 以提供全文搜索支持。
先决条件
-
至少具有 2 个 CPU 内核和 2GB RAM 的 Linux 服务器。 本教程将在每个 Linux 发行版上运行。
-
具有 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 公开其 Web UI。 Nginx 代理管理器为其 UI 使用端口 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
德比安
$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 配置创建一个目录。
$mkdir dockerfilerun
切换到目录。
$cd ~/dockerfilerun
创建并打开 Docker 撰写文件进行编辑。Advertisement.banner-1{text-align:center;padding-top:10px!important;padding-bottom:10px!important;padding-left:0!important;padding-right: 0重要;宽度:100%重要;框尺寸:边框框重要;背景颜色:#eee重要;轮廓:1px solid #dfdfdf;最小高度:125px重要}
$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 docker 镜像。 输入 root 密码、MySQL 用户名、MySQL 密码和 FileRun 的数据库名称。 我们通过将数据库安装在
~/dockerfilerun/db
目录。 - 接下来,我们使用相同的数据库凭据拉取连接到 MariaDB 映像的 FileRun 容器。 它还在内部运行 Apache 服务器并通过端口 80 公开 FileRun。我们还在主机上安装了一个公共目录
~/dockerfilerun/html
目录和相应的用户上传的文件在~/dockerfilerun/user-files
目录。 - 接下来,我们拉取帮助 Filerun 读取文件元数据的 Apache Tika 容器。
- 最后,我们拉取 Elasticsearch 容器,它有助于对上传到 FileRun 的内容运行全文搜索。 FIleRun 目前仅支持 Elasticsearch 6.8.x。 您可以使用环境变量来控制与服务器上可用内存相关的内存限制。 我们将 Elasticsearch 数据挂载在
~/dockerfilerun/esearch
目录。
为 Elasticsearch 创建目录。 Docker 会自动为成交量创建目录,但 Elasticsearch 仅在本地目录归用户所有且组的 ID 为 1000 时才起作用。
$mkdir esearch
使用以下命令设置正确的权限。
$chmod g+rwx esearch $sudo chgrp 1000 esearch
在启动容器之前,我们需要增加对 Elasticsearch 工作的 mmap 计数的限制。 打开 /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
您将获得类似的输出。
下一步是使用 Nginx 安装 SSL 以使其更安全。 我们将使用 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 来保存文件。
安装 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 证书。 您可以使用 Ubuntu 的存储库安装 Certbot,也可以使用 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。 安装快照。
$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 P新高=$P新高:/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
使用 Nginx 的 Certbot 选项。 它使用 Nginx 服务器安装证书但不修改任何内容。
上面的命令会将证书下载到 /etc/letsencrypt/live/filerun.example.com
服务器上的目录。
生成 Diffie-Hellman 组证书。
$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
访问网址 https://filerun.example.com
您将看到以下屏幕。
单击下一步按钮打开系统要求页面。
如果一切正常,请单击“下一步”按钮前进到数据库设置页面。
填写您的数据库名称、用户和密码,然后单击“下一步”按钮继续。
在这里您将获得登录详细信息。 单击下一步按钮打开登录页面。
输入上一步的登录凭据,然后单击“登录”按钮打开 FileRun 的仪表板。
单击屏幕最左侧底部的超级用户链接,然后单击帐户设置。
单击更改密码选项卡以访问以下页面,您可以在其中更改默认密码。 单击保存更改按钮进行保存。
单击页面左下角的控制面板链接以访问 FileRun 控制面板。 访问页面的文件 >> 搜索部分。 在这里,我们将启用一些高级文件搜索和 OCR 功能。
进入 http://elasticsearch:9200
作为 ElasticSearch 主机 URL。 Hostname 是指 docker 文件中 Elastic 的服务名称。 单击测试服务器按钮以测试它是否正常工作。
您应该在上面得到类似的输出,确认它正在正常工作。
进入 tika
作为 Apache Tika 服务器主机名。 进入 9998
作为端口号。 检查 OCR PDF 文件按钮。 单击测试服务器按钮以测试它是否正常工作。
您应该得到 Tika 服务器的类似输出,确认它正在正常工作。 此外,单击 OCR 图像文件按钮。 单击页面顶部的保存更改按钮。
接下来,将 Default search criteria 选项的值从 Name 更改为 Contents 以启用全文搜索。 再次单击保存更改按钮以完成该过程。
第 9 步 – 更新 FileRun
升级 FileRun 是一个简单的步骤。 切换到 FileRun 的 Docker 组合目录。
$cd ~/dockerfilerun
接下来,停止并移除现有容器。 不过,您的数据将被保留。
$docker compose down --remove-orphans
拉取最新版本的 FileRun docker 镜像。
$docker compose pull
再次启动容器。
$docker compose up -d
您的 FileRun 安装已更新并重新启动。
结论
本教程到此结束,您在其中学习了如何在 Linux 服务器上使用 Docker 安装 FileRun 文件托管软件。 如果您有任何问题,请在下面的评测中发表。