diff --git a/seqs/matrix.cfg.example b/seqs/matrix.cfg.example new file mode 100644 index 0000000..7dc6c91 --- /dev/null +++ b/seqs/matrix.cfg.example @@ -0,0 +1,4 @@ +#!/bin/bash + +MATRIX_HOME="/opt/synapse" +MATRIX_DOMAIN="matrix.example.com" diff --git a/seqs/matrix.sh b/seqs/matrix.sh index 0666851..66b5645 100755 --- a/seqs/matrix.sh +++ b/seqs/matrix.sh @@ -2,12 +2,12 @@ toolName=synapse toolDeps="build-essential python3-dev libffi-dev python3-pip python3-setuptools postgresql libssl-dev virtualenv libjpeg-dev libxslt1-dev libpq5 libpq-dev" -toolDir="/opt/synapse" -toolConfig="${toolDir}/homeserver.yaml" toolUser="synapse" toolGroup="synapse" -toolDomain="matrix.winklerfamilie.eu" -toolUrl="https://$toolDomain" + +# Filled by configuration +toolConfig= +toolUrl= # Needed for different steps postgresDb="" @@ -18,18 +18,20 @@ postgresPass="" # (when called from a different directory) WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )" CONFIG=0 -#CONFIG_FILE_NAME="${toolName}.cfg" -#CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example" +CONFIG_FILE_NAME="matrix.cfg" +CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example" -#step_config() { - ## e.g. to source a config file manually: - #. "$CONFIG_FILE" - ## or to use sequencer api: - #initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE" - #if [ $? -eq 0 ] ; then - # CONFIG=1 - #fi -#} +step_config() { + initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE" + if [ $? -eq 0 ] ; then + CONFIG=1 + toolConfig="${MATRIX_HOME}/homeserver.yaml" + toolUrl="https://$MATRIX_DOMAIN" + localHome="$MATRIX_HOME" + echo " $toolName home: $MATRIX_HOME" + echo " $toolName domain: $MATRIX_DOMAIN" + fi +} step_1_info() { echo "Installing $toolName dependencies"; } step_1_alias() { ALIAS="install"; } @@ -62,29 +64,29 @@ step_2() { step_3_info() { echo "Create $toolName user and group"; } step_3() { exe addgroup "$toolGroup" - exe adduser --system --home ${toolDir}/ --no-create-home --disabled-password --shell /bin/nologin --ingroup "$toolGroup" "$toolUser" + exe adduser --system --home ${MATRIX_HOME}/ --no-create-home --disabled-password --shell /bin/nologin --ingroup "$toolGroup" "$toolUser" } step_4_info() { echo "Install $toolName"; } step_4() { - exe mkdir -p "$toolDir" - exe virtualenv -p python3 "${toolDir}/env" - exe cd "$toolDir" - exe source "${toolDir}/env/bin/activate" + exe mkdir -p "$MATRIX_HOME" + exe virtualenv -p python3 "${MATRIX_HOME}/env" + exe cd "$MATRIX_HOME" + exe source "${MATRIX_HOME}/env/bin/activate" exe pip install --upgrade pip exe pip install --upgrade setuptools exe pip install matrix-synapse[postgres] # Create default configuration - exe python3 -m synapse.app.homeserver --server-name "$toolDomain" --config-path homeserver.yaml --generate-config --report-stats=no + exe python3 -m synapse.app.homeserver --server-name "$MATRIX_DOMAIN" --config-path homeserver.yaml --generate-config --report-stats=no exe deactivate # Create media directories - exe mkdir -p ${toolDir}/media_store ${toolDir}/uploads - exe chmod 770 "${toolDir}/media_store" "${toolDir}/uploads" + exe mkdir -p ${MATRIX_HOME}/media_store ${MATRIX_HOME}/uploads + exe chmod 770 "${MATRIX_HOME}/media_store" "${MATRIX_HOME}/uploads" # Allow matrix to write its logs in /opt/synapse - exe chmod 755 "${toolDir}" - exe chown ${toolUser}:${toolGroup} "${toolDir}" "${toolDir}/media_store" "${toolDir}/uploads" + exe chmod 755 "${MATRIX_HOME}" + exe chown ${toolUser}:${toolGroup} "${MATRIX_HOME}" "${MATRIX_HOME}/media_store" "${MATRIX_HOME}/uploads" } step_5_info() { echo "Configure $toolName"; } @@ -94,10 +96,12 @@ step_5() { step_6_info() { echo "Create $toolName systemd service"; } step_6() { - addConf -c "$toolService" "$toolServiceLoc" + # eval needed to expand sourced configuration variables + local localService=`eval "echo \"$toolService\""` + addConf -c "$localService" "$toolServiceLoc" exe systemctl daemon-reload exe systemctl enable matrix-synapse.service - exe service matrix-synapse.service start + exe service matrix-synapse start } toolServiceLoc="/etc/systemd/system/matrix-synapse.service" toolService="[Unit] @@ -106,12 +110,12 @@ After=network.target postgresql.service [Service] Type=forking -WorkingDirectory=${toolDir}/ -ExecStart=${toolDir}/env/bin/synctl start -ExecStop=${toolDir}/env/bin/synctl stop -ExecReload=${toolDir}/env/bin/synctl restart -User=${toolUser} -Group=${toolGroup} +WorkingDirectory=\${MATRIX_HOME}/ +ExecStart=\${MATRIX_HOME}/env/bin/synctl start +ExecStop=\${MATRIX_HOME}/env/bin/synctl stop +ExecReload=\${MATRIX_HOME}/env/bin/synctl restart +User=\${toolUser} +Group=\${toolGroup} Restart=always StandardOutput=syslog StandardError=syslog @@ -120,11 +124,11 @@ SyslogIdentifier=synapse [Install] WantedBy=multi-user.target" -step_10_info() { echo "Upgrade $toolName installation at $toolDir"; } +step_10_info() { echo "Upgrade $toolName installation at $MATRIX_HOME"; } step_10_alias() { ALIAS="upgrade"; } step_10() { echo " [I] Upgrading $toolName" - exe source "${toolDir}/env/bin/activate" + exe source "${MATRIX_HOME}/env/bin/activate" exe pip install --upgrade pip exe pip install --upgrade matrix-synapse saveReturn $? @@ -158,7 +162,7 @@ step_14() { step_16_info() { echo "Create new user"; } step_16_alias() { ALIAS="newuser"; } step_16() { - exe /opt/synapse/env/bin/register_new_matrix_user -c "$toolDir/homeserver.yaml" $toolUrl + exe /opt/synapse/env/bin/register_new_matrix_user -c "$MATRIX_HOME/homeserver.yaml" $toolUrl } step_18_info() { echo "Drop postgres database for $toolName"; }