Install Confluence Server on VPS

Confluence (https://www.atlassian.com/ko/software/confluence)는 협업 문서 작성 도구로 잘 알려져 있는 툴이다. 많은 개발 회사들에 사용하는 것으로 알려져 있다. 무료는 아니고, 클라우드 서비스, 설치형 둘다 제공한다.

한번 써보고자 시도해 봤는데 (그냥 새로운 걸 좋아하는 취지에서…) 클라우드 서비스를 사용하려면, 한달에 $10을 내야 한다. 현재 블로그를 운용하는 VPS가 약간은 잉여인지라, 거기에 추가해보면 어떨까 해서 다시 삽질을 시작해봤다.

설치는 대단히 간단하다. 서버에 설치 스크립트 파일을 저장하고, 이를 루트 권한으로 실행하면 끝.

설치 방법은 https://confluence.atlassian.com/doc/installing-confluence-on-linux-143556824.html에 나와 있는대로, 몇번 엔터키만 툭탁하면 설치는 완료.

한글 관련 문제가 있어, 데이터베이스를 생성할 때, utf-8을 기본값으로 설정해야 한다. 이 작업을 하지 않으면, 한글 문서를 적어도 깨져보이는 에러가 발생한다.

mysql 설정, 파일에 다음의 두 라인 추가

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
...
character_set_server=utf8
collation-server=utf8_bin 

데이터베이스 생성

$ mysql -u root -p

mysql> CREATE DATABASE <database-name> CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT ALL PRIVILEGES ON <database-name>.* TO '<confluenceuser>'@'localhost' IDENTIFIED BY '<password>';

기본 접근 경로는 http://<your_domain>:8090 이다. 처음 접속 시 라이센스 및 데이터베이스 관련 설정을 해야 하고, 약간의 시간이 걸리고 나면 완료.

설치형은 $10를 한번만 지불하면 된다. 물론 기술지원 (메이저 업데이트)을 위해선 1년마다 $10을 지불해야 하지만, 납득할 만한 가격인듯.

다음으로 현재 블로그에 사용하는 SSL을 이용해, 보안접속이 가능하도록 설정한다.

내부 프록시를 사용하는 방법을 사용하고, 또 현재 도메인을 이용해 <your-domain>/confluence 와 같이 시용하기 위해 몇가지 설정을 한다. 이를 위해서 nginx 설정 파일, confluence의 server.xml 파일을 수정한다.

/etc/nginx/sites-enabled/default

다음 라인 추가.

         location /confluence {
                client_max_body_size 100m;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:8090;
        }

        location /synchrony {
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:8091/synchrony;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
        }

다음 라인 코멘트 처리

    #location = /favicon.ico { log_not_found off; access_log off; }
    #location = /robots.txt { log_not_found off; access_log off; allow all; }
    #location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
    #    expires max;
    #    log_not_found off;
    #}
/opt/atlassian/confluence/conf/server.xml

아래와 같이 수정

    <Connector port="8090" connectionTimeout="20000" redirectPort="8443"
        maxThreads="48" minSpareThreads="10"
        enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        proxyName="ahnbk.com" proxyPort="443" scheme="https" secure="true" compression="on"/>

...

    <Context path="/confluence" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true">
                    
...

한글 문제 해결을 위해서, mysql 연결관련 설정에서 링크를 다음과 같이 설정.

jdbc:mysql://localhost:3306/confluence?useUnicode=true&characterEncoding=utf8

위와 같이 수정하고, nginx, confluence 재시작

$ sudo service nginx restart
$ sudo service confluence restart

이제 https://ahnbk.com/confluence 로 접속해보면 (도메인 이름은 각자 상황에 맞게)

와 같이 정상적으로 보인다. ^^ 성공!