Inhaltsverzeichnis

Confluence Wiki

Confluence ist ein kommerzielles (proprietäres) Wiki vom Hersteller Atlassian. Es bietet viele Funktionen auch aus anderen Bereichen, basiert auf Java und braucht damit einen leistungsfähigen Server oder man nimmt die Cloud-Variante.

Der Leistungsumfang übertrifft die meisten anderen Wiki-Lösungen, Rechte sind vielfältig Anpassbar gerade in Zusammenhang mit Verzeichnisdiensten die auch über das hauseigene crowd angebunden oder ersetzt werden können.

Plugins von Drittherstellern sind in breiter Anzahl vorhanden, das Angebot von Template-plugins ist etwas begrenzt.

Atlassian-cloud-strategie

Features

Backup

Backup-skript zur Sicherung (PDF-Export) von Seitenbäumen:

#!/bin/bash
 
PARENT_DIR=$(dirname $(realpath ${0}))
C_URL="https://FQDN.of.my.wiki"
RS_HUB=${C_URL}/display/PROJ/SITE-TREE
C_USER='backup-user'
C_PASS='backup-pass'
 
DOWNLOAD_DIR=${PARENT_DIR}/rescue_sheets
 
function get_link_list() {
	local URL="${1}"
	local LINKTYPE="${2}"
	local SITE_CONTENT=`curl -s --cookie-jar /tmp/wiki-dl.cookie -u $C_USER:$C_PASS $URL`
	while read -r OLINE; do
		echo ${OLINE}
	done < <(echo ${SITE_CONTENT} | grep -o -E 'href="([^"#]+)"' | grep "${LINKTYPE}" | grep -vi includes  | cut -d'"' -f2)
}
 
function get_page_title() {
	local URL="${1}"
	local TITLE=$(curl -s -b /tmp/wiki-dl.cookie $URL | awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}')
	echo ${TITLE}
}
 
[[ ! -d ${DOWNLOAD_DIR} ]] && mkdir ${DOWNLOAD_DIR}
 
RS_LIST=$(get_link_list ${RS_HUB} "/display/PROJ/")
 
while read -r SHEET; do
	SHEET_URL=${C_URL}${SHEET}
	SHEET_EXPORT_LINK=$(get_link_list ${SHEET_URL} pdfpageexport) 
	SHEET_TITLE=$(get_page_title ${SHEET_URL})
	echo "Downloading current version of '${SHEET_TITLE}' ($SHEET_URL)"
	curl -b /tmp/wiki-dl.cookie -s -o "${DOWNLOAD_DIR}/${SHEET_TITLE}.pdf" -L -J ${C_URL}${SHEET_EXPORT_LINK}
 
done < <(echo "${RS_LIST}")

Installation

Beispiel-Setup mit MySQL 5.7 auf Ubuntu 16.04.

  1. MySQL konfigurieren: /etc/mysql/mysql.conf.d/mysqld.cnf
    character-set-server   = utf8
    collation-server       = utf8_bin
    default-storage-engine = INNODB
    max_allowed_packet     = 256M
    innodb_log_file_size   = 2G
    transaction-isolation  = READ-COMMITTED
    # binlog_format          = row
  2. Für den Fall das /var/lib/mysql verlegt wurde (per symlink) muss wg. AppArmor die Regeln angepasst werden /etc/apparmor.d/usr.sbin.mysqld:
    # Allow data dir access
      /var/lib/mysql/ r,
      /var/lib/mysql/** rwk,
      /srv/mysql/ r,
      /srv/mysql/** rwk,
  3. Datenbank anlegen
    mysql -u root -p
    CREATE DATABASE <database-name> CHARACTER SET utf8 COLLATE utf8_bin;
    GRANT ALL PRIVILEGES ON <database-name>.* TO '<confluenceuser>'@'localhost' IDENTIFIED BY '<password>';
  4. Installer laufen lassen
  5. per Browser auf localhost:8080 Einstellungen vornehmen
  6. Dienst noch nicht starten, bei Oracle und MySQl muss vorher der passende jdbc-Treiber vorhanden sein (der ist nicht enthalten) https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.47.zip
  7. unzip mysql-connector-java-5.1.44.zip
    cp mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar /srv/atlassian/confluence/confluence/WEB-INF/lib/
  8. den Service restarten und weiter per Browser

Konfiguration

RAM erhöhen

How to fix out of memory errors by increasing available memory

/srv/atlassian/confluence/bin/setenv.sh

Einstellung Wirkung
-Xms2048m mindestens benutzter heap-Speicher
-Xmx3072m maximal benutzter heap-Speicher
CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:+UseG1GC ${CATALINA_OPTS}"

ändern zu

CATALINA_OPTS="-Xms2048m -Xmx3072m -XX:+UseG1GC ${CATALINA_OPTS}"
service confluence restart

SSL

Vorbereitung: Wir brauchen einen jks-keystore /PATH/TO/file.jks mit Passwort SECRET:

#!/bin/sh
pem_cert=/srv/$domain.key
pem_key=/srv/$domain.crt
pem_chain=/srv/$domain.fullchain
p12_file=/srv/$domain.p12
jks_file="/srv/atlassian/confluence-data/$domain.jks"
keytool_path=/srv/atlassian/confluence/jre/bin/keytool
confluence_user=confluence
password="SECRET"
 
 
umask 077
 
#letsencrypt certonly --rsa-key-size 3072 -d $domain
#if [ $? -ne 0 ]; then
#	echo "Fehler aufgetreten bei letsencrypt"
#	exit 1
#fi
 
echo "Bitte hier 2x Passwort $password eingeben:"
cat $pem_key $pem_cert $pem_chain | openssl pkcs12 -export -out $p12_file
# -> password eingeben
if [ $? -ne 0 ]; then
	echo "Fehler aufgetreten bei p12-Konvertierung"
	exit 1
fi
 
mv $jks_file $jks_file.old
 
yes $password | $keytool_path -importkeystore -srckeystore $p12_file -srcstoretype pkcs12 -destkeystore $jks_file
# -> Password eingeben
if [ $? -ne 0 ]; then
	echo "Fehler aufgetreten bei jks-Erstellung"
	exit 1
fi
chown $confluence_user $jks_file
 
yes $password | $keytool_path -list -v -keystore $jks_file
 
echo "neues jks erstellt: $jks_file"
service confluence stop && service confluence start

SSL/TLS-Konnektor einrichten via /srv/atlassian/confluence/conf/server.xml:

        <Connector port="8443" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
                   URIEncoding="UTF-8" keystorePass="SECRET"
                   keystoreFile="$jks_file="/>

SSL erzwingen: /srv/atlassian/confluence/confluence/WEB-INF/web.xml am Ende der Datei:

[...]
<security-constraint>
  <web-resource-collection>
    <web-resource-name>Restricted URLs</web-resource-name>
    <url-pattern>/</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

</web-app>

Portumleitung auf Standardports

Portumleitung auf Standardports, Iptables-Regeln dauerhaft sichern

Fußzeile ändern

Einfach hinzufügen

How to edit the footer in Confluence Modify Confluence Interface Text

/srv/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.5.0.jar

Kommentare und Page-tools bei anonymen Benutzern verstecken

How to hide Page Tools and Comments section for Anonymous Users in Confluence?