GoWiki
Index
Sections
Search
Login
openbsd
Matrix
# Matrix Home Server ## Dendrite Install Postgresql: [Install Guide](/openbsd/Postgres) Create db user and databases: ``` su - _postgresql createuser -U postgres -P dendrite for db in mediaapi syncapi roomserver signingkeyserver federationsender appservice keyserver userapi_accounts userapi_devices naffka; do createdb -U postgres -O dendrite $db done echo "host all dendrite 127.0.0.1/32 md5" >>/var/postgresql/data/pg_hba.conf rcctl reload postgresql ``` Create system user and directories: ``` groupadd _dendrite useradd -g _dendrite -d /var/dendrite -s /sbin/nologin _dendrite mkdir -p /var/dendrite/media_store /var/log/dendrite chown -R _dendrite:_dendrite /var/dendrite /var/log/dendrite ``` Generate Matrix Key: ``` generate-keys --private-key /var/dendrite/matrix_key.pem chown root:_dendrite /var/dendrite/matrix_key.pem chmod 640 /var/dendrite/matrix_key.pem ``` Generate Dendrite Config: ``` domain="example.com" pass="my_db_password" generate-config | sed -e "s/server_name: localhost/server_name: $domain/" \ -e 's/\[::\]/0.0.0.0/g' \ -e 's/localhost/127.0.0.1/g' \ -e "s,file:\(.*\).db,postgres://dendrite:$pass@127.0.0.1/\1?sslmode=disable,g" \ -e 's,\./media_store,/var/dendrite/media_store,' \ -e 's,matrix_key.pem,/var/dendrite/matrix_key.pem,' \ > /var/dendrite/dendrite.yaml chmod 640 /var/dendrite/dendrite.yaml chown root:_dendrite /var/dendrite/dendrite.yaml ``` Create rc file: ``` cat <<'EOF'> /etc/rc.d/dendrite #!/bin/sh daemon="/usr/local/sbin/dendrite-monolith-server" daemon_user="_dendrite" rc_bg=YES . /etc/rc.d/rc.subr rc_cmd $1 EOF chmod 555 /etc/rc.d/dendrite rcctl enable dendrite rcctl set dendrite flags -config /var/dendrite/dendrite.yaml rcctl start dendrite ``` Nginx well-known config: ``` server_name example.com; ... location /.well-known/matrix/client { return 200 '{"m.homeserver":{"base_url":"https://matrix.example.com"}}'; add_header Content-Type application/json; add_header Access-Control-Allow-Origin *; } location /.well-known/matrix/server { return 200 '{"m.server":"matrix.example.com:443"}'; } ``` Nginx Proxy: ``` server { listen 443 ssl http2; server_name matrix.example.com; ... location /_matrix { proxy_pass http://192.168.0.100:8008; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### Create a user ``` create-account --config /var/dendrite/dendrite.yaml -ask-pass -username <user> ``` # Database Cleanup ``` su - _postgresql for db in mediaapi syncapi roomserver signingkeyserver federationsender appservice keyserver userapi_accounts userapi_devices naffka; do psql -U postgres -c "drop database $db" done ```