설치 가이드 · 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 서버 요구 사항 페이지

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

FileRun 데이터베이스 설정 페이지

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

FileRun 사용자 자격 증명

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

FileRun 로그인 페이지

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

FileRun 대시보드

화면 왼쪽 하단의 슈퍼유저 링크를 클릭하고 계정 설정을 클릭합니다.

비밀번호 변경 탭을 클릭하여 기본 비밀번호를 변경할 수 있는 다음 페이지에 접근합니다. 변경 사항 저장 버튼을 클릭하여 저장합니다.

FileRun 비밀번호 변경 화면

페이지 하단의 제어판 링크를 클릭하여 FileRun 제어판에 접근합니다. 페이지의 파일 >> 검색 섹션으로 이동합니다. 여기에서 고급 파일 검색 및 OCR 기능을 활성화할 것입니다.

http://elasticsearch:9200를 ElasticSearch 호스트 URL로 입력합니다. 호스트 이름은 도커 파일의 Elastic 서비스 이름을 나타냅니다. 서버 테스트 버튼을 클릭하여 제대로 작동하는지 테스트합니다.

FileRun ElasticSearch 테스트

위와 유사한 출력을 받아야 하며, 이는 제대로 작동하고 있음을 확인합니다.

Tika를 Apache Tika 서버 호스트 이름으로 입력합니다. 포트 번호로 9998을 입력합니다. OCR PDF 파일 버튼을 체크합니다. 서버 테스트 버튼을 클릭하여 제대로 작동하는지 테스트합니다.

FileRun Tika 테스트

Tika 서버에 대해 유사한 출력을 받아야 하며, 이는 제대로 작동하고 있음을 확인합니다. 또한 OCR 이미지 파일 버튼을 클릭합니다. 페이지 상단의 변경 사항 저장 버튼을 클릭합니다.

다음으로 기본 검색 기준 옵션의 값을 이름에서 내용으로 변경하여 전체 텍스트 검색을 활성화합니다. 프로세스를 완료하기 위해 다시 변경 사항 저장 버튼을 클릭합니다.

FileRun 검색 설정

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 파일 호스팅 소프트웨어를 설치하는 방법을 배운 것으로 마칩니다. 질문이 있으면 아래 댓글에 남겨주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.