Nextcloud: 파일 공유 및 클라우드 협업 서버
Collabora Online: LibreOffice 기반 온라인 문서 편집기
OnlyOffice Document Server: MS Office 호환 온라인 문서 편집기
Docker + Docker Compose: 배포 환경
Nginx Reverse Proxy + HTTPS: 웹 보안과 도메인 구성
항목 |
Collabora |
OnlyOffice |
---|---|---|
MS Office 호환성 |
낮음 |
높음 |
LibreOffice 기반 호환성 |
매우 높음 |
낮음 |
서버 자원 소모 |
낮음 |
높음 |
설치 난이도 |
보통 |
높음 |
오픈소스 자유도 |
높음 |
제한적 (Enterprise 기능 분리됨) |
Ubuntu 22.04 LTS
도메인 (예: cloud.example.com, office.example.com)
DNS 설정 완료
포트 오픈: 80, 443
Docker, Docker Compose 설치
설치 명령:
sudo apt update && sudo apt install docker.io docker-compose -y
version: '3'
services:
nextcloud:
image: nextcloud
container_name: nextcloud
restart: always
ports:
- 8080:80
volumes:
- nextcloud_data:/var/www/html
depends_on:
- db
db:
image: mariadb
container_name: nextcloud-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: nextcloud
MYSQL_USER: ncuser
MYSQL_PASSWORD: ncpass
volumes:
- db_data:/var/lib/mysql
volumes:
nextcloud_data:
db_data:
docker-compose up -d
브라우저에서 http://<서버-IP>:8080 접속
관리자 계정 생성
데이터베이스 설정:
사용자: ncuser
비밀번호: ncpass
DB명: nextcloud
호스트: db
Nginx 설정 예시 (/etc/nginx/sites-available/nextcloud.conf):
server {
listen 80;
server_name cloud.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.example.com;
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
include proxy_params;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
}
docker run -t -d -p 9980:9980 \
--name collabora \
--restart always \
-e "domain=cloud\\.example\\.com" \
-e "username=admin" -e "password=secret" \
--cap-add MKNOD collabora/code
domain은 Nextcloud 도메인을 이스케이프 처리해서 입력
server {
listen 443 ssl;
server_name office.example.com;
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;
location / {
proxy_pass https://localhost:9980;
proxy_ssl_verify off;
proxy_set_header Host $http_host;
}
}
Nextcloud 로그인
Apps > Office & Text에서 “Collabora Online” 앱 설치
설정 > Collabora 메뉴에서
https://office.example.com 입력 후 저장
docker run -i -t -d -p 8443:443 \
--name onlyoffice \
--restart always \
onlyoffice/documentserver
server {
listen 443 ssl;
server_name onlyoffice.example.com;
ssl_certificate /etc/letsencrypt/live/onlyoffice.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onlyoffice.example.com/privkey.pem;
location / {
proxy_pass https://localhost:8443/;
proxy_set_header Host $host;
proxy_ssl_verify off;
}
}
앱 설치: “OnlyOffice”
설정 > OnlyOffice 메뉴에서
https://onlyoffice.example.com 입력 후 저장
HTTPS 필수
trusted_domains 설정: config/config.php에 도메인 추가
방화벽 제한: ufw allow 80,443/tcp
fail2ban, WAF 설정 추천
설정 |
추천 |
---|---|
Redis 캐시 |
redis-server 설치 후 Nextcloud 설정에 추가 |
APCu |
PHP opcode 캐시로 권장 |
외부 스토리지 |
S3, WebDAV, SMB 등 연동 가능 |
LDAP/AD 연동 |
엔터프라이즈 환경에 필수 |
백업 |
rsync + mysqldump 또는 Docker 볼륨 백업 스크립트 구성 |
일반 사용자/기업 환경에서는 OnlyOffice가 Office 호환성 면에서 유리
교육 기관이나 오픈소스 지향 환경에서는 Collabora가 적합
Nextcloud는 기능 확장성과 통합성이 뛰어나며, 선택한 문서 서버에 따라 문서 편집 경험이 다름
Nginx + Let’s Encrypt를 통한 HTTPS 리버스 프록시 구성이 안정성과 확장성 면에서 가장 권장됨