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