Docker

[Docker] 내 서버를 구글 드라이브처럼! 'Filestash' + '웹 오피스' 구축 가이드

IT-PAPA 2026. 1. 31. 20:23
반응형

[Docker] 내 서버를 구글 드라이브처럼! 'Filestash' + '웹 오피스' 구축 가이드

나스의 파일 탐색기가 불편하거나, 회사에서 FTP/SFTP 서버의 파일을 일일이 다운로드받지 않고 바로 열어보고 싶으신가요?

그렇다면 Filestash가 정답입니다. 여기에 오픈 소스 오피스인 Collabora(WOPI)를 붙이면, 웹 브라우저에서 엑셀, 워드, PPT 파일을 바로 편집할 수 있는 강력한 시스템이 됩니다. 오늘은 이 두 마리 토끼를 잡는 Docker 구성을 분석해 보겠습니다.


1. 솔루션 구성 요소 분석

이 설정 파일은 크게 두 가지 서비스로 나뉩니다.

① Filestash (앱 컨테이너)

  • 역할: Dropbox나 Google Drive 같은 웹 인터페이스를 제공하는 파일 관리자입니다.
  • 특징: 파일을 서버에 직접 저장하지 않고, 기존에 있는 SFTP, S3, FTP, WebDAV, Git 등의 백엔드 저장소에 연결해서 보여주는 'Gateway' 역할을 합니다. 즉, 가볍고 빠릅니다.
  • 주요 설정:
  • OFFICE_URL: 아래의 Collabora 서버와 통신하여 문서를 미리보기/편집할 수 있게 합니다.

② WOPI Server (Collabora Online)

  • 역할: 웹 브라우저용 오피스 엔진입니다. (LibreOffice 기반)
  • 특징: Filestash에서 엑셀(.xlsx)이나 워드(.docx) 파일을 클릭하면, 이 컨테이너가 문서를 렌더링하여 보여줍니다.
  • 커스텀 설정: 제공된 코드에는 curl 명령어로 CSS를 패치하여 Collabora의 기본 브랜딩(로고 등)을 숨기고 깔끔하게 만드는 트릭이 포함되어 있습니다.

2. 장점과 단점

장점 (Pros) ✅

  1. 연동의 귀재: S3, MinIO, SFTP, FTP 등 거의 모든 프로토콜을 지원합니다. 흩어진 저장소를 한곳에서 관리하기 최적입니다.
  2. 오피스 편집 기능: 파일만 보는 게 아니라 Collabora를 통해 실제 업무(문서 작성)가 가능합니다.
  3. 무설치(Stateless): Filestash 자체는 데이터를 저장하지 않습니다. 컨테이너를 지웠다 다시 띄워도 원본 저장소(SFTP 등)의 파일은 안전합니다.
  4. 강력한 뷰어: 이미지, 동영상 스트리밍, 코드 하이라이팅 등 뷰어 성능이 뛰어납니다.

단점 (Cons) ❌

  1. 메모리 사용량: Filestash는 가볍지만, Collabora(wopi_server)는 무겁습니다. (최소 2GB 이상의 RAM 권장)
  2. 초기 로딩: 오피스 문서를 처음 열 때 Collabora 엔진이 구동되느라 2~3초 정도 딜레이가 있을 수 있습니다.

3. Docker Compose 분석 및 사용 가이드

제공해주신 코드는 Filestash와 Collabora를 완벽하게 묶어놓은 Best Practice 설정입니다. 그대로 복사해서 사용하시면 됩니다.

services:
  # 1. 파일 관리자 (Filestash)
  app:
    container_name: filestash
    image: machines/filestash:latest
    restart: always
    environment:
      - APPLICATION_URL=           # 도메인이 있다면 입력 (예: https://files.example.com)
      - CANARY=true                # 최신 기능 사용 여부
      # WOPI(오피스) 서버 연동 설정
      - OFFICE_URL=http://wopi_server:9980
      - OFFICE_FILESTASH_URL=http://app:8334
      - OFFICE_REWRITE_URL=http://127.0.0.1:9980 # 로컬 테스트용 (실운영시 도메인 변경 필요)
    ports:
      - "8334:8334"
    volumes:
      - filestash:/app/data/state/ # 설정 값 저장 (연결 정보 등)
    depends_on:
      - wopi_server

  # 2. 웹 오피스 엔진 (Collabora Online)
  wopi_server:
    container_name: filestash_wopi
    image: collabora/code:24.04.10.2.1
    restart: always
    environment:
      # SSL 비활성화 (내부망 사용 시 필수)
      - "extra_params=--o:ssl.enable=false"
      # 접속 허용할 도메인 패턴 (보안 설정)
      - aliasgroup1="https://.*:443"
    # [꿀팁] CSS를 수정하여 Collabora의 투박한 UI를 깔끔하게 변경하는 스크립트
    command:
      - /bin/bash
      - -c
      - |
          curl -o /usr/share/coolwsd/browser/dist/branding-desktop.css https://gist.githubusercontent.com/mickael-kerjean/bc1f57cd312cf04731d30185cc4e7ba2/raw/d706dcdf23c21441e5af289d871b33defc2770ea/destop.css
          /bin/su -s /bin/bash -c '/start-collabora-online.sh' cool
    user: root
    ports:
      - "9980:9980"

volumes:
    filestash: {}

🚀 실행 방법

  1. 위 코드를 docker-compose.yml로 저장합니다.
  2. docker-compose up -d 명령어로 실행합니다.
  3. 브라우저에서 http://서버IP:8334로 접속합니다.
  4. 초기 비밀번호 설정 후, 연결하고 싶은 저장소(SFTP, S3 등) 정보를 입력하면 끝!

4. 핵심 꿀팁 (문제 해결) 💡

  • 문서가 안 열려요! (Mixed Content 오류):
    만약 Filestash를 HTTPS(SSL)로 서비스한다면, Collabora(WOPI) 부분도 반드시 HTTPS로 통신해야 합니다. 역방향 프록시(Nginx)를 앞단에 두어 둘 다 HTTPS 처리를 해주는 것이 정신 건강에 좋습니다.
  • 한글 폰트 깨짐:
    Collabora 컨테이너(wopi_server)에는 기본 한글 폰트가 없을 수 있습니다. 이 경우 폰트(.ttf) 파일을 컨테이너 내부의 /usr/share/fonts/truetype 경로에 마운트해 주면 해결됩니다.

5. 마무리

Filestash는 "파일을 저장하는 곳"이 아니라 "파일을 관리하는 도구"입니다.
이미 회사나 개인 서버에 SFTP나 S3로 파일이 쌓여 있다면, 무거운 Nextcloud를 설치하는 것보다 Filestash 한 방으로 가볍고 강력한 웹 오피스 환경을 구축해 보세요.


728x90
LIST