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