Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V2 #426

Merged
merged 95 commits into from
Mar 8, 2024
Merged

V2 #426

Show file tree
Hide file tree
Changes from 93 commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
3082db3
Migrate with script
Josue-T Oct 31, 2023
1be2574
Update manifest
Josue-T Oct 31, 2023
b435f31
Full rework of all scripts
Josue-T Nov 1, 2023
db98230
Auto-update README
yunohost-bot Nov 1, 2023
1cfd575
Fix install issues
Josue-T Nov 1, 2023
468dbfc
Fix nginx config
Josue-T Nov 2, 2023
53640f1
Improve config file generation
Josue-T Nov 2, 2023
8399b81
Increase default upload size
Josue-T Nov 2, 2023
1d4173a
Add missing setting
Josue-T Nov 2, 2023
e3df9fc
Fix LDAP and mail authentication
Josue-T Nov 20, 2023
b78beba
cleanup script
Josue-T Nov 20, 2023
1c65b06
Fix #313
Josue-T Nov 20, 2023
b8e3f08
Increase default upload size
Josue-T Nov 22, 2023
236bfd2
Use $app instead of $YNH_APP_ID
Josue-T Dec 18, 2023
60324a8
Update upstream url
Josue-T Jan 24, 2024
b2e2341
Standardize unit name
Josue-T Feb 6, 2024
29da503
Patch upstream to add anonymous ldap filter
Josue-T Feb 6, 2024
46afca2
Update checkprocess
Josue-T Feb 6, 2024
fe8b5b0
Cleanup experimental helper
Josue-T Feb 6, 2024
fbeb092
Remove yunohost user creation
Josue-T Feb 6, 2024
ae1c617
Fix install
Josue-T Feb 6, 2024
0c280a1
Fix template for post install
Josue-T Feb 6, 2024
4a18813
Auto-update README
yunohost-bot Feb 6, 2024
df8f188
Merge remote-tracking branch 'origin/testing' into v2
ericgaspar Feb 6, 2024
c34e223
Auto-update README
yunohost-bot Feb 6, 2024
e7e2b72
Cleanup temporary workaround
Josue-T Feb 6, 2024
e0d9125
Fix missing store file checksum
Josue-T Feb 6, 2024
86b4250
Fix config panel systemd unit
Josue-T Feb 6, 2024
c749926
Fix config panel
Josue-T Feb 14, 2024
b2cedfe
Add missing save checksum
Josue-T Feb 16, 2024
8e6e411
Standardize texts for questions on control panel
Josue-T Feb 16, 2024
5dde802
Fix typo
Josue-T Feb 16, 2024
1f8a57b
Fix indentation
Josue-T Feb 16, 2024
da02afc
Set to default value when settings are hidden on panel
Josue-T Feb 16, 2024
47ffaea
Remove 'none' value for 3pid on account creation as it's not accepted…
Josue-T Feb 16, 2024
995ad42
Rework default value on install
Josue-T Feb 16, 2024
35f809c
Remove really old check for upgrade
Josue-T Feb 16, 2024
c039c37
Apply same default value from install to upgrade
Josue-T Feb 16, 2024
bdc9c35
Fix migration of systemd unit
Josue-T Feb 16, 2024
0f61115
Auto-update README
yunohost-bot Feb 16, 2024
4311d1e
Add warning when server_name config are not managed by yunohost
Josue-T Feb 20, 2024
0fd65f2
First draft of upgrade from old version
Josue-T Feb 20, 2024
0cb7777
Add description for services
Josue-T Feb 20, 2024
0faf8ca
Add set -eu for tools scripts
Josue-T Feb 20, 2024
a3c9dbe
Cleanup
Josue-T Feb 20, 2024
f1dd82f
Rework maintenance scripts
Josue-T Feb 20, 2024
7bf8d06
Cleanup sso_enabled var
Josue-T Feb 20, 2024
606a38b
Simplify call to venv
Josue-T Feb 21, 2024
8aa71eb
Merge branch 'testing' into v2
Josue-T Feb 21, 2024
c296e6a
Cleanup actions
Josue-T Feb 21, 2024
f4faaa5
Fix undefined vars
Josue-T Feb 21, 2024
b1cebf7
Update tests config
Josue-T Feb 21, 2024
4cd097e
Fix undefined var
Josue-T Feb 21, 2024
98c9fc5
Fix upgrade
Josue-T Feb 21, 2024
628703a
Add link to doc for homeserver config
Josue-T Feb 22, 2024
388757c
Simplify main domain retrivement
Josue-T Feb 22, 2024
ff52c4f
Auto-update README
yunohost-bot Feb 22, 2024
131d6d4
On dh file generation, remove dsaparam as it's not supported on debia…
Josue-T Feb 22, 2024
eea3668
Fix linter warning
Josue-T Feb 23, 2024
99e4fcb
Use domain for mail stack and hard code main path as it static
Josue-T Feb 23, 2024
241283a
Rename discalaimer to admin to make package linter happy
Josue-T Feb 23, 2024
3880e70
Fix registrations_require_3pid which could be set to none
Josue-T Feb 23, 2024
d17f526
Rework setting web_client_location
Josue-T Feb 23, 2024
353b23c
Auto-update README
yunohost-bot Feb 23, 2024
86293ea
Cleanup default synapse config not used
Josue-T Feb 23, 2024
d1926e4
Cleanup dirty code
Josue-T Feb 26, 2024
fd4add7
Simplify permission url on manitfest
Josue-T Feb 26, 2024
dcfdbe0
Fix arm build name
Josue-T Feb 26, 2024
31a6969
Improve name for sources
Josue-T Feb 26, 2024
0d433dc
Simplify remove
Josue-T Feb 26, 2024
fc56ab1
Remove legacy check on path on change-url
Josue-T Feb 27, 2024
59486b6
Add empty page for /
Josue-T Feb 27, 2024
0dffaf6
Simplify pip command
Josue-T Feb 28, 2024
a78e603
Add auto update scripts
Josue-T Feb 27, 2024
924688c
Fix warning
Josue-T Feb 28, 2024
7d364ad
Add info about long time for updating permissions
Josue-T Feb 28, 2024
f7a9ef3
Fix upgrade from old version with config panel
Josue-T Feb 29, 2024
42b6143
Avoid to set whole permission on data dir when change-url and config
Josue-T Feb 29, 2024
9cdcf07
Fix config panel with tags
Josue-T Feb 29, 2024
3bb953b
Be coherent on default value between install/upgrade
Josue-T Feb 29, 2024
ce38d58
Update admin doc for change url
Josue-T Feb 29, 2024
6ed1dd9
Add doc link on update
Josue-T Feb 29, 2024
daf9f51
Improve doc
Josue-T Mar 1, 2024
718f6e6
Remove turn_allow_guest settings and use allow_guest_access instead
Josue-T Mar 5, 2024
70ba8c8
Temporary remove markdown help on advanced config panel
Josue-T Mar 5, 2024
004fd19
Update requirement
Josue-T Mar 6, 2024
aa86045
Fix auto update
Josue-T Mar 6, 2024
8423116
Upgrade synapse to 1.102.0
Josue-T Mar 6, 2024
e75a3fb
Fix CI on bookworm
Josue-T Mar 6, 2024
5314ab7
Auto-update README
yunohost-bot Mar 6, 2024
3014a2d
Fix requirement issues
Josue-T Mar 6, 2024
aac3df4
Fix bookworm test
Josue-T Mar 7, 2024
c058efd
Auto-update README
yunohost-bot Mar 7, 2024
6fb5996
Update coturn config from debian bookworm systemd config
Josue-T Mar 7, 2024
17ebb27
Remplement TLS/DTLS for calls
Josue-T Feb 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@

*swp

auto_update_config.sh
auto_update/Synapse_build_*.log
auto_update/synapse_build_temp.log
197 changes: 7 additions & 190 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!--
N.B.: This README was automatically generated by https://github.com/YunoHost/apps/tree/master/tools/README-generator
N.B.: This README was automatically generated by https://github.com/YunoHost/apps/tree/master/tools/readme_generator
It shall NOT be edited by hand.
-->

Expand All @@ -21,197 +21,14 @@ Instant messaging server matrix network.
Yunohost chatroom with matrix : [https://matrix.to/#/#yunohost:matrix.org](https://matrix.to/#/#yunohost:matrix.org)


**Shipped version:** 1.101.0~ynh1
## Disclaimers / important information

## Configuration

### Install for ARM arch (or slow arch)

For all slow or arm architecture it's recommended to build the dh file before the install to have a quicker install.
You could build it by this cmd : `openssl dhparam -out /etc/ssl/private/dh2048.pem 2048 > /dev/null`
After that you can install it without problem.

The package uses a prebuilt python virtual environnement. The binary are taken from this repository: https://github.com/Josue-T/synapse_python_build
The script to build the binary is also available.

### Web client

If you want a web client you can also install Element with this package: https://github.com/YunoHost-Apps/element_ynh .

### Access by federation

If your server name is identical to the domain on which synapse is installed, and the default port 8448 is used, your server is normally already accessible by the federation.

If not, you can add the following line in the dns configuration but you normally don't need it as a .well-known file is edited during the install to declare your server name and port to the federation.

```
_matrix._tcp.<server_name.tld> <ttl> IN SRV 10 0 <port> <domain-or-subdomain-of-synapse.tld>
```
for example
```
_matrix._tcp.example.com. 3600 IN SRV 10 0 SYNAPSE_PORT synapse.example.com.
```
You need to replace SYNAPSE_PORT by the real port. This port can be obtained by the command: `yunohost app setting SYNAPSE_INSTANCE_NAME synapse_tls_port`

For more details, see : https://github.com/matrix-org/synapse/blob/master/docs/federate.md

If it is not automatically done, you need to open this in your ISP box.

You also need a valid TLS certificate for the domain used by synapse. To do that you can refer to the documentation here : https://yunohost.org/#/certificate_en

https://federationtester.matrix.org/ can be used to easily debug federation issues

### Turnserver

For Voip and video conferencing a turnserver is also installed (and configured). The turnserver listens on two UDP and TCP ports. You can get them with these commands:
```
yunohost app setting synapse turnserver_tls_port
yunohost app setting synapse turnserver_alt_tls_port

```
The turnserver will also choose a port dynamically when a new call starts. The range is between 49153 - 49193.

For some security reason the ports range (49153 - 49193) isn't automatically open by default. If you want to use the synapse server for voip or conferencing you will need to open this port range manually. To do this just run this command:

```
yunohost firewall allow Both 49153:49193
```

You might also need to open these ports (if it is not automatically done) on your ISP box.

To prevent the situation when the server is behind a NAT, the public IP is written in the turnserver config. By this the turnserver can send its real public IP to the client. For more information see [the coturn example config file](https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf#L102-L120).So if your IP changes, you could run the script `/opt/yunohost/__SYNAPSE_INSTANCE_NAME__/Coturn_config_rotate.sh` to update your config.

If you have a dynamic IP address, you also might need to update this config automatically. To do that just edit a file named `/etc/cron.d/coturn_config_rotate` and add the following content (just adapt the __SYNAPSE_INSTANCE_NAME__ which could be `synapse` or maybe `synapse__2`).

```
*/15 * * * * root bash /opt/yunohost/__SYNAPSE_INSTANCE_NAME__/Coturn_config_rotate.sh;
```

#### OpenVPN

In case of you have an OpenVPN server you might want than `coturn-synapse` restart when the VPN restart. To do this create a file named `/usr/local/bin/openvpn_up_script.sh` with this content:
```
#!/bin/bash

(
sleep 5
sudo systemctl restart coturn-synapse.service
) &
exit 0
```

Add this line in you sudo config file `/etc/sudoers`
```
openvpn ALL=(ALL) NOPASSWD: /bin/systemctl restart coturn-synapse.service
```

And add this line in your OpenVPN config file
```
ipchange /usr/local/bin/openvpn_up_script.sh
```

### Important Security Note

We do not recommend running Element from the same domain name as your Matrix
homeserver (synapse). The reason is the risk of XSS (cross-site-scripting)
vulnerabilities that could occur if someone caused Element to load and render
malicious user generated content from a Matrix API which then had trusted
access to Element (or other apps) due to sharing the same domain.

We have put some coarse mitigations into place to try to protect against this
situation, but it's still not a good practice to do it in the first place. See
https://github.com/vector-im/element-web/issues/1977 for more details.

## YunoHost specific features

## Limitations

Synapse uses a lot of ressource. So on slow architecture (like small ARM board), this app could take a lot of CPU and RAM.

This app doesn't provide any real good web interface. So it's recommended to use Element client to connect to this app. This app is available [here](https://github.com/YunoHost-Apps/element_ynh)

## Additional information

## Administration

**All documentation of this section is not warranted. A bad use of command could break the app and all the data. So use these commands at your own risk.**

Before any manipulation it's recommended to do a backup by this following command :

`sudo yunohost backup create --apps synapse`

### Set user as admin

Actually there are no functions in the client interface to set a user as admin. So it's possible to enable it manually in the database.

The following command will grant admin privilege to the specified user:
```
su --command="psql matrix_synapse" postgres <<< "UPDATE users SET admin = 1 WHERE name = '@user_to_be_admin:domain.tld'"
```

### Administration API

Synapse's administration API endpoints are under `/_synapse` path and protected with the `admin_api` permission.
By default, no one has access to this path.

If you wish to access it, for example to use [Synapse Admin](https://github.com/YunoHost-Apps/synapse-admin_ynh),
you need to give this permission to visitors.

Then, to log in the API with your credentials, you need to set your user as admin (cf. precedent section).

### Upgrade

By default a backup is made before the upgrade. If for some reason you want to upgrade without backup:
- Call the command with the `-b` flag: `yunohost app upgrade synapse -b`
- Disable the setting `Backup before upgrade` in the Config Panel. Or with command line:

`yunohost app setting synapse backup_before_upgrade -v 0`

After this settings will be applied for **all** next upgrade.

From command line:

`yunohost app upgrade synapse`

### Backup

This app use now the core-only feature of the backup. To keep the integrity of the data and to have a better guarantee of the restoration is recommended to proceed like this:

- Stop synapse service with theses following command:

`systemctl stop synapse.service`

- Launch the backup of synapse with this following command:

`yunohost backup create --app synapse`

- Do a backup of your data with your specific strategy (could be with rsync, borg backup or just cp). The data is generally stored in `/home/yunohost.app/matrix-synapse`.
- Restart the synapse service with these command:

`systemctl start synapse.service`

### Remove

Due of the backup core only feature the data directory in `/home/yunohost.app/matrix-synapse` **is not removed**.

Use the `--purge` flag with the command, or remove it manually to purge app user data.

### Multi instance support

To give a possibility to have multiple domains you can use multiple instances of synapse. In this case all instances will run on different ports so it's really important to put a SRV record in your domain. You can get the port that you need to put in your SRV record with this following command:
```
yunohost app setting synapse__<instancenumber> synapse_tls_port
```

Before installing a second instance of the app it's really recommended to update all existing instances.

**Shipped version:** 1.102.0~ynh1
## Documentation and resources

* Official app website: <https://matrix.org/>
* Upstream app code repository: <https://github.com/matrix-org/synapse>
* YunoHost Store: <https://apps.yunohost.org/app/synapse>
* Report a bug: <https://github.com/YunoHost-Apps/synapse_ynh/issues>
- Official app website: <https://matrix.org/>
- Official admin documentation: <https://matrix-org.github.io/synapse/latest/welcome_and_overview.html>
- Upstream app code repository: <https://github.com/element-hq/synapse>
- YunoHost Store: <https://apps.yunohost.org/app/synapse>
- Report a bug: <https://github.com/YunoHost-Apps/synapse_ynh/issues>

## Developer info

Expand Down
Loading