Установка и настройка Confluence на собственный сервер

Одна голова хорошо, а две лучше.

— Народная мудрость

Чем крупнее становится компания, тем больше появляется различной документации во всех её сферах. Документирование начинается от инструкций для сотрудников и заканчивая описаниями решений проблем и т.п. При малом количестве людей можно даже ничего не вести, ведь куда проще рассказать основное на словах и показать “на пальцах”. А если сотрудников много или большая “текучка” кадров на какой-нибудь должности? Можно использовать обычные офисные программы для создания документов. А если компания настолько разрослась, что таких документов становится очень много? Или у компании столько различных проектов, что можно заблудится во всех этих документах? Что если требуется вести протоколы встреч, выкладывать идеи для общего обсуждения, строить планы по проектам, устраивать опросы? Что если требуется хранить историю изменений и иметь раздельные права доступа? А еще требуется возможность выгрузки из системы в виде документов, например, в PDF формате? Здесь нужен уже какой-нибудь единый портал, единая база знаний, что-то в формате wiki. Для решения таких задач подойдет проект Confluence от Австралийской компании Atlassian.

Проверяем требования

Перед установкой проверим минимальные требования:

  • наличие root доступа; операционные системы(ОС) Linux и Windows;
  • СУБД PostgreSQL версии 9.6, MySQL версии 5.6.16 и 5.7, причем не поддерживается MariaDB, Oracle 12c, Microsoft SQL Server 2012 и выше;
  • для запуска системы хватит 2ГБ оперативной памяти, но минимальные требования - 6ГБ;
  • место на жестком диске минимально 10ГБ;
  • процессор четырехъядерный 2GHz;
  • поддерживаются все браузеры, кроме Internet Explorer 11 и младше.

Более подробно о требованиях можно узнать на официальной странице документации проекта. Что касаемо требований к железной части - тут сильно зависит от количества одновременно работающих людей с системой, от редактирования документов, да и много еще от чего, поэтому приблизительные расчеты для железной части сервера можно посмотреть здесь.

Мы будем использовать в качестве ОС CentOS 7, поскольку он хорошо себя зарекомендовал для серверных решений. А в качестве СУБД - PostgreSQL 9.6. Способов установки Confluence несколько, мы будем использовать установщик. С другими способами Вы можете ознакомиться самостоятельно на официальной странице.

Предварительная настройка

Для начала установим несколько удобных пакетов:

# yum install epel-release mc net-tools

Cоздадим пользователя supp:

# adduser supp

И зададим ему пароль:

# passwd supp

Затем ограничим доступ к серверу только для нашего пользователя по ssh. Для этого отредактируем файл /etc/ssh/sshd_config

Раскоментируем строчку

PermitRootLogin no

И добавим

AllowUsers supp

Теперь перезапустим демона SSH:

# systemctl restart sshd

Можно авторизоваться под нашим новым пользователем и продолжим установку.

Установка PostgreSQL

Мы уже определились, что будем использовать PostgreSQL 9.6. К сожалению, в стандартных репозиториях CentOS 7 есть только версия 9.2.24

$ sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum install postgresql96 postgresql96-server
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
$ sudo systemctl enable postgresql-9.6
$ sudo systemctl start postgresql-9.6

Затем редактируем файл /var/lib/pgsql/9.6/data/pg_hba.conf и в начале раздела “IPv4 local connections”добавим строчку:

host    confluence      confluenceuser  127.0.0.1/32            md5

Создадим пользователя confluenceuser и базу данных confluence:

$ sudo su
# su postgres
$ psql
postgres=# CREATE ROLE confluenceuser WITH LOGIN PASSWORD 'your_password' VALID UNTIL 'infinity';
CREATE ROLE 
postgres=# CREATE DATABASE confluence WITH ENCODING='UTF8' OWNER=confluenceuser 
CONNECTION LIMIT=-1;
CREATE DATABASE
postgres-# \q

Естественно вместо нужно использовать свой придуманный пароль, чем длиннее и больше разных символов - тем лучше. Перезагрузим PostgreSQL для применения настроек в файле pg_hba.conf:

$ systemctl restart postgresql-9.6 

Настройка firewall

В CentOS 7 по-умолчанию используется firewalld, советую не отказываться от него, а посидеть и разобраться. Confluence использует порт 8090 для доступа к системе. Поэтому разрешим его:

$ sudo firewall-cmd --permanent --add-port=8090/tcp
$ sudo firewall-cmd --reload

Если Вы всё же используете по-старинке iptables:

$ sudo yum -y install iptables-services
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A INPUT -s 0.0.0.0/0 -p TCP --dport 8090 -j ACCEPT
$ sudo iptables -A INPUT -s 0.0.0.0/0 -p TCP --dport 22 -j ACCEPT
$ sudo iptables -P INPUT DROP
$ sudo iptables -P FORWARD DROP

или если у вас последнее правило - все запрещает, то вводим такую команду, где num_line - номер строки, куда будет вставлено правило:

$ sudo iptables -I INPUT num_line -s 0.0.0.0/0 -p TCP --dport 8090 -j ACCEPT
$ sudo iptables-save > /etc/sysconfig/iptables

Проверяем правила:

$ sudo iptables -L -n -v

Установка Confluence

Для начала скачаем с официального сайта установщик. На текущий момент версия Confluence 7.0.1. Перед установкой не забываем разрешить исполнение файла:

$ chmod a+x atlassian-confluence-7.0.1-x64.bin

Во время установки выводится много информации, здесь мы приведем основные пункты:

$ sudo ./atlassian-confluence-7.0.1-x64.bin
Installing fontconfig...
Installed:
  fontconfig.x86_64 0:2.13.0-4.3.el7
Complete!
Unpacking JRE ...
Starting Installer ...
 
This will install Confluence 7.0.1 on your computer.
OK [o, Enter], Cancel [c]
o
Click Next to continue, or Cancel to exit Setup.
 
Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (uses default settings) [1],
Custom Install (recommended for advanced users) [2, Enter],
Upgrade an existing Confluence installation [3]
2
 
Select the folder where you would like Confluence 7.0.1 to be installed,
then click Next.
Where should Confluence 7.0.1 be installed?
[/opt/atlassian/confluence]
/home/atlassian/confluence
 
Default location for Confluence data
[/var/atlassian/application-data/confluence]
/home/atlassian/application-data/confluence
 
Confluence can be run in the background.
You may choose to run Confluence as a service, which means it will start
automatically whenever the computer restarts.
Install Confluence as Service?
Yes [y, Enter], No [n]
y
Please wait a few moments while Confluence starts up.
Launching Confluence ...
 
Installation of Confluence 7.0.1 is complete
Your installation of Confluence 7.0.1 is now ready and can be accessed via
your browser.
Confluence 7.0.1 can be accessed at http://localhost:8090
Finishing installation …

Как видно, мы использовали расширенный вариант установки и переназначили место установки Confluence. Если вы везде нажимали Enter, то папка по умолчанию для самого Confluence /opt/atlassian/confluence. Папка по-умолчанию для хранения данных и плагинов /var/atlassian/application-data/confluence.

Как видно в конце - нам можно зайти по адресу http://localhost:8090 для продолжения установки, вместо localhost можно использовать, например, внешний ip адрес нашего сервера.

Выбираем русский язык. Как видим, тут нам предлагают установить демонстрационную версию или рабочую. Выбираем второй вариант(Production Installation).

На этом этапе предлагается установить дополнительные сервисы, мы ничего не покупали отдельно, продолжаем установку.

Вот на этом этапе уже надо получить лицензионный ключ. Для начала получим trial на 30 дней бесплатно. А потом можно будет купить. Для этого на официальном сайте жмем “Create an account” для создания аккаунта на atlassian. После регистрации мы попадаем в окно для получения лицензии:

Идентификатор сервера необходимо скопировать в поле “server ID”, после получения лицензионного ключа вводим его в форму и продолжаем установку.

Здесь всё и так понятно, выбираем “Моя база данных”.

Соответственно Вам нужно вводить свои данные для подключения к базе данных PostgreSQL.

Здесь уже на Ваше усмотрение, но для первого раза рекомендую установить пример сайта. Вы всегда сможете удалить это тестовое пространство.

Создание первой учетной записи. Имя пользователя, да и всё остальное можно изменить в дальнейшем.

На этом можно было бы и закончить данную статью, но нам еще есть что Вам рассказать.

Безопасность

На официальном сайте есть много доработок по безопасности для Confluence. Мы рассмотрим один из ключевых.

По-умолчанию Confluence работает по HTTP, а значит все ваши данные будут передаваться в незашифрованном виде. Если Ваш сервер находится только в локальной сети и не имеет доступа в Интернет, то еще можно оставить, но в остальных случаях строго рекомендуем использовать HTTPS.

Нам предлагают различные варианты использования HTTPS, мы рассмотрим вариант с использованием NGINX по HTTPS и между NGINX и Confluence - HTTP. Этот вариант приемлем для нас, поскольку NGINX находится на этом же сервере. Еще мы не будем использовать контекстный путь(example.com/confluence). Центром сертификации у нас будет Let’s Encrypt. Ставить будем с помощью Certbot.

Для начала установим NGINX. По-умолчанию в CentOS 7 используется старая версия NGINX, поэтому подключим репозитории и установим последнюю версию. Заходим на официальный сайт и следуем инструкции:

Установим пакеты, необходимые для подключения yum-репозитория, а также создадим файл с именем /etc/yum.repos.d/nginx.repo:

$ sudo yum install yum-utils
$ sudo vi /etc/yum.repos.d/nginx.repo

Добавим в файл /etc/yum.repos.d/nginx.repo следующее содержимое:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
 
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
$sudo yum install -y nginx
$sudo systemctl enable nginx
$sudo systemctl start nginx

Теперь отредактируем файл конфигурации NGINX:

$ sudo vi /etc/nginx/conf.d/default.conf
server {
    server_name your_domain;
 
    listen 443 default ssl;
    ssl_certificate     /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
 
    ssl_session_timeout  5m;
 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-
ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-
SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-
SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-
ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-
CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-
GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS; ssl_prefer_server_ciphers on; location / { 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"; } } server { listen 80; server_name your_domain; return 301 https://$server_name$request_uri; }

Вам надо только заменить your_domain на своё доменное имя.

Теперь необходимо сделать настройки со стороны Confluence. Сначала сделать правки в Tomcat. Находим файл installation-directory/conf/server.xml. Мы устанавливали свой сервер в директорию /home/atlassian/confluence, если во время установки Вы ничего не вводили, то у Вас он будет в директории /opt/atlassian/confluence. Там уже ищем файл ./conf/server.xml. Для начала закомментируем коннектор по-умолчанию:

===========================================================
DEFAULT - Direct connector with no proxy, for unproxied HTTP access to Confluence.
 
If using a http/https proxy, comment out this connector.
===========================================================
< 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"/ >

Для комментирования необходимо в начале текста добавить < !-- и в конце текста добавить --> (без пробелов). Затем раскомментируем коннектор для нашего типа подключения и внесем правки:

HTTP - Proxying Confluence via Apache or Nginx over HTTP
 
If you're proxying traffic to Confluence over HTTP, uncomment the connector below and comment out the others.
Make sure you provide the right information for proxyName and proxyPort.
 
For more information see:
Apache - https://confluence.atlassian.com/x/4xQLM
nginx  - https://confluence.atlassian.com/x/TgSvEg
===============================================================
-->
 
 < 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"
     scheme="https" proxyName="your_domain" proxyPort="443"/>

Теперь перезапускаем Confluence:

$ sudo /etc/init.d/confluence restart

Или таким способом:

$ sudo /etc/init.d/confluence stop
$ sudo /etc/init.d/confluence start

Далее займемся firewall’ом, мы же помним, что мы разрешили доступ по порту 8090?

$ sudo firewall-cmd --permanent --remove-port=8090/tcp
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

Теперь установим Certbot. Переходим по ссылке для самостоятельного выбора или воспользуемся инструкцией ниже. В консоли набираем следующие команды:

$ sudo yum -y install yum-utils
$ sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
$ sudo yum install certbot python2-certbot-nginx
$ sudo certbot certonly --nginx -d your_domain

Сертификаты от Let’s Encrypt даются на 3 месяца, дальше надо снова их продлевать. Для автоматического продления сертификата добавим в cron выполнив следующую команду:

$ sudo echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

Перезапустим nginx:

$ sudo systemctl restart nginx

Осталось дело за малым - подправить параметр “Server Base URL” или в русском варианте - базовый адрес сервера. Заходим на наш сайт уже по доменному имени. Заходим в Администрирование (справа вверху шестерёнка) -> Основные настройки -> Настройки сайта -> Базовый адрес сервера.

На этом установка закончена.

Заключение

Вроде было не сложно, правда? Стоимость лицензии для серверной версии для команды до 10 человек всего 10$, к тому же они дают скидки для бюджетных организаций. В wiki написано, что для некоммерческих организаций могут предоставить и полностью бесплатно. С учётом огромных функциональных возможностей - считай бесплатно.

В начале кажется, что Confluence очень сложный, но спустя время - ты понимаешь, что это очень удобно и начинаешь записывать в нём всё, с чем приходится работать. Огромное количество возможностей и готовых шаблонов. Система действительно облегчает работу, что проверено многими компаниями, в том числе и нашей. Единственная большая проблема - это начать писать. Но мы Вам в этом поможем. Достаточно начать с маленького шага. Для начала создадим пространство “Пространства -> Создать пространство”.

А теперь создайте пустую страницу и напишите свой опыт установки Confluence. Создайте еще одну страницу с шаблоном “Решение проблем” и занесите туда все проблемы, с которыми Вы столкнулись во время установки. Это маленький шаг, но это первый шаг большого пути.

Надежные VDS сервера для установки Confluence