matrix installation

This commit is contained in:
Bob Mottram 2016-11-07 20:58:26 +00:00
parent 0ee06e5581
commit 5491dbbe9a
3 changed files with 172 additions and 0 deletions

View File

@ -347,6 +347,11 @@ function irc_set_global_password {
# Update the password in the readme # Update the password in the readme
sed -i "s|IRC login password.*|IRC login password: $NEW_IRC_PASSWORD|g" /home/$MY_USERNAME/README sed -i "s|IRC login password.*|IRC login password: $NEW_IRC_PASSWORD|g" /home/$MY_USERNAME/README
if [ -f $INSTALL_DIR/matrix_irc_bridge/config.yaml ]; then
sed -i "s|password: .*|password: \"$NEW_IRC_PASSWORD\"|g" $INSTALL_DIR/matrix_irc_bridge/config.yaml
systemctl restart matrix_irc_bridge
fi
write_config_param "IRC_PASSWORD" "$NEW_IRC_PASSWORD" write_config_param "IRC_PASSWORD" "$NEW_IRC_PASSWORD"
# restart the daemon for the new password to take effect # restart the daemon for the new password to take effect

View File

@ -10,6 +10,8 @@
# #
# synapse matrix server # synapse matrix server
# #
# https://matrix.org/blog/2016/02/10/advanced-synapse-setup-with-lets-encrypt/
#
# License # License
# ======= # =======
# #
@ -36,12 +38,141 @@ SHOW_ON_ABOUT=1
SYNAPSE_PORT=8448 SYNAPSE_PORT=8448
SYNAPSE_PASSWORD= SYNAPSE_PASSWORD=
SYNAPSE_DIR=/etc/matrix-synapse SYNAPSE_DIR=/etc/matrix-synapse
MATRIX_IRC_REPO="https://github.com/matrix-org/matrix-appservice-irc"
synapse_variables=(ONION_ONLY synapse_variables=(ONION_ONLY
MY_USERNAME MY_USERNAME
SYNAPSE_PASSWORD SYNAPSE_PASSWORD
DEFAULT_DOMAIN_NAME) DEFAULT_DOMAIN_NAME)
function install_matrix_irc_bridge {
if [ ! -d /etc/matrix-synapse ]; then
return
fi
if [ ! -d /etc/ngircd ]; then
return
fi
function_check install_nodejs
install_nodejs synapse
if [ ! -d $INSTALL_DIR ]; then
mkdir -p $INSTALL_DIR
fi
cd $INSTALL_DIR
git_clone $MATRIX_IRC_REPO $INSTALL_DIR/matrix_irc_bridge
cd $INSTALL_DIR/matrix_irc_bridge
npm install
if [ ! -f config.sample.yaml ]; then
exit 623835
fi
IRC_PASSWORD=$(cat /etc/ngircd/ngircd.conf | grep "Password =" | head -n 1 | awk -F '=' '{print $2}')
echo 'homeserver:' > $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' url: "http://localhost:8008"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' domain: "localhost"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo 'ircService:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' servers:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo " localhost:" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo " name: \"${PROJECT_NAME} IRC\"" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo " port: ${IRC_PORT}" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' ssl: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' sslselfsign: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' password: "${IRC_PASSWORD}"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' sendConnectionMessages: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' quitDebounce:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' quitsPerSecond: 5' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' delayMs: 3600000 # 1h' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' botConfig:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' nick: "MatrixBot"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' joinChannelsIfNoUsers: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' privateMessages:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' federate: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' dynamicChannels:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' createAlias: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' published: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' joinRule: public' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' federate: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' aliasTemplate: "#irc_$CHANNEL"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' membershipLists:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' floodDelayMs: 10000' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' global:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' ircToMatrix:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' matrixToIrc:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' rooms:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' - room: "!fuasirouddJoxtwfge:localhost"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' matrixToIrc:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' channels:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo " - channel: \"#${PROJECT_NAME}\"" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' ircToMatrix:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' mappings:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' "#thepub": ["!kieouiJuedJoxtVdaG:localhost"]' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' matrixClients:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' userTemplate: "@irc_$NICK"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' displayName: "$NICK (IRC)"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' ircClients:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' nickTemplate: "$DISPLAY[m]"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' allowNickChanges: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' maxClients: 30' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' idleTimeout: 10800' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' reconnectIntervalMs: 5000' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' lineLimit: 3' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' ident:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' port: 1113' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' logging:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' level: "debug"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' logfile: "debug.log"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' errfile: "errors.log"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' toConsole: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' maxFileSizeBytes: 134217728 # 128 MB' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' maxFiles: 5' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' databaseUri: "nedb://data"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' debugApi:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' port: 11100' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' provisioning:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
echo ' requestTimeoutSeconds: 300' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
/usr/bin/node $INSTALL_DIR/matrix_irc_bridge/app.js -r -f /etc/matrix-synapse/my_registration_file.yaml -u "http://${DEFAULT_DOMAIN_NAME}:9999" -c $INSTALL_DIR/matrix_irc_bridge/config.yaml -l my_bot
if ! grep "my_registration_file.yaml" homeserver.yaml; then
echo 'app_service_config_files: ["my_registration_file.yaml"]' >> homeserver.yaml
fi
echo '[Unit]' > /etc/systemd/system/matrix_irc_bridge.service
echo 'Description=Matrix IRC Bridge' >> /etc/systemd/system/matrix_irc_bridge.service
echo '' >> /etc/systemd/system/matrix_irc_bridge.service
echo '[Service]' >> /etc/systemd/system/matrix_irc_bridge.service
echo 'Type=simple' >> /etc/systemd/system/matrix_irc_bridge.service
echo 'User=matrix-synapse' >> /etc/systemd/system/matrix_irc_bridge.service
echo "WorkingDirectory=$INSTALL_DIR/matrix_irc_bridge" >> /etc/systemd/system/matrix_irc_bridge.service
echo "ExecStart=/usr/bin/node $INSTALL_DIR/matrix_irc_bridge/app.js -c $INSTALL_DIR/matrix_irc_bridge/config.yaml -f /etc/matrix-synapse/my_registration_file.yaml -p 9999" >> /etc/systemd/system/matrix_irc_bridge.service
echo 'Restart=always' >> /etc/systemd/system/matrix_irc_bridge.service
echo 'RestartSec=3' >> /etc/systemd/system/matrix_irc_bridge.service
echo '' >> /etc/systemd/system/matrix_irc_bridge.service
echo '[Install]' >> /etc/systemd/system/matrix_irc_bridge.service
echo 'WantedBy=multi-user.target' >> /etc/systemd/system/matrix_irc_bridge.service
systemctl enable matrix_irc_bridge
systemctl start matrix_irc_bridge
}
function can_install_synapse { function can_install_synapse {
check_architecture=$(uname -a) check_architecture=$(uname -a)
if [[ "$check_architecture" == *"amd64"* || "$check_architecture" == *"i386"* ]]; then if [[ "$check_architecture" == *"amd64"* || "$check_architecture" == *"i386"* ]]; then
@ -178,6 +309,14 @@ function remove_synapse {
rm /etc/apt/sources.list.d/synapse.list rm /etc/apt/sources.list.d/synapse.list
apt-get update apt-get update
if [ -f /etc/systemd/system/matrix_irc_bridge.service ]; then
systemctl stop matrix_irc_bridge
systemctl disable matrix_irc_bridge
rm /etc/systemd/system/matrix_irc_bridge.service
remove_nodejs synapse
rm -rf $INSTALL_DIR/matrix_irc_bridge
fi
remove_completion_param install_synapse remove_completion_param install_synapse
sed -i '/synapse/d' $COMPLETION_FILE sed -i '/synapse/d' $COMPLETION_FILE
sed -i '/Synapse/d' /home/$MY_USERNAME/README sed -i '/Synapse/d' /home/$MY_USERNAME/README
@ -220,6 +359,19 @@ function install_synapse {
if [ ! -d /etc/matrix-synapse ]; then if [ ! -d /etc/matrix-synapse ]; then
exit 653835 exit 653835
fi fi
apt-get -yq install matrix-synapse-angular-client
cp -av /etc/matrix-synapse/conf.d/webclient.yaml \
/etc/matrix-synapse/conf.d/webclient.yaml.orig
sed -e 's|,$||g' -i /etc/matrix-synapse/conf.d/webclient.yaml
cp -av /etc/init.d/matrix-synapse /etc/init.d/matrix-synapse.orig
sed -e 's|chown $USER:nogroup $PIDFILE.*|chown $USER:nogroup $PIDFILE /var/lib/$NAME/media|g' -i /etc/init.d/matrix-synapse
diff -u /etc/init.d/matrix-synapse.orig /etc/init.d/matrix-synapse
cp -av /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.orig
sed -i 's|enable_registration: False|enable_registration: True|g' -i /etc/matrix-synapse/homeserver.yaml
rm -f /etc/matrix-synapse/conf.d/*.orig /etc/matrix-synapse/conf.d/*~
update_default_domain
systemctl stop matrix-synapse systemctl stop matrix-synapse
systemctl start matrix-synapse systemctl start matrix-synapse
@ -260,6 +412,8 @@ function install_synapse {
fi fi
fi fi
#install_matrix_irc_bridge
APP_INSTALLED=1 APP_INSTALLED=1
} }

View File

@ -739,6 +739,19 @@ function update_default_domain {
systemctl restart dovecot systemctl restart dovecot
fi fi
fi fi
if [ -d /etc/matrix-synapse ]; then
cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem /etc/matrix-synapse/homeserver.tls.crt
cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam /etc/matrix-synapse/homeserver.tls.dh
cp /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key /etc/matrix-synapse/homeserver.tls.key
chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.key
chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.dh
chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.crt
chmod -R 700 /etc/matrix-synapse/homeserver.tls.key
chmod -R 700 /etc/matrix-synapse/homeserver.tls.dh
chmod -R 700 /etc/matrix-synapse/homeserver.tls.crt
systemctl restart matrix-synapse
fi
fi fi
} }