YGH

[홈서버 만들기] 11. 오피스 서버

2020년 11월 17일

개요

오피스 서버는 웹 기반으로 문서 작업을 할 수 있게 하는 서비스이다.

평소에는 개인 컴퓨터로 작업하기 때문에 Nextcloud 윈도우 앱을 설치하여 파일 동기화를 시키 놓고 문서작업을 하면 된다.

하지만 대학생이라는 시점에서 보면 강의실이나 연구실에 있는 공용 컴퓨터를 쓸 때 Nextcloud 를 사용하면 다운 후 문서작업을 해야 한다.

혹여나 문서 작업 프로그램이 설치 되어있는 않은 컴퓨터라면 더욱 난감 해진다.

기존에 쓰던 Onedrive가 웹 기반 문서작업이 가능해서 매우 편리했는데 Nextcloud에도 OnlyOffice를 연동시켜 웹 기반 문서작업이 가능하게 해보자.

PostgreSQL 설치 및 설정

기존에 설치되어있는 MariaDB를 사용해보려 했지만 각 DBMS의 장점이 있기 때문에 OnlyOffice가 추천하는 DBMS인 PostgreSQL을 설치 및 설정을 해보자.

공식 홈페이지에서 제공하는 명령어가 있는데 계정 정보를 건드리지 않고 그대로 입력하자.

$ sudo apt install postgresql
$ sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
$ sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
$ sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

NodeJS, Redis, Rabbitmq 설치

$ sudo apt install nodejs redis-server rabbitmq-server

이상이 없는지 확인해보자.

$ node -v
v12.18.4
$ systemctl status redis-server
● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor >
     Active: active (running) since Sun 2020-09-27 10:18:56 UTC; 1min 51s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 38116 (redis-server)
      Tasks: 4 (limit: 9044)
     Memory: 2.1M
     CGroup: /system.slice/redis-server.service
             └─38116 /usr/bin/redis-server 127.0.0.1:6379
$ systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vend>
     Active: active (running) since Sun 2020-09-27 10:19:05 UTC; 2min 1s ago
   Main PID: 38287 (beam.smp)
     Status: "Initialized"
      Tasks: 91 (limit: 9044)
     Memory: 76.4M
     CGroup: /system.slice/rabbitmq-server.service
             ├─38283 /bin/sh /usr/sbin/rabbitmq-server
             ├─38287 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 64 -MBas >
             ├─38545 erl_child_setup 65536
             ├─38575 inet_gethost 4
             └─38576 inet_gethost 4

OnlyOffice 서버 설치 및 설정

GPG 키를 추가하자.

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5

OnlyOffice 레포지토리를 추가하자.

$ echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list

패키지 저장소를 업데이트한 뒤 설치하자.

설치 도중 데이터 베이스 패스워드 입력하라는 란이 나오는데 아까 PostgreSQL 설치할 때 정한 그대로 onlyoffice 라고 입력하면 된다.

$ sudo apt update
$ sudo apt install onlyoffice-documentserver

설치 도중 오류 메세지를 보지 않았을 경우 정상적으로 설치된 것이다.

만약 오류가 생겼다면 아래 명령어로 삭제 후 다시 설치해 보면 된다.

$ sudo apt purge onlyoffice-documentserver
$ sudo apt autoremove

Nginx 서버 블록 설정

서버 이름 부분을 추가해주자.

include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_tokens off;
  server_name office.ygh.kr;

  include /etc/nginx/includes/ds-*.conf;
}
$ sudo service nginx restart

이제 웹으로 접속을 해볼 건데 아직 https 설정을 하지 않았기 때문에 http로 접속 해야한다.

http://office.[도메인] 에 접속하면 작동하는 것을 확인할 수 있다.

OnlyOffice가 업데이트 되면서 아래 화면서 다르게 나타날 것이니 내용을 잘 확인 해보면 정상 작동한다는 것을 알 수 있다.

이제 https를 적용해 보자.

include /etc/nginx/includes/http-common.conf;

server {
        listen 80;
        server_name office.ygh.kr;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
server_name office.ygh.kr;

        ssl_certificate /etc/letsencrypt/live/ygh.kr/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/ygh.kr/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/ygh.kr/chain.pem;
        ssl_dhparam /etc/ssl/dhparam.pem;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
        ssl_ecdh_curve secp384r1;
        ssl_stapling on;
        ssl_stapling_verify on;

        add_header Strict-Transport-Security max-age=15552000;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-XSS-Protection "1; mode=block" always;

        server_tokens off;
        include /etc/nginx/includes/ds-*.conf;
}
$ sudo service nginx restart

다시 접속해보면 https로 접속된 것을 확인할 수 있다.

Nextcloud 연동

Nextcloud 웹 브라우저에서 아래와 같이 따라 앱 설치 후 설정하면 된다.

이제 문서 파일 아무거나 클릭해서 열어보면 새 탭이 생기면서 OnlyOffice가 열린 것을 확인할 수 있다.

윈도우에서의 Microsoft Office와 똑 같은 환경일 것이라는 기대가 너무 컸던 나머지 처음 닥 보고 충격을 먹었다.

몇 가지 문서를 둘러보는데 글 상자 위치와 폰트가 약간씩 변형되어 보이는 현상이 생겨 실망이 컸다.

그래도 웹 클라우드 스토리지에서 문서를 바로 볼 수 있다는 점에 매우 만족한다.

급하게 수정해야할 것이 아니라면 OnlyOffice는 열람용으로만 사용해야겠다.