설치 가이드 · 10 min read · Nov 30, 2025
Docker를 사용하여 FileRun 설치하는 방법

FileRun은 자체 호스팅 파일 동기화 및 공유 웹 기반 애플리케이션입니다. Linux, Windows, NAS 등 모든 서버에서 실행할 수 있습니다. 파일은 PWA 앱을 사용하여 웹과 모바일에서 접근할 수 있습니다. Nextcloud와 호환되므로 데스크탑 및 모바일 앱을 사용하여 파일에 접근할 수 있습니다. WebDAV 프로토콜을 사용하여 파일에 접근할 수도 있습니다. FileRun은 Google Photos 대체로도 사용될 수 있으며, 오피스 및 이미지 플러그인에 대한 지원이 있습니다.
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는 HTTPS를 통해 웹 UI를 노출하기 위해 포트 9443을 사용합니다. Nginx Proxy Manager는 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(간단한 방화벽)를 사용합니다.
방화벽이 실행 중인지 확인하십시오.
$ 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단계 - FileRun Docker 구성 생성
Filerun Docker 구성을 위한 디렉토리를 생성합니다.
$ 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를 입력합니다.
Compose 파일을 살펴보겠습니다.
- 먼저 데이터를 저장하기 위해 MariaDB 도커 이미지를 가져옵니다. 루트 비밀번호, MySQL 사용자 이름, MySQL 비밀번호 및 FileRun의 데이터베이스 이름을 입력합니다.
~/dockerfilerun/db디렉토리에 마운트하여 데이터베이스를 백업합니다. - 다음으로, MariaDB 이미지에 동일한 데이터베이스 자격 증명을 사용하여 연결하는 FileRun 컨테이너를 가져옵니다. 또한 내부에서 Apache 서버를 실행하고 포트 80을 통해 FileRun을 노출합니다. 호스트의 공개 디렉토리를
~/dockerfilerun/html디렉토리에 마운트하고 사용자 업로드 파일을~/dockerfilerun/user-files디렉토리에 마운트합니다. - 다음으로, 파일의 메타데이터를 읽는 데 도움이 되는 Apache Tika 컨테이너를 가져옵니다.
- 마지막으로, FileRun에 업로드된 콘텐츠에 대한 전체 텍스트 검색을 실행하는 데 도움이 되는 Elasticsearch 컨테이너를 가져옵니다. 현재 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
Filerun에서 네트워크 연결을 허용하도록 SELinux를 구성합니다.
$ 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
SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. 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을 설치합니다. 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의 실행 파일에 대한 심볼릭 링크를 생성하여 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
Nginx를 사용하여 Certbot의 certonly 옵션을 사용하여 SSL 인증서를 생성했습니다. 인증서는 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-GCM-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 URL을 방문하면 다음 화면이 표시됩니다.

다음 버튼을 클릭하여 시스템 요구 사항 페이지를 엽니다.

모든 것이 괜찮다면 다음 버튼을 클릭하여 데이터베이스 설정 페이지로 이동합니다.

데이터베이스 이름, 사용자 및 비밀번호를 입력하고 다음 버튼을 클릭하여 진행합니다.

여기에서 로그인 세부 정보를 제공합니다. 다음 버튼을 클릭하여 로그인 페이지를 엽니다.

이전 단계에서 제공된 로그인 자격 증명을 입력하고 로그인 버튼을 클릭하여 FileRun 대시보드로 이동합니다.

화면 왼쪽 하단의 슈퍼유저 링크를 클릭하고 계정 설정을 클릭합니다.
비밀번호 변경 탭을 클릭하여 기본 비밀번호를 변경할 수 있는 다음 페이지에 접근합니다. 변경 사항 저장 버튼을 클릭하여 저장합니다.

페이지 하단의 제어판 링크를 클릭하여 FileRun 제어판에 접근합니다. 페이지의 파일 >> 검색 섹션으로 이동합니다. 여기에서 고급 파일 검색 및 OCR 기능을 활성화할 것입니다.
http://elasticsearch:9200를 ElasticSearch 호스트 URL로 입력합니다. 호스트 이름은 도커 파일의 Elastic 서비스 이름을 나타냅니다. 서버 테스트 버튼을 클릭하여 제대로 작동하는지 테스트합니다.

위와 유사한 출력을 받아야 하며, 이는 제대로 작동하고 있음을 확인합니다.
Tika를 Apache Tika 서버 호스트 이름으로 입력합니다. 포트 번호로 9998을 입력합니다. OCR PDF 파일 버튼을 체크합니다. 서버 테스트 버튼을 클릭하여 제대로 작동하는지 테스트합니다.

Tika 서버에 대해 유사한 출력을 받아야 하며, 이는 제대로 작동하고 있음을 확인합니다. 또한 OCR 이미지 파일 버튼을 클릭합니다. 페이지 상단의 변경 사항 저장 버튼을 클릭합니다.
다음으로 기본 검색 기준 옵션의 값을 이름에서 내용으로 변경하여 전체 텍스트 검색을 활성화합니다. 프로세스를 완료하기 위해 다시 변경 사항 저장 버튼을 클릭합니다.

9단계 - FileRun 업데이트
FileRun을 업그레이드하는 것은 간단한 단계입니다. FileRun의 Docker compose 디렉토리로 전환합니다.
$ cd ~/dockerfilerun
다음으로 기존 컨테이너를 중지하고 제거합니다. 데이터는 유지됩니다.
$ docker compose down --remove-orphans
최신 버전의 FileRun 도커 이미지를 가져옵니다.
$ docker compose pull
컨테이너를 다시 시작합니다.
$ docker compose up -d
FileRun 설치가 업데이트되고 다시 시작되었습니다.
결론
이 튜토리얼은 Docker를 사용하여 Linux 서버에서 FileRun 파일 호스팅 소프트웨어를 설치하는 방법을 배운 것으로 마칩니다. 질문이 있으면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.