Seafile와 OnlyOffice를 통합한 도커 기반 온라인 문서 편집 환경 구축

1. Docker 이미지 가속 설정

도커의 이미지 다운로드 속도를 개선하기 위해 레지스트리 미러를 설정합니다. 먼저 다음 경로에 구성 파일을 생성하세요:

vim /etc/docker/daemon.json

아래 내용을 작성하고, ************.mirror.aliyuncs.com 부분은 실제 알리바바 클라우드 미러 주소로 교체하세요:

{
  "registry-mirrors": [
    "https://************.mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn"
  ]
}

2. OnlyOffice DocumentServer 배포

OnlyOffice는 두 가지 방식으로 실행할 수 있습니다. 권장 방법은 컨테이너 관리가 쉬운 Docker Compose 사용입니다.

방법 1: 단일 컨테이너 실행 (비추천)

다음 명령어로 직접 실행합니다. 이 경우 JWT_SECRET 값은 나중에 Seafile 연동 시 필요하므로 반드시 기억해 두세요:

docker run -d --restart=always \
  -p 8080:80 \
  -e JWT_SECRET=abcdefg \
  -v /data/onlyoffice/logs:/var/log/onlyoffice \
  -v /data/onlyoffice/data:/var/www/onlyoffice/Data \
  -v /data/onlyoffice/lib:/var/lib/onlyoffice \
  -v /data/onlyoffice/db:/var/lib/postgresql \
  onlyoffice/documentserver

방법 2: Docker Compose를 통한 배포 (권장)

다음과 같은 docker-compose.yml 파일을 생성하고, 관련 설정을 수정하세요:

version: '3.8'
services:
  document-server:
    image: onlyoffice/documentserver
    container_name: onlyoffice-docs
    ports:
      - "8080:80"
    volumes:
      - ./logs:/var/log/onlyoffice
      - ./data:/var/www/onlyoffice/Data
      - ./lib:/var/lib/onlyoffice
      - ./db:/var/lib/postgresql
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=abcdefg
      - JWT_HEADER=Authorization
      - JWT_IN_BODY=true
    restart: always

3. Seafile 서버 설치 및 구성

Seafile의 공식 도커 컴포즈 파일을 다운로드하고, 필요한 경로와 환경 변수를 수정합니다.

cd /data
mkdir seafile-data seafile-mysql
cd seafile-data
wget https://cloud.seafile.com/d/f4e8883db63845d29350/files/?p=%2F11.0%2Fdocker-compose.yml&dl=1

다운로드한 docker-compose.yml 파일을 아래와 같이 수정하세요:

version: '3.8'
services:
  db:
    image: mariadb:10.11
    container_name: seafile-db
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - /data/seafile-mysql/db:/var/lib/mysql
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6.18
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: seafileltd/seafile-mc:11.0-latest
    container_name: seafile-app
    ports:
      - "80:80"
    volumes:
      - /data/seafile-data:/shared
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev
      - TIME_ZONE=Asia/Shanghai
      - SEAFILE_ADMIN_EMAIL=admin@domain.cn
      - SEAFILE_ADMIN_PASSWORD=password01
      - SEAFILE_SERVER_LETSENCRYPT=false
      - SEAFILE_SERVER_HOSTNAME=seafile.example.com
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

4. Seafile 서비스 시작

설정 완료 후, 해당 디렉터리에서 다음 명령어로 서비스를 시작합니다:

cd /data/seafile-data
docker compose up -d

5. OnlyOffice 연동 및 온라인 편집 활성화

Seafile가 정상 작동하면, /data/seafile-data/seafile/conf/seahub_settings.py 파일을 열고 아래 설정을 추가합니다:

# OnlyOffice 연동 활성화
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = False
ONLYOFFICE_APIJS_URL = 'http://192.168.1.1:8080/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_JWT_SECRET = abcdefg

수정 후, Seafile 서비스를 재시작하여 설정을 반영합니다:

cd /data/seafile-data
docker-compose down
docker-compose up -d

태그: docker onlyoffice seafile document editing docker-compose

7월 3일 06:34에 게시됨