J-한솔넷

기록 보관 : NextCloud MS Office 편집 기능 설정하기 본문

웹 개발관련/서버

기록 보관 : NextCloud MS Office 편집 기능 설정하기

jhansol 2024. 1. 22. 21:19

저의 개인 홈페이지에 있던 내용을 옮겨 기록하고자 합니다. 제가 게으른 탓에 활용하기 힘들고 유지를 하기에 금전적으로도 낭비다 생각되어 님길 것은 남기고, 버릴 것은 버리고 사이트를 없에기 위함입니다. 기존 내용 그대로 아래와 같이 옮겼습니다.


앞에서 내장 서버 이미지를 이용하여 MS Office 문서 열람 및 편집 기능을 설정했었다. 그러나 이 내장 서버의 문제는 한글이 깨진다는 단점이 치명적이다. 그 외 단점도 몇가지가 있기는 하지만 한글 문제를 제외하면 매우 미미한 것이다. 그래서 이번에는 별도로 서버 대몬을 설치하여 사용하는 것을 소개하고자 한다.

별도 서버 구성하는 방법은 4가지 정도가 있다.

  • 가상서버 이미지를 다운로드
  • 도커 이미지 다운로드
  • 리늑스 패키지 다운로드
  • 소스 다운로드 및 컴파일

위 방법 중 나는 2개의 방법으로 설치한 경험이 있다. 가장 먼저 해본 것으로는 리눅스 패키지를 직접 설치하는 방법이었다. 이 방법은 지금은 유지보수 지원이 안되는 리눅스버전에서는 문제가 없었으나 최신 버전에서는 설치시 오류가 발생한다. 그리고 두 번째로는 도커 이미지를 다운로드하여 설정하는 방법인데, 이 방법은 문제는 없으나 도커를 설치해야 한다는 것이 조금 번거롭다. 여기서는 도커를 설치하고 이미지를 다운로드하여 설정하겠다.

도커 설치

도커 이미지를 이용하기 위해서는 도커 CE 이상이 설치되어 있어야 한다. 아래와 같이 더커 이미지를 설치해보자.

apt-get install -y ca-certificates curl software-properties-common \
        apt-transport-https gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
        gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io

Collabora online server 실행

위와 같이 도커가 실행되었다면 아래와 같이 실행하면 서버 설치 및 실행 작업은 끝난다. 도커 컨테이너를 실행하는 명령은 클라우드 사이트가 HTTPS로 연결되는지, 아니면 HTTP로 연결되는지에 따라 명령을 달이 입력해야 한다. (다른 부분은 '-o:ssl.termination='이다.)

docker run -t -d -p 0.0.0.0:9980:9980 -e "extra_params=--o:ssl.enable=false --o:net.proto=IPv4 --o:ssl.termination=true --o:net.post_allow.host[0]=45\.76\.210\.8" -e "allowgroup1=https://test.jhansol.net:443" --privileged --restart always collabora/code

docker run -t -d -p 0.0.0.0:9980:9980 -e "extra_params=--o:ssl.enable=false --o:net.proto=IPv4 --o:ssl.termination=false --o:net.post_allow.host[0]=45\.76\.210\.8" -e "allowgroup1=https://test.jhansol.net:443" --privileged --restart always collabora/code

위 명령의 각 부분별 설명을 간단하게나마 하자면 아래와 같다.

  • run : 도커 이미지 실행
  • -t : 터미널 모드
  • -p : 접속 포터 포워딩 (0.0.0.0:9980:9980 : 외부로부터 9980포터로의 데이터를 컨테이너 9980포터로 포워딩함)
  • -e : 컨테이너에 필요한 환경변수 술정
  • -e "net.post_allow.host[0]=xxx.xxx.xxx.xxx" : 포스트 가능한 클라이언트 IP를 지정한다. 하지 않으면 요청 거버 오류가 발생할 수 있다.
  • --privileged : 도커 컨테이너에 주요 자원에 접근할 수 있는 권한을 부여한다. 하지 않을 경우 "Unmount error" 오류가 발생할 수 있다.
  • --restart always : 컨테이너가 중되되었을 때 다시 시작하도록 함
  • collabora/code : 실행할 도커 컨테이너 (없는 경우 다운로드하여 실행함)

환경변수 설정

위 설명에서 환경변수 설정 부분은 컨테이너에 전달되는 것들이다.

  • extra_params=.... : Collabora online server 환경 설정과 관련된 값들을 기록한다. 각 값들은 '--o:'로 시작된다.
  • ssl.enable : SSL 프로토콜 이용 여부를 지정한다. true : 이용, false : 이용않음
  • net.proto : 이용 인터넷 프로토콜 종류를 설정한다. (예 : IPv4)
  • ssl.termination : 클라이언트 쪽 SSL 사용 여부를 지정한다. true: 이용, false : 이용않음
  • net.post_allow.host : 접속 허용 대상 IP를 설정한다. (예 : 45.76.210.8) 주의할 점은 IP를 정규식 패턴에서 문제가 없도록 설정해야한다는 것이다.
  • 이 외 -e "allowgroup1=https://test.jhansol.net:443" 부분은 접속 허용 도매인주소를 설정한다.

추가 환경 설정

클라우드 사이트가 HTTPS로 접속하는 경우 Apache 웹서버 환경설정 파일에 추가 설정이 필요하다. 각 사이트 환경설정 파일은 /etc/apache2/sites-available/.conf 일 것이다. 이ㅣ 중 활성화된 사이트는 /etc/apache2/sites-enabled/.conf 로 심블릭 링크가 되어 있을 것이다. 아무튼 활성화된 사이트 환경설정 파일(SSL. 적용된 파일) VirtualHost 태그 하단에 아래 내용을 추가해야 한다.

AllowEncodedSlashes NoDecode
ProxyPreserveHost On

ProxyPass           /browser http://127.0.0.1:9980/browser retry=0
ProxyPassReverse    /browser http://127.0.0.1:9980/browser
ProxyPass           /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse    /hosting/discovery http://127.0.0.1:9980/hosting/discovery
ProxyPass           /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse    /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities
ProxyPassMatch      "/cool/(.*)/ws$"      ws://127.0.0.1:9980/cool/$1/ws nocanon
ProxyPass           /cool/adminws ws://127.0.0.1:9980/cool/adminws
ProxyPass           /cool http://127.0.0.1:9980/cool
ProxyPassReverse    /cool http://127.0.0.1:9980/cool
ProxyPass           /lool http://127.0.0.1:9980/cool
ProxyPassReverse    /lool http://127.0.0.1:9980/cool

NextCloud에 앱 설치

앞서 설명한 내장 서버 부분에서 Collabora Online 앱을 설치하지 않았다면 설치한다. 설치 완료 후 우측 상단의 아이콘을 클릭하여 '설정' 메뉴를 클릭하고 좌측의 'Office' 또는 'Nextcloud Office' 메뉴를 클릭한다. 그러면 아래와 같은 화면이 쳘격될 것이다.

앞의 과정에서 클라우드 사이트가 HTTP 로 접속하는 경우 아래와 같이 포트번호와 함께 주소를 기입하고 'Save' 버튼을 클릭한다.

HTTPS로 연결되는 경우 https로 시작하여 주소를 기입한다. 이때 포터번호는 기입할 필요가 없다. 왜냐하면 위 설정 과정에서 역방향 프록시 기능을 설정하였기 때문에 따로 지정하지 않아도 된다.