open network for secure, decentralized communication
Project homepage: https://matrix.org/
Description
Matrix specifies a set of RESTful HTTP JSON APIs as an open standard for
federated Instant Messaging and VoIP (creating and managing distributed chat
rooms without points of control or failure, cryptographically secure state
synchronisation across an open network, etc).
In Matrix, every user runs one or more Matrix clients, which connect
through to a Matrix homeserver. The homeserver stores all their personal
chat history and user account information.
Synapse is a reference "homeserver" implementation of Matrix.
Package information
- Ports path
- net/synapse
- Package architecture
- amd64
- Maintainer
- Renaud Allard <renaud@allard.it>
- Categories
- net, lang/python, lang/rust
- Available flavors
- None listed
- Only for architectures
- aarch64, amd64, riscv64, sparc64
Ports list build and test dependencies as well as runtime dependencies. pkg_add selects those needed for installation.
Direct dependencies
Runtime
- devel/py-jsonschema STEM->=3.0.0
- devel/py-rpds-py STEM->=0.25.0
- devel/py-immutabledict
- textproc/py-unpaddedbase64 STEM->=2.1.0
- textproc/py-canonicaljson STEM-<3.0.0,>=2.0.0
- textproc/py-signedjson
- security/py-service_identity
- devel/py-twisted
- www/py-treq
- security/py-openssl
- textproc/py-yaml
- devel/py-asn1
- devel/py-asn1-modules
- security/py-bcrypt
- graphics/py-Pillow STEM->=10.0.1
- devel/py-sortedcontainers
- devel/py-pydantic
- www/py-macaroons
- net/py-msgpack
- telephony/py-phonenumbers
- sysutils/py-prometheus_client
- devel/py-attrs
- net/py-netaddr
- www/py-jinja2
- www/py-bleach
- devel/py-typing-extensions STEM->=4.14.1
- devel/py-pyrsistent
- security/py-cryptography
- textproc/py-ijson
- devel/py-matrix-common STEM->=1.3.0,<2.0.0
- sysutils/py-packaging
- www/py-python-multipart
- textproc/py-lxml
- www/py-requests
- devel/py-parsing
- lang/python/3
Build
- devel/py-setuptools-rust STEM->=1.3.0
- lang/python/3
- devel/py-build
- devel/py-installer
- devel/maturin
- devel/cargo-generate-vendor STEM->=1.1
- lang/rust
Test
- net/synapse synapse-1.161.0p0
- devel/py-mock
- devel/py-parameterized
- devel/py-parsing
- devel/py-pyrsistent
- www/py-jwt
- devel/py-jsonschema STEM->=3.0.0
- devel/py-rpds-py STEM->=0.25.0
- devel/py-immutabledict
- textproc/py-unpaddedbase64 STEM->=2.1.0
- textproc/py-canonicaljson STEM-<3.0.0,>=2.0.0
- textproc/py-signedjson
- security/py-service_identity
- devel/py-twisted
- www/py-treq
- security/py-openssl
- textproc/py-yaml
- devel/py-asn1
- devel/py-asn1-modules
- security/py-bcrypt
- graphics/py-Pillow STEM->=10.0.1
- devel/py-sortedcontainers
- devel/py-pydantic
- www/py-macaroons
- net/py-msgpack
- telephony/py-phonenumbers
- sysutils/py-prometheus_client
- devel/py-attrs
- net/py-netaddr
- www/py-jinja2
- www/py-bleach
- devel/py-typing-extensions STEM->=4.14.1
- security/py-cryptography
- textproc/py-ijson
- devel/py-matrix-common STEM->=1.3.0,<2.0.0
- sysutils/py-packaging
- www/py-python-multipart
- textproc/py-lxml
- www/py-requests
- lang/python/3
- devel/py-test
OpenBSD README
This README contains unresolved ports variables; replace them before using its commands.
+-------------------------------------------------------------------------------
| Running synapse on OpenBSD
+-------------------------------------------------------------------------------
Generate a config
=================
As root (or _synapse), go into ${LOCALSTATEDIR}/synapse, then use
doas -u _synapse ${MODPY_BIN} -m synapse.app.homeserver \
-c ${LOCALSTATEDIR}/synapse/homeserver.yaml --generate-config \
--server-name matrix.example.com --report-stats=no \
--keys-directory ${LOCALSTATEDIR}/synapse
Register a user
===============
doas -u _synapse \
/usr/local/bin/register_new_matrix_user \
-c ${LOCALSTATEDIR}/synapse/homeserver.yaml \
http://localhost:8008
Updating the database after an upgrade
======================================
On startup, synapse will fail to start if the database schema is too old.
So, after an upgrade of synapse, you should update the database.
It can be done with a command like this one:
doas -u _synapse /usr/local/bin/update_synapse_database \
--database-config /var/synapse/homeserver.yaml \
--run-background-updates
Configuration with TLS
======================
By default, synapse will run without TLS on localhost:8008
This means that you will not be able to connect to your server remotely.
The best way to achieve remote connectivity is through a reverse proxy.
Here is a relayd.conf(5) example:
http protocol synapse {
match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"
tls keypair "matrix.example.com"
match request header set "Connection" value "close"
}
relay "synapse" {
listen on matrix.example.com port 443 tls
protocol "synapse"
forward to 127.0.0.1 port 8008
}
relay "synapse-server" {
listen on matrix.example.com port 8448 tls
protocol "synapse"
forward to 127.0.0.1 port 8008
}
Here is an Nginx vhost reverse proxy example:
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/matrix.example.com.pem;
ssl_certificate_key /etc/ssl/private/matrix.example.com.key;
server_name matrix.example.com;
location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;
ssl_certificate /etc/ssl/matrix.example.com.pem;
ssl_certificate_key /etc/ssl/private/matrix.example.com.key;
server_name matrix.example.com;
location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Used by (1 dependency relationships)
Includes library, runtime, build and test dependencies.