2022-04-13 11:35:14 +01:00

2021-05-13 16:25:42 +01:00
# sync-v3
2021-05-14 16:49:33 +01:00
Run an experimental sync v3 server using an existing Matrix account. This is possible because, for the most part,
v3 sync is a strict subset of v2 sync.
2021-12-23 16:36:12 +00:00
An implementation of [MSC3575 ](https://github.com/matrix-org/matrix-doc/blob/kegan/sync-v3/proposals/3575-sync.md ).
2021-08-05 17:28:38 +01:00
2021-05-14 16:49:33 +01:00
## Usage
2021-11-03 10:24:28 +00:00
Requires Postgres 13+.
2021-07-21 10:30:04 +01:00
```bash
2021-05-14 16:49:33 +01:00
$ createdb syncv3
$ go build ./cmd/syncv3
$ ./syncv3 -server "https://matrix-client.matrix.org" -db "user=$(whoami) dbname=syncv3 sslmode=disable"
```
2021-07-21 10:30:04 +01:00
2021-09-30 17:02:53 +01:00
Then visit http://localhost:8008/client/ (with trailing slash) and paste in the `access_token` for any account on `-server` .
2021-07-21 10:30:04 +01:00
2021-09-30 17:28:36 +01:00
When you hit the Sync button nothing will happen initially, but you should see:
2022-04-01 13:44:09 +01:00
2021-09-30 17:28:36 +01:00
```
INF Poller: v2 poll loop started ip=::1 since= user_id=@kegan:matrix .org
```
2022-04-01 13:44:09 +01:00
2021-09-30 17:28:36 +01:00
Wait for the first initial v2 sync to be processed (this can take minutes!) and then v3 APIs will be responsive.
2022-04-01 14:42:03 +01:00
### Docker
When running using the official docker container, these environment variables can be set:
```
SYNCV3_SERVER equivalent of -server
SYNCV3_DB equivalent of -db
SYNCV3_BINDADDR equivalent of -port, default: 0.0.0.0:8008
```
2021-10-21 15:57:50 +01:00
### How can I help?
At present, the best way to help would be to run a local v3 server pointed at a busy account and just leave it and a client running in the background. Look at it occasionally and submit any issues you notice. You can save console logs by right-clicking -> Save As.
2021-11-08 16:21:02 +00:00
Please run the server with `SYNCV3_DEBUG=1` set. This will force the server to panic when assertions fail rather than just log them.