Synapse Matrix Registration System
This is a user registration system for a Matrix server using Django and the Synapse Admin API. It handles user sign-ups, admin approvals, and account management.
Features
- User Registration Workflow: A step-by-step registration process, including username checking, email verification, and submission of a reason for registration.
- Admin Approval: Registrations require admin approval before activation.
- User Notifications: Email notifications are sent throughout the registration process to ensure users and admins remain informed.
- Admin Portal: Admins can manage registrations directly from the Django admin interface, approving or denying requests.
Installation
- Clone the Repository:
git clone https://git.private.coffee/PrivateCoffee/synapse-registration.git
cd synapse-registration
python3 -m venv venv
source venv/bin/activate
pip install .
- Create configuration file:
cp config.dist.yaml config.yaml
- Edit configuration file:
Edit the config.yaml file to match your Matrix server and email settings.
The following settings are available:
debug: Set totrueto enable Django debug mode. Do not enable in production.secret_key: Django secret key. If not set, a random key will be generated on startup.synapse: Synapse server settings.admin_token: Access token of an admin user.server: Synapse server URL (e.g.https://matrix.example.com).domain: Matrix server domain (e.g.example.com).verify_cert: If your Synapse server uses a self-signed certificate, set this tofalse, or provide the path to your CA bundle.
hosts: List of domains that the registration system will be accessible at. At least one domain is required.email: Email server settings.host: SMTP server hostname. Required.port: SMTP server port. Required.username: SMTP username. Required.password: SMTP password. Required.tls: Set totrueto enable STARTTLS.ssl: Set totrueto enable SSL.from: Email address to send notifications from. Defaults to theusernamesetting.
admin: Admin user settings.email: Email address to send admin notifications to. Required.
trust_proxy: Set totrueif the registration system is behind a reverse proxy. This ensures the correct IP address is logged.auto_join: Optional list of rooms to automatically join users to after registration. The admin user must be in these rooms and have invite permissions.legal: Optional list of legal documents to link to in the registration form. Each item must have atitleandurl.retention: Optional retention periods for registrations.started: Days to keep unverified registrations. Default is 2 days.completed: Days to keep completed/denied registrations. Default is 30 days.
database: Optional database settings.path: Path to the SQLite database file. Defaults todb.sqlite3in the current directory.
- Run migrations:
synapse_registration migrate
- Create superuser:
synapse_registration createsuperuser
- Run the server:
For development:
synapse_registration runserver
For production, use a WSGI server such as uWSGI, behind a reverse proxy such as Caddy.
Usage
- Access the registration system:
Navigate to the domain you set in the config.yaml file. You should see the registration form.
- Register a new user:
The registration process is as follows:
- Step 1: Enter a username. The system will check if the username is available.
- Step 2: Enter an email address. A verification email will be sent.
- Step 3: Enter a password and reason for registration. The password will be stored in Synapse, the reason will be stored in the admin interface.
- Step 4: Wait for an admin to approve the registration. You will receive an email when this happens.
- Approve a registration:
- Step 1: Log in to the Django admin interface.
- Step 2: Navigate to the
User registrationssection. - Step 3: Review the registration request and set the status to
ApprovedorDenied. This will enable the Matrix account and send an email to the user.
- Clean up registrations:
Note: This is no longer necessary. Old registrations are automatically cleaned up.
You can use the synapse_registration cleanup command to remove old registration requests.
- Unverified registrations are removed after 48 hours.
- Denied and approved registrations are removed after 30 days.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Release files for synapse-registration 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| synapse_registration-0.1.4.tar.gz | 38.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| synapse_registration-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 106.0 kB
Release files / synapse_registration-0.1.4.tar.gz
| Download URL | synapse_registration-0.1.4.tar.gz |
|---|---|
| Size | 38.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bd42d2377994c4f3c9bb6987e457be9928eb6d440145895e4a0ae24c52ecba4c
|
|
BLAKE2b-256 checksum How to use checksums |
e8a405fa73ff9325f05aec51316bf2053f3aa2b91577a3e437c458d45f45ff65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / synapse_registration-0.1.4-py3-none-any.whl
| Download URL | synapse_registration-0.1.4-py3-none-any.whl |
|---|---|
| Size | 67.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a291ab77b82fbce1c8d83da21462478c61c157116dcfc916586788e746bd8c7
|
|
BLAKE2b-256 checksum How to use checksums |
072927575924a7b8f2280a2b0d0a6d53702bbe8c2e1a95a18ddfda7f4e03c8e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|