[СТАТЬЯ] Установка Confluence Server 6.14.0 на Docker | 2019

Linux

Установка Confluence Server 6.14.0 на Docker

ustanovka-confluence-server-6-14-0-na-docker

ustanovka-confluence-server-6-14-0-na-docker

Проблема

Установка и активация Confluence Server 6.14.0 на докер контейнер.
Статья рассчитана на пользователей, которые базово ориентируются в Docker и Docker-Compose

Решение

Берем за пример следующие статьи:
https://ealebed.github.io/posts/2017/установка-и-активация-atlassian-confluence-6.3.4/
https://github.com/ealebed/docker_atlassian_stack
также под коврик: http://gallery.ru-board.com/topic.cgi?forum=35&topic=29693&start=420
Для загрузки docker-образа Confluence, буду использовать готовый Dockerfile разработчика https://github.com/cptactionhank/, но для успешной активации его нужно изменить:



FROM openjdk:8-alpine # Setup useful environment variables 
ENV CONF_HOME     /var/atlassian/confluence
ENV CONF_INSTALL  /opt/atlassian/confluence
ENV CONF_VERSION  6.14.0
 
ENV JAVA_CACERTS  $JAVA_HOME/jre/lib/security/cacerts
ENV CERTIFICATE   $CONF_HOME/certificate
 
# Install Atlassian Confluence and helper tools and setup initial home
# directory structure.
RUN set -x \
    && apk --no-cache add curl xmlstarlet bash ttf-dejavu libc6-compat gcompat mc nano\
    && mkdir -p                "${CONF_HOME}" \
    && chmod -R 700            "${CONF_HOME}" \
    && chown daemon:daemon     "${CONF_HOME}" \
    && mkdir -p                "${CONF_INSTALL}/conf" \
    && curl -Ls                "https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONF_VERSION}.tar.gz" | tar -xz --directory "${CONF_INSTALL}" --strip-components=1 --no-same-owner \
    && curl -Ls                "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.44.tar.gz" | tar -xz --directory "${CONF_INSTALL}/confluence/WEB-INF/lib" --strip-components=1 --no-same-owner "mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar" \
    && chmod -R 700            "${CONF_INSTALL}/conf" \
    && chmod -R 700            "${CONF_INSTALL}/temp" \
    && chmod -R 700            "${CONF_INSTALL}/logs" \
    && chmod -R 700            "${CONF_INSTALL}/work" \
    && chown -R daemon:daemon  "${CONF_INSTALL}/conf" \
    && chown -R daemon:daemon  "${CONF_INSTALL}/temp" \
    && chown -R daemon:daemon  "${CONF_INSTALL}/logs" \
    && chown -R daemon:daemon  "${CONF_INSTALL}/work" \
    && echo -e                 "\nconfluence.home=$CONF_HOME" >> "${CONF_INSTALL}/confluence/WEB-INF/classes/confluence-init.properties" \
    && xmlstarlet              ed --inplace \
        --delete               "Server/@debug" \
        --delete               "Server/Service/Connector/@debug" \
        --delete               "Server/Service/Connector/@useURIValidationHack" \
        --delete               "Server/Service/Connector/@minProcessors" \
       --delete               "Server/Service/Connector/@maxProcessors" \
        --delete               "Server/Service/Engine/@debug" \
        --delete               "Server/Service/Engine/Host/@debug" \
        --delete               "Server/Service/Engine/Host/Context/@debug" \
                               "${CONF_INSTALL}/conf/server.xml" \
    && touch -d "@0"           "${CONF_INSTALL}/conf/server.xml" \
    && chown daemon:daemon     "${JAVA_CACERTS}"
 
# Use the default unprivileged account. This could be considered bad practice
# on systems where multiple processes end up being executed by 'daemon' but
# here we only ever run one process anyway.
USER daemon:daemon
 
# Expose default HTTP connector port.
EXPOSE 8090 8091
 
# Set volume mount points for installation and home directory. Changes to the
# home directory needs to be persisted as well as parts of the installation
# directory due to eg. logs.
VOLUME ["/var/atlassian/confluence", "/opt/atlassian/confluence/logs"]
 
####Вносим изменения: добавляем следующие строчки. НО ОБЯЗАТЕЛЬНО перед первым запуском эти строки нужно закоментировать!!!! 
COPY atlassian-universal-plugin-manager-plugin-3.0.jar /opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/atlassian-universal-plugin-manager-plugin-3.0.jar
COPY atlassian-extras-api-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-api-3.4.1.jar
COPY atlassian-extras-common-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-common-3.4.1.jar
COPY atlassian-extras-core-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-core-3.4.1.jar
COPY atlassian-extras-decoder-api-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-api-3.4.1.jar
COPY atlassian-extras-decoder-v2-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar
COPY atlassian-extras-legacy-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-legacy-3.4.1.jar
####### конец изменений
 
# Set the default working directory as the Confluence home directory.
WORKDIR /var/atlassian/confluence
 
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
 
# Run Atlassian Confluence as a foreground process by default.
CMD ["/opt/atlassian/confluence/bin/start-confluence.sh", "-fg"]

Именно эти файлы мы будем активировать:



/opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/atlassian-universal-plugin-manager-plugin-3.0.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-api-3.4.1.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-common-3.4.1.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-core-3.4.1.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-api-3.4.1.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar
/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-legacy-3.4.1.jar

Рядом с файлом Dockerfile сохраняем файл docker-entrypoint.sh, делаем его исполняемым: sudo chmod +x docker-entrypoint.sh

#!/bin/bash
 
# check if the `server.xml` file has been changed since the creation of this
# Docker image. If the file has been changed the entrypoint script will not
# perform modifications to the configuration file.
if [ "$(stat -c "%Y" "${CONF_INSTALL}/conf/server.xml")" -eq "0" ]; then
  if [ -n "${X_PROXY_NAME}" ]; then
    xmlstarlet ed --inplace --pf --ps --insert '//Connector[@port="8090"]' --type "attr" --name "proxyName" --value "${X_PROXY_NAME}" "${CONF_INSTALL}/conf/server.xml"
  fi
  if [ -n "${X_PROXY_PORT}" ]; then
    xmlstarlet ed --inplace --pf --ps --insert '//Connector[@port="8090"]' --type "attr" --name "proxyPort" --value "${X_PROXY_PORT}" "${CONF_INSTALL}/conf/server.xml"
  fi
  if [ -n "${X_PROXY_SCHEME}" ]; then
    xmlstarlet ed --inplace --pf --ps --insert '//Connector[@port="8090"]' --type "attr" --name "scheme" --value "${X_PROXY_SCHEME}" "${CONF_INSTALL}/conf/server.xml"
  fi
  if [ -n "${X_PROXY_SECURE}" ]; then
    xmlstarlet ed --inplace --pf --ps --insert '//Connector[@port="8090"]' --type "attr" --name "secure" --value "${X_PROXY_SECURE}" "${CONF_INSTALL}/conf/server.xml"
  fi
  if [ -n "${X_PATH}" ]; then
    xmlstarlet ed --inplace --pf --ps --update '//Context[@docBase="../confluence"]/@path' --value "${X_PATH}" "${CONF_INSTALL}/conf/server.xml"
  fi
fi
 
if [ -f "${CERTIFICATE}" ]; then
  keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import -file ${CERTIFICATE} -alias CompanyCA
fi
 
exec "$@"

Для начала комментирем строки COPY, запускаем конейнер, ждем запуска.
Заходим на WEB-интерфейс сервиса Confluence, и убеждаемся в работоспособности сервера:

http://HOST:8090

Если Вы используете проксирующий сервер, например NGINX, нужно указать переменные запуска контейнера:

X_PROXY_NAME=domain.com.ua
X_PROXY_PORT=443
X_PROXY_SCHEME=https

И запустить контейнер с указанием этих переменных.
Если Вы успешно зашли на Web-интерфейс, переходим на пункт "Production Installation", и копируем Server-ID.
Теперь нужно вытащить файлы с контейнера на хостовую машину:

  1. выполним docker ps, для просмотра под каким CONTAINER ID был запущен контейнер Confluence, у меня он d88d6c28731a
  2. запускаем копирование командами:
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/atlassian-universal-plugin-manager-plugin-3.0.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-api-3.4.1.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-common-3.4.1.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-core-3.4.1.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-api-3.4.1.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar ./
docker cp d88d6c28731a:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-legacy-3.4.1.jar ./
  1. В каталоге, где мы находимся, создались 7 файлов, их нужно скопировать на свой компьютер для активации.
  2. Качаем Atlassian_Keygen_V2.1.6-exp (пароль к архиву 1111)
  3. Запускаем Atlassian_tablet_V2_1_6-exp.jar:
    1. В поле Template выбираем "Confluence"
    2. Поля User Name, Organization, Email — заполняем на свой вкус
    3. Server ID — устанавливаем ранее скопированный при установке.
    4. Остальное не трогаем. 
    5. Жмем кнопку GENERATE, и сохраняем ключ.
    6. Жмем кнопку Patch, и выбираем каталог, куда мы скачали файлы atlassian-extras-*.jar и atlassian-universal-plugin-manager-plugin-3.0.jar
    7. Ждем, пока файлы пропатчаться.
    8. Перезаписываем файлы на сервере.

Таким образом, у нас есть Server ID, Key, пропатченные файлы активации.
Убираем знак комментария напротив команды копирования файлов в Dockerfile, останавливаем и запускаем конейнер.
Заходим в Web-интерфейс -> перезагружаем страницу -> переходим на пункт "Production Installation", Server ID должен совпадать, указываем Key, если пропустило на следующий шаг — радуемся)
Я также заметил, что даже если Server ID не совпадает, но у Вас есть ключ, и пропатченые файлы — Confluence активируется.

Похожие статьи:

Мониторинг времени простоя компьютера
Чтобы реализовать мониторинг времени простоя компьютера, нужно учитывать тот факт, что пользователь обычно работает с мышкой, поэтому будем анализировать ее активность. Если мышь была не активной в течение N минут, сделаем вывод, что пользователь в настоящее время не работает с ПК. Всю статистику будем отправлять ...
Установка Bitwarden Server для организации
Проблема Нужно установить Bitwarden Server для работой с организацией. Также не забываем о Docker. Решение Для запуска и установки в личных целях, достаточно воспользоваться официальной инструкцией по ссылке https://help.bitwarden.com/article/install-on-premise/. Не забываем установить Docker и Docker-compose: curl -sSL https://get.docker.com/ | sh sudo usermod -aG docker ${USER} sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o ...
Установка и настройка сервиса сокращений ссылок Polr
Polr - это красивый, современный, легкий и минималистический сервис для сокращения URL ссылок с открытым исходным кодом. Он позволяет создавать собственные сокращенные URL ссылки, маркировать URL и получать контроль над вашими данными. Вести статистику переходов. Polr особенно прост в использовании и предоставляет современный, удобный интерфейс. ...
Защита админ-панели RainLoop при помощи NGINX
Админ-панель почтового Web-клиента доступен по адресу: https://domain?admin Чтобы ограничить доступ к данной станицы определенным IP, нужно внести изменения в файлы конфигураций: nano /etc/nginx/conf.d/default.conf server { listen 80; server_name _; server_tokens off; location /.well-known/acme-challenge/ { ...
Пересылка СМС с OpenVox в Telegram
Как пример опишу реализацию задачи "Очередь на кассе". Если очередь на кассе - отправь сообщение на номер 050XXXXXXX с текстом "2302". Когда приходит сообщение переправлять в Telegram канал. Сим-карта с номером 050XXXXXXX подключена в Openvox, который в свою очередь настроен на получение СМС. Решение Для пересылки полученных сообщений ...
«Умная» пересылка входящих СМС сообщений в OpenVox
Берем за пример статью Пересылка СМС с OpenVox в Telegram, здесь мы получаем сообщения с Opnevox, отсекаем только те сообщения, которые приходят на определённый порт, и отправляем сообщение в Telegram. В этой статье опишу как "умно" сортировать входящие СМС сообщения, и направлять их на определённые сервисы ...
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (2 оценок, среднее: 5,00 из 5)
Загрузка...
  1. Шамиль Комодов

    Храни Вас Бог

Оставить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.