Ubuntu 24.04에 ONLYOFFICE Docs 설치하는 방법
ONLYOFFICE Docs는 무료로 사용할 수 있으면서도 강력한 협업 온라인 오피스 제품군으로, 문서, 프레젠테이션, 스프레드시트, 양식 및 PDF를 위한 뷰어와 편집기가 함께 제공됩니다. ONLYOFFICE 제품군은 Office Open XML 형식(.docx, .xlsx, .pptx)과 완벽하게 호환되며, 문서를 실시간으로 공동 편집할 수 있습니다. 이 기사에서는 Ubuntu 24.04 (Noble Numbat)에서 ONLYOFFICE Docs를 설치하고 구성하는 방법을 보여드리겠습니다.
궁극의 우분투 데스크톱 핸드북
전문가처럼 Ubuntu를 마스터하세요 - 아름다운 데스크탑 커스터마이징부터 강력한 터미널 자동화까지. 작업 공간을 완벽하게 제어하고 싶은 개발자, 시스템 관리자, 파워 유저에게 완벽합니다.
ONLYOFFICE Docs에는 다음 구성 요소가 포함되어 있습니다:
- 서버 – 이것은 ONLYOFFICE Docs의 모든 구성 요소를 제어하는 백엔드 서버 계층입니다.
- 핵심 – 오피스 문서 형식(DOC, DOCX, ODT, RTF, TXT, PDF, HTML, EPUB, XPS, DjVu, XLS, XLSX, ODS, CSV, PPT, PPTX, ODP) 간의 통신을 가능하게 합니다.
- sdkjs – 포함된 모든 구성 요소의 클라이언트 측 상호작용을 위한 JavaScript SDK API.
- 웹 앱 – 이는 ONLYOFFICE Docs의 프론트엔드입니다
- 사전 – ONLYOFFICE Docs에서 맞춤법 검사를 위해 사용되는 다양한 언어의 사전을 포함합니다.
다음은 ONLYOFFICE Docs에 포함된 편집기 목록입니다:
- ONLYOFFICE 문서 편집기
- ONLYOFFICE 스프레드시트 편집기
- ONLYOFFICE 프레젠테이션 편집기
- ONLYOFFICE 폼 생성기
- ONLYOFFICE PDF 편집기, 뷰어 및 변환기
요구 사항 설정
이 문서에서는 로컬 우분투 서버에 Community Edition ONLYOFFICE Docs를 설치하는 방법을 다룹니다. 최소 서버 하드웨어 요구 사항은 다음과 같습니다:
- CPU: 최소 듀얼 코어
2 GHz - 램: 최소
2 GB - 디스크 공간: 최소
40 GB의 여유 공간 - 스왑: 최소
4GB, 스왑이 없는 경우 더 많은 RAM 필요. - 운영체제: 64비트 우분투 또는 데비안 리눅스 시스템
요구 사항을 충족하면 문서 서버 설정으로 관심을 돌릴 좋은 시기입니다.
1단계: PostgreSQL 데이터베이스 설정
시스템이 최신 상태인지 확인하여 설치를 시작하세요:
sudo apt update && sudo apt upgrade -y우리는 OS 기본 저장소에서 제공되는 PostgreSQL 서버 버전을 설치할 수 있습니다.
sudo apt install postgresql패키지가 설치되면 서비스가 자동으로 시작되며, 다음 단계는 PostgreSQL 데이터베이스와 사용자를 만드는 것입니다:
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH PASSWORD 'onlyoffice';"
sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice OWNER onlyoffice;"2단계: RabbitMQ 서버 설치
ONLYOFFICE는 RabbitMQ를 메시징 브로커로 사용하여 ONLYOFFICE 제품군 내의 다양한 서비스 간 통신을 가능하게 합니다. 다음 명령어를 실행하여 패키지를 설치하세요:
sudo apt install rabbitmq-server서비스 상태를 확인할 수 있습니다:
$ systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; preset: enabled)
Active: active (running) since Tue 2024-07-30 08:20:24 UTC; 6s ago
Main PID: 15046 (beam.smp)
Tasks: 24 (limit: 4658)
Memory: 102.8M (peak: 107.9M)
CPU: 3.770s
CGroup: /system.slice/rabbitmq-server.service
├─15046 /usr/lib/erlang/erts-13.2.2.5/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sb>
├─15056 erl_child_setup 65536
├─15108 /usr/lib/erlang/erts-13.2.2.5/bin/inet_gethost 4
├─15109 /usr/lib/erlang/erts-13.2.2.5/bin/inet_gethost 4
└─15112 /bin/sh -s rabbit_disk_monitor
Jul 30 08:20:20 ubuntu-cloudspinx-com systemd[1]: Starting rabbitmq-server.service - RabbitMQ Messaging Server...
Jul 30 08:20:24 ubuntu-cloudspinx-com systemd[1]: Started rabbitmq-server.service - RabbitMQ Messaging Server.3단계: ONLYOFFICE Docs 설치
이제 환경 구성이 완료되었으므로 Ubuntu 시스템에 ONLYOFFICE Docs를 설치할 준비가 되었습니다. 하지만 먼저 패키지 서명에 사용되는 GPG 키를 가져와야 합니다.
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/onlyoffice.gpgGPG가 가져와지면, 우리는 ONLYOFFICE APT 저장소를 추가할 수 있습니다:
echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list패키지 관리자 캐시를 업데이트하고 ONLYOFFICE Docs를 설치하세요.
sudo apt update
sudo apt install onlyoffice-documentserver ttf-mscorefonts-installer데이터베이스 비밀번호 입력을 요청받으면 키보드에서 <ENTER> 키를 눌러 진행하세요. 다음으로 라이선스 계약 조건에 동의합니다.
설치 중에 오류가 발생했는지 확인하세요. 모든 것이 정상적으로 진행되면, 브라우저에서 http://localhost 또는 http://serverdomain_or_ip를 통해 ONLYOFFICE에 접속할 수 있습니다.
4단계: SSL로 ONLYOFFICE Docs 보호
우리는 HTTPS 프로토콜을 사용하여 ONLYOFFICE Docs에 접근하도록 구성할 수 있으며, 이는 HTTP보다 훨씬 더 안전합니다. 기본적으로는 HTTP로 실행되도록 구성되어 있습니다.
우리 환경에서 사용되는 서버는 클라우드 환경에서 운영됩니다. 이를 통해 Let’s Encrypt 무료 SSL을 사용할 수 있습니다.
Let's Encrypt SSL 사용
ONLYOFFICE Docs에 HTTPS를 설정하는 가장 쉬운 방법은 certbot을 사용하여 Let’s Encrypt SSL 인증서를 사용하는 것입니다. 다음 명령어를 사용하여 certbot을 설치하세요.
- 데비안/우분투:
sudo apt update && sudo apt install certbot
sudo apt install python3-certbot-nginx- RHEL 기반 시스템:
sudo dnf -y install epel-release
sudo dnf -y install certbot python3-certbot-nginxcertbot을 설치한 후 SSL 구성을 자동화하는 ONLYOFFICE 스크립트를 실행하세요.
sudo bash /usr/bin/documentserver-letsencrypt.sh [email yourdomain.com실제 이메일 주소로 [email 를 교체하고, DNS에 구성된 ONLYOFFICE Docs 서버의 도메인 이름으로 yourdomain.com을 교체하세요.
명령어를 실행하면 SSL 생성 진행 상황을 확인할 수 있는 로그 파일의 경로가 출력되며, 발생하는 모든 오류도 그곳에 기록됩니다.
Saving debug log to /var/log/letsencrypt/letsencrypt.log로그 파일 내용을 확인하려면 cat 명령어를 사용하세요:
sudo cat /var/log/letsencrypt/letsencrypt.log파일에서 출력된 마지막 몇 줄 예시:
...
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----
2024-07-30 08:56:34,141:DEBUG:acme.client:Storing nonce: Ma8ZwRNA9J1JoJ_IMl_v_1HLCTTt5G01XNs8p_Mvri6JbKsSWrI
2024-07-30 08:56:34,142:DEBUG:certbot._internal.storage:Creating directory /etc/letsencrypt/archive.
2024-07-30 08:56:34,142:DEBUG:certbot._internal.storage:Creating directory /etc/letsencrypt/live.
2024-07-30 08:56:34,142:DEBUG:certbot._internal.storage:Writing README to /etc/letsencrypt/live/README.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Creating directory /etc/letsencrypt/archive/docs.cloudlabske.com.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Creating directory /etc/letsencrypt/live/docs.cloudlabske.com.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Writing certificate to /etc/letsencrypt/live/docs.cloudlabske.com/cert.pem.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Writing private key to /etc/letsencrypt/live/docs.cloudlabske.com/privkey.pem.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Writing chain to /etc/letsencrypt/live/docs.cloudlabske.com/chain.pem.
2024-07-30 08:56:34,143:DEBUG:certbot._internal.storage:Writing full chain to /etc/letsencrypt/live/docs.cloudlabske.com/fullchain.pem.
2024-07-30 08:56:34,144:DEBUG:certbot._internal.storage:Writing README to /etc/letsencrypt/live/docs.cloudlabske.com/README.
2024-07-30 08:56:34,156:DEBUG:certbot.configuration:Var account=985390e388f48deb37eab1e67d361272 (set by user).
2024-07-30 08:56:34,157:DEBUG:certbot._internal.plugins.selection:Requested authenticator webroot and installer None
2024-07-30 08:56:34,157:DEBUG:certbot._internal.plugins.selection:Requested authenticator webroot and installer None
2024-07-30 08:56:34,157:DEBUG:certbot.configuration:Var webroot_path=['/var/www/onlyoffice/documentserver/letsencrypt'] (set by user).
2024-07-30 08:56:34,157:DEBUG:certbot.configuration:Var webroot_map={'docs.cloudlabske.com': '/var/www/onlyoffice/documentserver/letsencrypt'} (set by user).
2024-07-30 08:56:34,157:DEBUG:certbot._internal.storage:Writing new config /etc/letsencrypt/renewal/docs.cloudlabske.com.conf.
2024-07-30 08:56:34,159:DEBUG:certbot._internal.display.obj:Notifying user:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/docs.cloudlabske.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/docs.cloudlabske.com/privkey.pem
This certificate expires on 2024-10-28.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
2024-07-30 08:56:34,161:DEBUG:certbot._internal.display.obj:Notifying user: If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le자체 서명 SSL 인증서 사용
사설 네트워크에 있는 시스템의 경우, 자체 서명 인증서를 생성할 수 있습니다. 또는 Cloudflare에서 DNS를 관리하는 경우, Cloudflare DNS와 함께 Let’s Encrypt를 설정하는 방법에 대한 저희 기사를 확인해 보세요.
셀프 서명 인증서를 사용하는 사용자는 다음 파일 내용을 편집하고 키 및 도메인 인증서 경로를 조정할 수 있습니다:
sudo nano /etc/onlyoffice/documentserver/nginx/ds.conf아래 내용은 이 글에서 Let’s Encrypt를 사용하여 설정한 내용입니다.
include /etc/nginx/includes/http-common.conf;
## Normal HTTP host
server {
listen 0.0.0.0:80;
listen [::]:80 default_server;
server_name _;
server_tokens off;
set $secure_link_secret nsdy8N28Ylobmp5EL4wF;
## Redirects all traffic to the HTTPS host
root /nowhere; ## root doesn't have to be a valid path since we are redirecting
rewrite ^ https://$host$request_uri? permanent;
}
#HTTP host for internal services
server {
listen 127.0.0.1:80;
listen [::1]:80;
server_name localhost;
server_tokens off;
set $secure_link_secret nsdy8N28Ylobmp5EL4wF;
include /etc/nginx/includes/ds-common.conf;
include /etc/nginx/includes/ds-docservice.conf;
}
## HTTPS host
server {
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl default_server;
server_tokens off;
set $secure_link_secret nsdy8N28Ylobmp5EL4wF;
root /usr/share/nginx/html;
## Strong SSL Security
## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_certificate /etc/letsencrypt/live/docs.cloudlabske.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/docs.cloudlabske.com/privkey.pem;
# Uncomment string below and specify the path to the file with the password if you use encrypted certificate key
# ssl_password_file {{SSL_PASSWORD_PATH}};
ssl_verify_client off;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1.2;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=31536000;
# add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
## [Optional] If your certficate has OCSP, enable OCSP stapling to reduce the overhead and latency of running SSL.
## Replace with your ssl_trusted_certificate. For more info see:
## - https://medium.com/devops-programming/4445f4862461
## - https://www.ruby-forum.com/topic/4419319
## - https://linux-console.net/community/tutorials/how-to-configure-ocsp-stapling-on-apache-and-nginx
# ssl_stapling on;
# ssl_stapling_verify on;
# ssl_trusted_certificate /etc/nginx/ssl/stapling.trusted.crt;
# resolver 208.67.222.222 208.67.222.220 valid=300s; # Can change to your DNS resolver if desired
# resolver_timeout 10s;
## [Optional] Generate a stronger DHE parameter:
## cd /etc/ssl/certs
## sudo openssl dhparam -out dhparam.pem 4096
##
# ssl_dhparam /etc/ssl/certs/dhparam.pem;
include /etc/nginx/includes/ds-*.conf;
}환경에 맞게 ssl_certificate와 ssl_certificate_key를 업데이트하세요.
https://yourdomain에서 OnlyOffice 문서에 액세스하세요
제공된 API를 사용하여 문서 예제를 활성화하고 애플리케이션에 통합하는 방법에 대한 추가 지침이 포함된 ONLYOFFICE Docs 환영 페이지가 표시됩니다.
단계 5: 타사 앱 통합
Pydio, Zimbra, WordPress, Odoo, SuiteCRM, Mattermost 등과 같은 타사 애플리케이션과 ONLYOFFICE를 통합하는 과정은 매우 원활합니다. 모든 커넥터는 다음 링크에서 확인하세요:
- ONLYOFFICE 커넥터 목록


