add matrix-synapse/deploy.py
This commit is contained in:
parent
bece765e3b
commit
359f59bc83
212
matrix-synapse/deploy.py
Normal file
212
matrix-synapse/deploy.py
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
from pyinfra import host
|
||||||
|
from pyinfra.operations import apt, server, files
|
||||||
|
from pyinfra.facts.server import LinuxName
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
files_path = "files/matrix-synapse/"
|
||||||
|
|
||||||
|
## don't exexute on a local mashine
|
||||||
|
if host.name != "@local":
|
||||||
|
|
||||||
|
'''
|
||||||
|
## edit fstab to set wxallowd
|
||||||
|
files.line(
|
||||||
|
name="edit fstab to set wxallowd",
|
||||||
|
path="/etc/fstab",
|
||||||
|
# line="var ffs rw,nodev,",
|
||||||
|
# line="var ffs rw,wxallowed,nodev,",
|
||||||
|
# line="var /var ffs rw,wxallowed,nodev 0 0",
|
||||||
|
line="var /var ext4 rw,wxallowed,nodev 0 0",
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
## change mount option for /var for now
|
||||||
|
'''
|
||||||
|
[matrix] mount: /var: wrong fs type, bad option, bad superblock on var, missing codepage or helper program, or other error.
|
||||||
|
[matrix] dmesg(1) may have more information after failed mount system call.
|
||||||
|
[matrix] Error: executed 0 commands
|
||||||
|
'''
|
||||||
|
'''
|
||||||
|
server.shell(
|
||||||
|
name="change mount option for /var for now",
|
||||||
|
# commands="mount -uo wxallowed /var",
|
||||||
|
commands="mount -o wxallowed /var",
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
## check on which Distribution the script is executed
|
||||||
|
if host.get_fact(LinuxName) == "Debian":
|
||||||
|
|
||||||
|
## enable prerelease chanel to install matrix-synapse on Debian
|
||||||
|
server.shell(
|
||||||
|
name="enable prerelease chanel to install matrix-synapse on Debian",
|
||||||
|
commands=["wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg",
|
||||||
|
"echo \"deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main prerelease\" | tee /etc/apt/sources.list.d/matrix-org.list",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
## update apt repositories
|
||||||
|
apt.update(
|
||||||
|
name="update apt repositories",
|
||||||
|
# _doas=True,
|
||||||
|
# _doas_user="pyinfra",
|
||||||
|
# _sudo=True,
|
||||||
|
# _sudo_user="pyinfra",
|
||||||
|
)
|
||||||
|
|
||||||
|
apt.packages(
|
||||||
|
name="install build-essential python3-dev libffi-def python3-pip python3-setuptools sqlite3 libssl-dev virtualenv libjpeg-dev libxslt1-dev libicu-dev for matrix-synapse-py3",
|
||||||
|
packages=["build-essential",
|
||||||
|
"python3-dev",
|
||||||
|
"libffi-dev",
|
||||||
|
"python3-pip",
|
||||||
|
"python3-setuptools",
|
||||||
|
"sqlite3",
|
||||||
|
"libssl-dev",
|
||||||
|
"virtualenv",
|
||||||
|
"libjpeg-dev",
|
||||||
|
"libxslt1-dev",
|
||||||
|
"libicu-dev",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
apt.packages(
|
||||||
|
name="install synapse",
|
||||||
|
# packages=["synapse"],
|
||||||
|
packages=["matrix-synapse-py3"],
|
||||||
|
)
|
||||||
|
|
||||||
|
apt.packages(
|
||||||
|
name="install libxml (for link previews)",
|
||||||
|
# packages=["py3-libxml"],
|
||||||
|
packages=["python3-lxml"],
|
||||||
|
)
|
||||||
|
|
||||||
|
apt.packages(
|
||||||
|
name="install opendoas",
|
||||||
|
packages=["opendoas"],
|
||||||
|
)
|
||||||
|
|
||||||
|
# elif host.get_fact(LinuxName) == "":
|
||||||
|
else:
|
||||||
|
print("matrix-synapse deploy.py don't support: \"" +host.get_fact(LinuxName) +"\" yet")
|
||||||
|
exit("exit from matrix-synapse/deploy.py")
|
||||||
|
|
||||||
|
## copy doas config
|
||||||
|
doas_conf_path = files_path +"doas.conf"
|
||||||
|
exi = os.path.exists(doas_conf_path)
|
||||||
|
if exi == True:
|
||||||
|
files.put(
|
||||||
|
name="copy doas config",
|
||||||
|
src=doas_conf_path,
|
||||||
|
dest="/etc/doas.conf",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("file: \"" +doas_conf_path +"\" dosn't exists")
|
||||||
|
|
||||||
|
## generate synapse config
|
||||||
|
server.shell(
|
||||||
|
name="generate synapse config",
|
||||||
|
# commands=["/opt/venvs/matrix-synapse/bin/python3 -m synapse.app.homeserver -c /var/synapse/homeserver.yaml --generate-config --server-name chat.heizhaus.org --report-stats=no --generate-keys --keys-directory /var/synapse",
|
||||||
|
commands=[
|
||||||
|
## --generate-config and --generate-keys can't be in the same line/command
|
||||||
|
"/opt/venvs/matrix-synapse/bin/python3 -m synapse.app.homeserver -c /var/synapse/homeserver.yaml --generate-config --server-name chat.heizhaus.org --report-stats=no --keys-directory /var/synapse",
|
||||||
|
"/opt/venvs/matrix-synapse/bin/python3 -m synapse.app.homeserver -c /var/synapse/homeserver.yaml --generate-keys --keys-directory /var/synapse",
|
||||||
|
"touch /var/synapse/homeserver.yaml",
|
||||||
|
"cd /var/synapse",
|
||||||
|
],
|
||||||
|
# )
|
||||||
|
#!!! change user to _synapse !!!#
|
||||||
|
# _su_user="matrix-synapse",
|
||||||
|
# _su_user="_synapse",
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
[matrix] This account is currently not available.
|
||||||
|
[matrix] Error: executed 0 commands
|
||||||
|
'''
|
||||||
|
|
||||||
|
# creates="/var/synapse/homeserver.yaml",
|
||||||
|
# chdir="/var/synapse/",
|
||||||
|
# becom_user="_synapse",
|
||||||
|
|
||||||
|
## copy synapse config
|
||||||
|
homeserver_py_path = files_path +"homeserver.yaml"
|
||||||
|
exi = os.path.exists(homeserver_py_path)
|
||||||
|
if exi == True:
|
||||||
|
files.put(
|
||||||
|
name="copy synapse config",
|
||||||
|
src=homeserver_py_path,
|
||||||
|
dest="/var/synapse/homeserver.yaml",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("file: \"" +homeserver_py_path +"\" dosn't exists")
|
||||||
|
|
||||||
|
## copy logging config
|
||||||
|
log_conf_path = files_path + "chat.heizhaus.org.log.config"
|
||||||
|
exi = os.path.exists(log_conf_path)
|
||||||
|
if exi == True:
|
||||||
|
files.put(
|
||||||
|
name="copy logging config",
|
||||||
|
src=log_conf_path,
|
||||||
|
dest="/var/synapse/chat.heizhaus.org.log.config",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("file: \"" +log_conf_path +"\" dosn't exists")
|
||||||
|
|
||||||
|
## add synapse commands to PATH
|
||||||
|
dotprofile_path = files_path +"dotprofile"
|
||||||
|
exi = os.path.exists(dotprofile_path)
|
||||||
|
if exi == True:
|
||||||
|
files.put(
|
||||||
|
name="add synapse commands to PATH",
|
||||||
|
src=dotprofile_path,
|
||||||
|
dest="/root/.profile",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("file: \"" +dotprofile_path +"\" dosn't exists")
|
||||||
|
|
||||||
|
## change owner for /var/synapse
|
||||||
|
# user_name = "_synapse"
|
||||||
|
# group_name = "_synapse"
|
||||||
|
user_name = "matrix-synapse"
|
||||||
|
group_name = "matrix-synapse"
|
||||||
|
server.shell(
|
||||||
|
name="chown -R " +user_name +":" +group_name +" /var/synapse",
|
||||||
|
commands="chown -R " +user_name +":" +group_name +" /var/synapse && chmod -R 0770 /var/synapse",
|
||||||
|
)
|
||||||
|
|
||||||
|
## set server name
|
||||||
|
server_name = "chat.heizhaus.org"
|
||||||
|
files.replace(
|
||||||
|
name="set server name",
|
||||||
|
path="/etc/matrix-synapse/conf.d/server_name.yaml",
|
||||||
|
text="server_name: ",
|
||||||
|
replace="server_name: " +server_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
## enable and restart matrix
|
||||||
|
server.service(
|
||||||
|
name="enable and restart matrix",
|
||||||
|
# service="synapse",
|
||||||
|
service="matrix-synapse.service",
|
||||||
|
enabled=True,
|
||||||
|
restarted=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# server.shell(
|
||||||
|
# name="enable and restart matrix",
|
||||||
|
# commands="systemctl enable synapse && systemctl restart synapse",
|
||||||
|
# )
|
||||||
|
|
||||||
|
## add synapse backup script
|
||||||
|
backup_sh_path = files_path +"borgbackup.sh"
|
||||||
|
exi = os.path.exists(backup_sh_path)
|
||||||
|
if exi == True:
|
||||||
|
files.put(
|
||||||
|
name="add synapse backup script",
|
||||||
|
src=backup_sh_path,
|
||||||
|
dest="/etc/daily.d/borgbackup.sh"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("file: \"" +backup_sh_path +"\" dosn't exists")
|
Loading…
Reference in a new issue