홈 서버 만들기 15. 온라인 오피스: ONLYOFFICE (Docker, Nginx)

May 10, 2018

우분투 서버에 온라인 오피스 프로그램인 ONLYOFFICE를 설치하면 마치 MS Office와 Outlook을 웹사이트상에서 이용하는 것과 같이 웹에서 .docx .xlsx 등의 오피스 문서를 작성할 수 있고, 여러 이메일 서비스 계정을 한곳에 모아서 사용할 수 있다. 구글 드라이브, 원 드라이브, 드롭박스 등의 외부 클라우드 스토리지도 연결해서 한 곳에서 사용할 수 있고, 앞서 설치한 Nextcloud와의 연결도 간단해서 ONLYOFFICE에서 Nextcloud의 데이터를 사용하고, Nextcloud에서 바로 오피스 문서를 작성할 수도 있다. 데스크톱 및 모바일 앱도 제공하므로 웹이 아닌 PC, Mac, 리눅스, iOS, 안드로이드에서도 문서와 스토리지 기능을 이용할 수 있다. 또 Mail 서버에 자신의 도메인을 연결하면 user@example.com 형태의 자신의 도메인 주소로 된 이메일을 발송/수신할 수도 있다. 그밖에 CRM 고객 관리, 프로젝트 협업, 캘린더 등의 기능이 있고, XMPP 프로토콜을 사용해서 이용자 간의 채팅도 지원하는데 외부의 서버가 아닌 우리 집의 홈 서버에서 채팅이 이루어지므로 보안이 필요한 일에 활용할 수 있다.

서브 도메인 생성

온리오피스 (ONLYOFFICE) 접속용 서브 도메인을 하나 생성한다. 여기서는 office.example.com을 생성한 것으로 가정한다. CNAME으로 생성하지 말고 A레코드로 생성해야 채팅 기능을 원활하게 사용할 수 있다.

SSL/TLS 인증서 발급

https 보안 연결을 위해서 office.example.com 도메인에 SSL/TLS 인증서를 발급받는다. 자세한 방법은 앞선 글 07. SSL/TLS 인증서를 참고한다. 이 방법으로 인증서를 발급받으면 *.example.com 형태의 와일드카드 서브 도메인에 대한 인증서가 발급되므로 이 인증서를 그대로 office.example.com 도메인에 사용할 수 있다.

인터넷 공유기 포트 포워딩

인터넷 공유기를 사용하고 있다면 포트 포워딩 기능을 이용해서 아래의 포트가 TCP 및 UDP 모두 홈 서버 컴퓨터로 향하도록 포워딩한다.

포트번호     용도
25          SMTP
110         POP3
143         IMAP
465         SMTPS
587         MSA
993         IMAPS
995         POP3S
3306        MySQL
5222        Talk
5432        PostgreSQL
5672        RabbitMQ
6379        Redis

방화벽 설정

sudo iptables -A INPUT -p tcp -m tcp -m multiport --dports 3306,5222,5280,5432,5672,6379,8000,8080,8081,9001,9865,9866,9871,9882,9888 -j ACCEPT

sudo iptables -A INPUT -p udp -m udp -m multiport --dports 3306,5222,5280,5432,5672,6379,8000,8080,8081,9001,9865,9866,9871,9882,9888 -j ACCEPT

sudo iptables -A INPUT -p tcp -m tcp -m multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

sudo iptables -A INPUT -p udp -m udp -m multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

iptables 방화벽에서 온리오피스가 사용하는 포트를 열어준다. (기본적인 방화벽 세팅은 03. 우분투 서버 18.04 LTS 기본 설정에서 완료했다.)

sudo netfilter-persistent save
sudo netfilter-persistent reload

iptables 방화벽의 설정 내용을 저장하고 리로드한다. (iptables-persistent는 03. 우분투 서버 18.04 LTS 기본 설정에서 설치했다.)

Docker 설치

온리오피스는 Docker 이미지로 실행하는 것이 간편하다. 또 온리오피스의 일부를 구성하는 Mail 서버는 Docker 이미지로만 제공되고 있다. 우분투 서버에 Docker를 먼저 설치한다.

sudo apt-get update
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

이 명령은 Docker의 패키지 저장소를 통해서 최신 stable 버전의 Docker를 설치하는 명령이다. 하지만 우분투 18.04 버전이 출시된 지 얼마 지나지 않은 현재(2018년 5월 10일)는 아직 stable 버전의 Docker가 제공되지 않고 edge, test 또는 nightly 버전만 설치할 수 있다. stable 버전 제공 여부는 https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/ 에서 확인할 수 있다. stable 버전이 아니어도 최신 버전을 설치하려면 위 명령어에서 stable 부분을 edgetest 또는 nightly로 바꿔서 설치하거나, 조금 예전 버전이어도 괜찮다면 아래에 설명할 우분투의 패키지 저장소에서 Docker를 설치하는 방법을 사용한다.

sudo apt-get update
sudo apt-get install docker.io

이 명령은 우분투의 패키지 저장소에서 Docker를 설치하는 명령인데, 위의 Docker의 패키지 저장소에서 설치하는 방법보다 예전 버전이 설치된다. 하지만 온리오피스를 사용하는 데에는 문제가 없으므로 이 방법을 사용해도 무방하다.

docker --version

이 명령으로 Docker version 17.12.1-ce 등의 Docker 버전이 출력되면 Docker가 설치된 것이다.

sudo systemctl enable docker

홈 서버 컴퓨터가 재시작된 후에도 Docker가 자동으로 실행되도록 enable 명령을 내려준다.

ONLYOFFICE 준비

sudo docker network create --driver bridge onlyoffice

온리오피스가 사용할 Docker 네트워크를 생성한다.

sudo mkdir -p /home/Onlyoffice/CommunityServer/data
sudo mkdir -p /home/Onlyoffice/CommunityServer/logs
sudo mkdir -p /home/Onlyoffice/DocumentServer/data
sudo mkdir -p /home/Onlyoffice/DocumentServer/db
sudo mkdir -p /home/Onlyoffice/DocumentServer/fonts
sudo mkdir -p /home/Onlyoffice/DocumentServer/forgotten
sudo mkdir -p /home/Onlyoffice/DocumentServer/lib
sudo mkdir -p /home/Onlyoffice/DocumentServer/logs
sudo mkdir -p /home/Onlyoffice/MailServer/data/certs
sudo mkdir -p /home/Onlyoffice/MailServer/logs
sudo mkdir -p /home/Onlyoffice/mysql/conf.d
sudo mkdir -p /home/Onlyoffice/mysql/data
sudo mkdir -p /home/Onlyoffice/mysql/initdb

온리오피스의 데이터가 저장될 디렉토리를 생성한다. Docker 이미지 내부가 아닌, 이렇게 외부에 생성한 디렉토리에 데이터를 저장하면 온리오피스를 업그레이드 할 때 Docker 이미지만 교체해주면 모든 데이터가 그대로 반영되므로 편리하다. 데이터를 직접 관리하기 위해서 /home/Onlyoffice 경로에 디렉토리를 생성했다. /home/Onlyoffice 부분은 원하는 대로 생성하되, 이보다 하위 경로는 위의 이름과 체계로 생성한다.

sudo nano /home/Onlyoffice/mysql/conf.d/onlyoffice.cnf

온리오피스 작동에 필요한 onlyoffice.cnf 파일을 nano 편집기로 생성하고 아래의 내용을 기록한다. 파일의 생성 경로를 주의해야 하는데, 앞서 /home/Onlyoffice가 아닌 다른 디렉토리로 변경했다면 여기서도 변경한 디렉토리로 생성해야 한다.

[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000

위 내용을 기록하고, 작성했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo nano /home/Onlyoffice/mysql/initdb/setup.sql

setup.sql 파일을 nano 편집기로 생성해서 온리오피스 작동에 필요한 데이터베이스 사용자 정보를 아래의 형태로 기록한다. 앞서 /home/Onlyoffice가 아닌 다른 디렉토리로 변경했다면 여기서도 변경한 디렉토리로 생성해야 한다.

CREATE USER 'onlyoffice_user'@'localhost' IDENTIFIED BY 'onlyoffice_pass';
CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY 'Isadmin123';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY 'my-secret-pw';
GRANT ALL PRIVILEGES ON * . * TO 'onlyoffice_user'@'%' IDENTIFIED BY 'onlyoffice_pass';
GRANT ALL PRIVILEGES ON * . * TO 'mail_admin'@'%' IDENTIFIED BY 'Isadmin123';
FLUSH PRIVILEGES;

2명의 사용자를 생성하고, 생성한 2명과 root 사용자에게 데이터베이스 사용 권한을 부여하는 내용이다. 사용자명 (USER) 이나 비밀번호 (IDENTIFIED BY) 를 원하는 대로 변경해도 되는데, 여기서 변경한 내용은 아래에 설명할 ONLYOFFICE 실행 명령에서도 맞춰줘야 한다. 맞춰줄 위치는 아래에 일괄적으로 녹색으로 표시해둘 것이다. 작성했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

ONLYOFFICE 실행

온리오피스는 Document 서버, Mail 서버, Community 서버로 구성되어 있고 mysql 서버가 중간에서 데이터를 처리하는 구조로 되어 있다. 네 가지 서버의 Docker 이미지를 다음의 순서로 내려받아 실행한다. 녹색 부분은 앞서 setup.sql 파일에 기록한 데이터베이스 사용자 정보를 맞춰줄 부분이다. 파란색은 나중에 온리오피스를 업그레이드할 때 명령어에 입력할 각 서버의 이름이라는 것을 기억해둔다.

sudo docker run --net=onlyoffice -i -t -d --restart=always --name=onlyoffice-mysql-server \
 -v /home/Onlyoffice/mysql/conf.d:/etc/mysql/conf.d \
 -v /home/Onlyoffice/mysql/data:/var/lib/mysql \
 -v /home/Onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \
 -e MYSQL_ROOT_PASSWORD=my-secret-pw \
 -e MYSQL_DATABASE=onlyoffice \
 mysql:5.7

가장 먼저 mysql 서버를 내려받아서 실행한다. 이 명령은 공식 Docker 이미지 저장소에 있는 mysql:5.7 이미지를 내려받아서, 이 명령에 포함된 조건을 적용해서 이름이 onlyoffice-mysql-server인 Docker 컨테이너로 실행하라는 명령이다. 앞서 데이터 저장 디렉토리를 /home/Onlyoffice가 아닌 다른 경로로 변경했다면 여기서도 변경한 디렉토리를 입력해야 한다. 참고로 위의 명령은 한 줄로 작성하기에는 너무 길어서 \를 사용해서 여러 줄로 나눈 것으로, 전체를 한꺼번에 복사해서 PuTTY 등에 붙여넣으면 된다.

sudo docker run --net=onlyoffice -i -t -d --restart=always --name=onlyoffice-document-server \
 -v /home/Onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
 -v /home/Onlyoffice/DocumentServer/db:/var/lib/postgresql \
 -v /home/Onlyoffice/DocumentServer/fonts:/usr/share/fonts/truetype/custom \
 -v /home/Onlyoffice/DocumentServer/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten \
 -v /home/Onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
 -v /home/Onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
 onlyoffice/documentserver

그다음 Document 서버를 내려받아서 실행한다. 앞서 데이터 저장 디렉토리를 /home/Onlyoffice가 아닌 다른 경로로 변경했다면 여기서도 변경한 디렉토리를 입력해야 한다.

sudo docker run --init --net=onlyoffice --privileged -i -t -d --restart=always --name=onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 \
 -e MYSQL_SERVER=onlyoffice-mysql-server \
 -e MYSQL_SERVER_PORT=3306 \
 -e MYSQL_ROOT_USER=root \
 -e MYSQL_ROOT_PASSWD=my-secret-pw \
 -e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \
 -v /home/Onlyoffice/MailServer/data:/var/vmail \
 -v /home/Onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \
 -v /home/Onlyoffice/MailServer/logs:/var/log \
 -h example.com \
 onlyoffice/mailserver

그다음 Mail 서버를 내려받아서 실행한다. -h 옵션은 이 Mail 서버의 호스트 네임을 지정하는 옵션인데, Mail 서버의 기능을 이용해서 user@example.com 형태의 이메일 주소를 사용할 때의 user@ 을 제외한 뒷부분의 도메인을 입력한다. 앞서 데이터 저장 디렉토리를 /home/Onlyoffice가 아닌 다른 경로로 변경했다면 여기서도 변경한 디렉토리를 입력해야 한다.

sudo docker run --net=onlyoffice -i -t -d --restart=always --name=onlyoffice-community-server -p 9880:80 -p 5222:5222 \
 -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \
 -e MYSQL_SERVER_DB_NAME=onlyoffice \
 -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \
 -e MYSQL_SERVER_USER=onlyoffice_user \
 -e MYSQL_SERVER_PASS=onlyoffice_pass \
 -e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \
 -e MAIL_SERVER_API_PORT=8081 \
 -e MAIL_SERVER_API_HOST=onlyoffice-mail-server \
 -e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server \
 -e MAIL_SERVER_DB_PORT=3306 \
 -e MAIL_SERVER_DB_NAME=onlyoffice_mailserver \
 -e MAIL_SERVER_DB_USER=mail_admin \
 -e MAIL_SERVER_DB_PASS=Isadmin123 \
 -v /home/Onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
 -v /home/Onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
 onlyoffice/communityserver

마지막으로 Community 서버를 내려받아서 실행한다. 포트를 지정하는 -p 옵션 뒤에 9880:80은 온리오피스가 사용하는 80번 포트를 우분투 서버의 Nginx가 이미 사용하고 있기 때문에 9880번 포트로 매핑한 것이다. 이렇게 매핑한 다음에 Nginx의 프록시 구성으로 매핑한 포트에서 온리오피스를 불러오게 된다. 임의로 9880번을 선택했고, 다른 번호로 바꿔도 무방하다. 앞서 데이터 저장 디렉토리를 /home/Onlyoffice가 아닌 다른 경로로 변경했다면 여기서도 변경한 디렉토리를 입력해야 한다.

Nginx 설치

이렇게 실행된 온리오피스는 자체 내장된 웹 서버를 이용해서 스스로 작동하지만 아직 외부 네트워크에서는 접속할 수 없는 상태이다. 이것을 Nginx의 프록시 기능을 사용해서 외부 네트워크로 확장할 것이다. Nginx 설치 및 작동에 관한 기본적인 개념은 앞선 글 08. 웹 서버를 참고한다.

DH Param 키 생성

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

앞선 글을 통해서 DH Param 키를 생성했다면 그 키 하나로 모든 웹사이트에 사용할 수 있으므로 이 단계는 건너뛴다. 만일 생성하지 않았다면 위 명령으로 DH Param 키를 생성한다. DH Param 키는 일부 암호화 방식의 성능을 높이기 위해 사용하는 난수인데, 위 명령어는 4096 비트 (512 바이트) 로 생성하므로 시간이 오래 걸린다. 서버 컴퓨터의 성능에 따라 다르지만 길게는 수십분 가량 소요되기도 한다. 2048 비트 (256 바이트) 로 생성하려면 위의 명령에서 끝에 4096을 2048로 바꿔서 입력한다. 키가 생성되는 위치는 /etc/ssl/certs/dhparam.pem 으로 지정했다.

Nginx 프록시 설정

sudo mkdir /var/www/onlyoffice

Nginx 프록시가 작동될 root 디렉토리를 생성한다.

sudo chown varins:varins /var/www/onlyoffice

생성한 root 디렉토리의 소유자와 소유그룹을 자신의 사용자 계정으로 설정한다. varins:varins를 자신의 사용자 이름으로 바꿔서 입력한다.

sudo nano /etc/nginx/sites-available/office.example.com

office.example.com의 서버 블록 파일을 nano 편집기로 새로 생성한다. 구분하기 쉽도록 서버 블록 파일 이름을 office.example.com 도메인 이름 그대로 사용했다.

map $http_host $this_host {
	"" $host;
	default $http_host;
}

map $http_x_forwarded_proto $the_scheme {
	default $http_x_forwarded_proto;
	"" $scheme;
}

map $http_x_forwarded_host $the_host {
	default $http_x_forwarded_host;
	"" $this_host;
}

map $http_upgrade $proxy_connection {
	default upgrade;
	"" close;
}

server {
	listen 80;

	server_name office.example.com;

	return 301 https://$server_name$request_uri;
}

server {
	listen 443 ssl http2;

	server_name office.example.com;

	root /var/www/onlyoffice;

	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;

	ssl_protocols TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256;
	ssl_ecdh_curve secp384r1;
	ssl_session_timeout 10m;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;
	ssl_stapling on;
	ssl_stapling_verify on;
	resolver 8.8.8.8 8.8.4.4 valid=300s;
	resolver_timeout 5s;

	add_header Strict-Transport-Security max-age=31536000;
	add_header X-Content-Type-Options nosniff;

	error_log /var/log/nginx/onlyoffice.error;
	access_log /var/log/nginx/onlyoffice.access;

	location / {
		proxy_pass http://127.0.0.1:9880;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $proxy_connection;
		proxy_set_header X-Forwarded-Host $the_host;
		proxy_set_header X-Forwarded-Proto $the_scheme;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

빨간색 부분을 자신의 것으로 변경해야 함을 유의하면서, 서버 블록 내용을 위와 같이 작성한다. ssl_certificatessl_certificate_key에는 앞선 글 07. SSL/TLS 인증서를 참고해서 발급받은 인증서 파일의 경로가 들어가고, ssl_dhparam에는 DH Param 키의 경로가 들어간다. proxy_pass 부분에는 앞서 80번 포트를 매핑한 9880 포트가 예시되어 있으므로 다른 번호로 매핑했다면 여기서도 바꿔주어야 한다.

작성이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo ln -s /etc/nginx/sites-available/office.example.com /etc/nginx/sites-enabled/

작성한 서버 블록을 작동시키기 위해 /etc/nginx/sites-enabled/ 경로에 심볼릭 링크를 만들어준다.

만일 이런 서버 블록을 여러 개 생성해서 다수의 웹사이트를 운영한다면 도메인 처리를 원활하게 하기 위해서 Nginx 설정 파일 nginx.conf에 아래의 설정을 추가한다.

sudo nano /etc/nginx/nginx.conf

Nginx 설정 파일인 nginx.conf 파일을 nano 편집기로 연다.

server_names_hash_bucket_size 64;

server_names_hash_bucket_size 64;를 찾아서 앞에 주석 #을 제거하고, Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다. 이미 처리되어 있다면 그대로 nano 편집기를 빠져나온다.

이상으로 서버 블록 설정이 끝났으면, 설정한 서버 블록이 Nginx에 반영되도록 아래와 같이 Nginx를 재시작한다.

sudo nginx -t

Nginx 설정에 기본적인 문법 오류가 없는지 점검한다. 오류가 없다면
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
이런 메시지가 출력된다. 만일 다른 메시지가 나온다면 메시지를 참고해서 설정 사항을 점검한다.

sudo systemctl restart nginx

오류가 없으면 Nginx를 재시작한다.

 

ONLYOFFICE 최초 로그인

웹 브라우저로 office.example.com 주소에 접속하면 얼마간의 로딩 화면이 지나간 후에 아래와 같은 설정 화면이 나타난다.

Password   관리자 비밀번호를 결정한다.
Registration Settins   관리자 이메일을 입력한다. 이 이메일 주소는 로그인 ID로 사용된다.
Language   Korean을 선택하면 일정 부분 한글로 번역된 환경을 사용할 수 있다.
Time Zone   Asia/Seoul을 선택한다.
하단의 체크 박스 2개를 체크하고 Continue 버튼을 클릭하면 로그인된다. 로그인 후에 입력한 이메일 주소로 인증 이메일이 전송되어 오면 확인한다.

 

ONLYOFFICE 메인 화면

온리오피스에 로그인하면 아래와 같은 메인 화면이 나타난다. 문서로 이동해서 샘플 문서들을 열어보고 정상 작동하는지 확인해본다.

 

 

글꼴 추가

온리오피스에는 나눔 글씨체가 기본으로 내장되어 있어서 한글을 바로 사용할 수 있다. 다만 Internet Explorer에서는 받침 타이핑이 원활하지 않은데 Edge, Chrome 등의 다른 웹 브라우저에서는 문제가 없다. 온리오피스에 원하는 글꼴을 추가하고 싶다면 아래의 방법을 이용한다.

sudo cp 글꼴파일 /home/Onlyoffice/DocumentServer/fonts

추가하려는 글꼴 파일을 /home/Onlyoffice/DocumentServer/fonts 경로에 복사한다. 이 경로에 글꼴 파일을 놓으면 Docker의 온리오피스에도 자동으로 전달된다. 앞서 데이터 저장 디렉토리를 /home/Onlyoffice가 아닌 다른 경로로 변경했다면 변경한 디렉토리로 실행한다.

sudo docker exec onlyoffice-document-server /usr/bin/documentserver-generate-allfonts.sh

이 명령을 실행해서 Docker의 온리오피스가 글꼴 파일을 적용하도록 한다.

웹 브라우저 캐시 비우기

웹 브라우저에 캐시된 데이터를 비우고 다시 접속하면 설치된 글꼴을 확인할 수 있다.

 

도메인 설정

상단의 톱니바퀴 모양의 버튼을 눌러서 설정 화면으로 이동한 다음, 좌측 패널의 Common 영역 아래에 Customization 메뉴의 화면에서 DNS 설정에 자신의 온리오피스 접속 주소를 입력하고 저장한다. 이 설정은 온리오피스 최초 로그인 화면에서 무작위 문자열로 지정됐던 온리오피스의 이름을 자신의 접속 주소로 바꿔주는 것으로, XMPP를 지원하는 모바일 채팅 앱에서 접속할 때 등에 사용된다.

 

ONLYOFFICE에 Nextcloud 연결

앞서 설치한 Nextcloud를 ONLYOFFICE에 연결하면 Nextcloud의 데이터를 ONLYOFFICE에서 사용할 수 있다. 먼저 Nextcloud에 접속해서 메인 화면 좌측 하단에 용량 정보 밑에 있는 톱니바퀴 설정 메뉴를 클릭하면 WebDAV 주소가 나온다. 이 주소를 복사한다. 그다음, ONLYOFFICE에 접속해서 문서로 들어간 다음, 좌측 패널 하단의 Add account에 있는 Nextcloud 버튼을 클릭한다. 나타나는 화면에서 Connection url에 앞서 복사한 Nextcloud의 WebDAV 주소를 입력하고, 로그인 정보를 추가해서 저장을 클릭하면 Nextcloud의 데이터를 ONLYOFFICE의 문서 화면에서 사용할 수 있게 된다. 만일 Nextcloud에서 2단계 인증을 사용하고 있다면 Nextcloud의 설정 화면에서 좌측 패널의 개인 영역에 있는 보안을 클릭하면 새로운 앱 암호 만들기 버튼이 보인다. 적당한 앱 이름을 넣고 이 버튼을 클릭해서 생성되는 로그인 정보로 ONLYOFFICE에서 연결하면 된다.

 

Nextcloud에 ONLYOFFICE 연결

 

Nextcloud에 ONLYOFFICE를 연결하면 Nextcloud에서 바로 오피스 문서를 작성할 수 있다. Nextcloud의 앱 설정 화면에서 좌측 패널에 있는 오피스 및 텍스트 카테고리를 클릭하고, ONLYOFFICE 항목을 찾아서 사용함을 클릭하면 ONLYOFFICE 앱이 활성화된다. 그다음 우측 상단의 설정 메뉴를 통해서 Nextcloud의 설정 화면으로 넘어가면 좌측 패널의 관리 영역에 ONLYOFFICE 항목이 생성된 것을 볼 수 있다. 이것을 선택하고 Document Editing Service address 입력란에 https://office.example.com/ds-vpath/ 형태로 ONLYOFFICE 접속 주소 뒤에 /ds-vpath/가 합쳐진 주소를 입력하고 저장하면 Nextcloud에서 바로 오피스 문서를 작성할 수 있게 된다.

 

3rd party 서비스 연결

온리오피스에 서드 파티 서비스를 연결하면 구글 드라이브, One Drive, 드롭박스 같은 클라우드 스토리지들을 한곳에 모아서 사용할 수 있고, 2단계 인증도 이용할 수 있다. 온리오피스 상단의 톱니바퀴 모양의 버튼을 클릭해서 설정 화면으로 간 다음, 좌측 패널의 Integration 항목 밑에 Third Party Services를 클릭하면 연결할 수 있는 서비스 목록이 나온다. off 된 버튼을 클릭해서 on으로 바꾸면 각 서비스의 API를 이용해서 연결하는 창이 나타난다. 각각의 서비스마다 API 정보를 생성하는 방법이 다르므로 온리오피스 웹사이트의 각 서비스별 설명을 참고한다.

 

이메일 연결

온리오피스에 외부 이메일 계정을 연결하면 모든 이메일을 한 곳에서 받아보고 또 보낼 수 있다. 먼저 온리오피스 메인 화면에서 Mail Server로 들어가면 새 계정 만들기 버튼이 있는 안내창이 나타난다. 이 안내창의 새 계정 만들기 버튼을 클릭해도 되고, 좌측 패널의 설정 항목 아래에 있는 계정 설정 메뉴를 클릭해도 된다. 새 계정 만들기 창이 뜨면 우측 하단의 고급 버튼을 눌러서 IMAP 또는 POP 설정으로 자신이 이용하는 이메일 서비스를 연결한다. 네이버 메일이나 다음 메일은 별도의 추가 조치 없이 설정하면 되고, GMail은 앞선 3rd party 서비스 설정에서 Google API 연결을 먼저 하면 새 계정 만들기 창의 오른쪽에 link with Google Connect 버튼이 생성되는데 이 버튼을 클릭해서 로그인하면 된다. Google API 연결을 하지 않고 일반 IMAP/POP 설정으로 이메일을 가져오려면 먼저 Gmail에 로그인해서 보안 수준이 낮은 앱에서 계정에 액세스하도록 허용 설정을 해야 한다. 2단계 인증을 사용하고 있다면 앱 비밀번호로 로그인하기 항목도 참고한다.

 

메일 서버 설정

메일 화면의 좌측 패널에 설정 항목 아래에 있는 Mail Server 메뉴를 클릭해서 자신이 보유한 도메인을 추가하는 절차를 진행하면 DNS에 TXT 레코드와 MX 레코드를 설정하는 과정을 거치게 되고, 최종적으로 user@exmple.com 형태의 자신의 도메인 주소로 된 이메일을 사용할 수 있게 된다. 단, 이메일이 모든 상대방에게 전송되도록 보장하려면 Reverse DNS 설정까지 해야 하는데 일반적으로 인터넷 회선 공급 회사(ISP)에서는 고정 IP 주소 상품에만 Reverse DNS 설정을 제공하므로 유동 IP 주소를 사용하는 보통의 가정용 상품에서는 불가능할 수 있다.

 

데스크톱 및 모바일 앱

온리오피스는 PC, Mac, 리눅스용 데스크톱 프로그램iOS, 안드로이드 모바일 앱을 제공한다. 자신의 접속 주소 office.example.com 을 입력하고 로그인하면 웹이 아닌 각각의 디바이스에서도 문서와 스토리지 기능을 사용할 수 있다. 단, 글꼴은 데스크톱 프로그램의 경우 각 데스크톱 OS에 설치된 글꼴을 사용하고, 모바일 앱은 앱 자체에 내장된 글꼴을 사용하는데 아직 한글은 지원되지 않는다.

 

업그레이드

앞서 별도의 디렉토리를 생성해서 온리오피스의 데이터를 저장하고 있으므로 온리오피스의 Docker 이미지만 교체해주면 쉽게 업그레이드가 완료된다. 온리오피스의 출시 버전 정보는 아래의 주소에서 확인할 수 있다:

Document 서버:   https://helpcenter.onlyoffice.com/server/document/changelog.aspx
Mail 서버:           https://helpcenter.onlyoffice.com/server/mail/changelog.aspx
Community 서버:  https://helpcenter.onlyoffice.com/server/community/changelog.aspx

sudo docker stop onlyoffice-mysql-server
sudo docker stop onlyoffice-document-server
sudo docker stop onlyoffice-mail-server
sudo docker stop onlyoffice-community-server

먼저 각 서버의 Docker 컨테이너 작동을 중지한다.

sudo docker rm onlyoffice-mysql-server
sudo docker rm onlyoffice-document-server
sudo docker rm onlyoffice-mail-server
sudo docker rm onlyoffice-community-server

각 서버의 Docker 컨테이너를 삭제한다.

sudo docker rmi mysql:5.7
sudo docker rmi onlyoffice/documentserver
sudo docker rmi onlyoffice/mailserver
sudo docker rmi onlyoffice/communityserver

각 서버의 Docker 이미지를 삭제한다.

그다음 최신 버전의 Docker 이미지를 내려받아서 실행하면 되는데, 방법은 앞서 온리오피스를 처음 실행할 때 사용한 명령과 동일하므로 똑같이 입력하면 된다.

Docker 컨테이너 재시작 명령

만일 일부 기능이 작동하지 않는다면 해당 기능을 담당하는 서버의 Docker 컨테이너를 아래의 명령으로 재시작해본다.

sudo docker restart onlyoffice-mysql-server
sudo docker restart onlyoffice-document-server
sudo docker restart onlyoffice-mail-server
sudo docker restart onlyoffice-community-server

 

 

홈 서버 만들기 목차 
https://varins.com/category/server

01. 하드웨어 구성과 전기 요금
02. 우분투 서버 18.04 LTS 설치
03. 우분투 서버 18.04 LTS 기본 설정
04. 파일 복원: Btrfs 스냅샷
05. 네트워크 파일 공유: Samba (SMB)
06. Dynamic DNS: 구글 도메인 + ddclient
07. SSL/TLS 인증서: Let's Encrypt (Wildcard)
08. 웹 서버: Nginx, 서버 블록, https 보안연결
09. 웹사이트: php + MariaDB + WordPress
10. 서버 모니터링: Monitorix + Nginx Proxy
11. FTPS: vsftpd
12. VPN: IKEv2 (strongSwan)
13. Torrent: Transmission
14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)
15. 온라인 오피스: 온리오피스 (Docker, Nginx)
16. 트랜스코딩: Plex

Leave a comment

Your email address will not be published. Required fields are marked *

Prev Post Next Post