Skip to content

Commit 4f905cb

Browse files
committed
formatting and minor corrections
1 parent 5a659ca commit 4f905cb

File tree

2 files changed

+81
-35
lines changed

2 files changed

+81
-35
lines changed

README.md

Lines changed: 64 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -44,52 +44,68 @@ See `config/config_example.yml` for example configuration file, available option
4444
- To build from source, proceed with this manual.
4545

4646
### Foreground mode
47-
*note: this is not recommended for production use, use systemd service instead*
47+
> [!NOTE]
48+
> this is not recommended for production use, use systemd service instead or run it in a Docker container
4849
4950
1. Clone the repository from GitHub
5051

51-
git clone https://github.com/parMaster/zoomrs.git
52+
```sh
53+
git clone https://github.com/parMaster/zoomrs.git
54+
```
5255

5356
2. Make sure `config/config.yml` exists and is configured properly
5457
3. Run `make run` to build the binary and run it in foreground mode
5558

56-
make run
59+
```sh
60+
make run
61+
```
5762
4. To stop the service press `Ctrl+C` (or send `SIGINT`, `SIGTERM` signal to the process)
5863

5964
### Systemd service
6065
1. Repeat steps 1 and 2 from the previous section
6166
2. Run `make deploy` to build the binary and copy everything where it belongs (see `Makefile` for details), enable and run the service
62-
63-
make deploy
67+
```sh
68+
make deploy
69+
```
6470
3. Run `make status` to check the status of the service
6571

66-
make status
72+
```sh
73+
make status
74+
```
6775

6876
Log files are located at `/var/log/zoomrs.log` and `/var/log/zoomrs.err` by default.
6977

7078
### Docker container
7179
1. Clone the repository from GitHub
7280

73-
git clone https://github.com/parMaster/zoomrs.git
81+
```sh
82+
git clone https://github.com/parMaster/zoomrs.git
83+
```
7484

7585
2. Make sure `config/config.yml` exists and is configured properly
7686
3. Check configuration parameters in Dockerfile and docker-compose.yml
7787
4. Build and run container
7888

79-
docker compose up -d
89+
```sh
90+
docker compose up -d
91+
```
8092

8193
## Usage
8294
### Web frontend
8395
Web frontend is available at `http://localhost:8099` by default. You can change the port in the configuration file (`server.listen` parameter).
8496

8597
### Web frontend Pages
8698

87-
#### GET `/`
99+
```http
100+
GET `/`
101+
```
88102
Displays the list of recordings. Each recording has a link to share (view) it. Recordings are sorted by date in descending order. Login is required to view the list. Google OAuth is used for authentication. Access is restricted to users with email addresses from the list specified in the configuration file (see `server.managers`).
89103

90104
Share button is available for each recording, it generates a link to view the recording. Share link looks like:
91105

92-
#### GET `/watch/834d0992ad0d632cf6c3174b975cb5e5?uuid=kzbiTyvQQp2fW6biu8Vy%2BQ%3D%3D`
106+
```http
107+
GET `/watch/834d0992ad0d632cf6c3174b975cb5e5?uuid=kzbiTyvQQp2fW6biu8Vy%2BQ%3D%3D`
108+
```
93109
Displays the page with the meeting title and player to watch the recording. Simple controls besides the embeded player is providing are available.
94110

95111
## API
@@ -210,17 +226,23 @@ Response when some meetings are not loaded:
210226
Zoomrs comes with a CLI tool to trash/delete recordings from Zoom Cloud. It is useful when running miltiple servers and you want to delete recordings from Zoom Cloud only after all servers have downloaded them. CLI tool is located at `cmd/cli/main.go`. Run `make` to build it and put to `dist/zoomrs-cli`.
211227
It can be run like this:
212228

213-
go run ./cmd/cli --cmd check
229+
```sh
230+
go run ./cmd/cli --cmd check
231+
```
214232

215233
or like this:
216234

217-
./dist/zoomrs-cli --cmd check
235+
```sh
236+
./dist/zoomrs-cli --cmd check
237+
```
218238

219239
Available commands:
220240
- `check` - checks the consistency of the repository: if all recordings are downloaded and if all downloaded recordings are present on the disk, also the size of each recording file is checked. Run this command periodically to make sure everything is OK.
221241
Run it like this:
222242

223-
./dist/zoomrs-cli --cmd check
243+
```sh
244+
./dist/zoomrs-cli --cmd check
245+
```
224246
Example output:
225247
```
226248
2023/06/19 17:15:01 [INFO] starting CheckConsistency
@@ -229,29 +251,35 @@ Run it like this:
229251
```
230252
- `trash` - trashes recordings from Zoom Cloud. Run it like this:
231253

232-
./zoomrs-cli --dbg --cmd trash --trash 2
254+
```sh
255+
./zoomrs-cli --dbg --cmd trash --trash 2
256+
```
233257

234258
where `2` is 2 days before today, so all the recordings from the bay before yesterday will be trashed. This is designed this way to run it as a cron job every day. Cron job line example:
235-
236-
00 10 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --cmd trash --trash 2 --config ../config/config_cli.yml >> /var/log/cron.log 2>&1
259+
```sh
260+
00 10 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --cmd trash --trash 2 --config ../config/config_cli.yml >> /var/log/cron.log 2>&1
261+
```
237262

238263
will trash all recordings from the day before yesterday every day at 10:00 AM. `--config` option is used to specify the path to the configuration file. `--dbg` option can be used to enable debug logging. Logs are written to stdout, and redirected to `/var/log/cron.log` in the example above.
239264

240265
- `cloudcap` - trims recordings from Zoom Cloud to avoid exceeding the storage limit. Leaves `Client.CloudCapacityHardLimit` bytes of the most recent recordings (review the value in config before running!), trashes the rest. Cron job line to run it every day at 5:30 AM (don't mind the paths, they are specific to my setup, use your own):
241-
242-
30 05 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --dbg --cmd cloudcap --config ../config/config_cli.yml >> /var/log/cron.log 2>&1
243-
266+
```sh
267+
30 05 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --dbg --cmd cloudcap --config ../config/config_cli.yml >> /var/log/cron.log 2>&1
268+
```
244269
- `sync` - syncs recordings from Zoom Cloud. Run it like this:
245-
246-
./zoomrs-cli --dbg --cmd sync --days 1
270+
```sh
271+
./zoomrs-cli --dbg --cmd sync --days 1
272+
```
247273

248274
`--days` parameter used with the value of `1` to sync all the yesterday recordings (1 day before today). This is designed this way to run it as a cron job. Cron job line example:
249-
250-
00 3 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --cmd sync --days 1 --config ../config/config_cli.yml >> /var/log/cron.log 2>&1
275+
```sh
276+
00 03 * * * cd $HOME/go/src/zoomrs/dist && ./zoomrs-cli --cmd sync --days 1 --config ../config/config_cli.yml >> /var/log/zoomrs.cron.log 2>&1
277+
```
251278

252279
will sync all recordings from the yesterday every day at 3:00 AM. `--config` option is used to specify the path to the configuration file. `--dbg` option can be used to enable debug logging. Logs are written to stdout, and redirected to `/var/log/cron.log` in the example above.
253280

254-
_* Note that CLI tool uses different configuration file then the server with different Zoom API credentials to avoid spoiling services's auth token when running CLI. Also, running multi-server setup you want to sync recordings only after all servers have downloaded them, so you need to run CLI tool on one of the servers, allow syncing records in CLI config and deny it in servers configs._
281+
> [!NOTE] Using multiple credentials
282+
> CLI tool uses different configuration file then the server with different Zoom API credentials to avoid spoiling services's auth token when running CLI. Also, running multi-server setup you want to sync recordings only after all servers have downloaded them, so you need to run CLI tool on one of the servers, allow syncing records in CLI config and deny it in servers configs.
255283
256284
## Running multiple instances
257285
You can run multiple instances of the service to increase reliability, duplicate downloaded data for redundancy. Each instance should have its own configuration file and its own database file. Each instance should have its own Zoom API credentials. Consider following setup as an example:
@@ -261,10 +289,17 @@ You can run multiple instances of the service to increase reliability, duplicate
261289
- Run the service with `server.sync_job: false` and `server.download_job: false` so it will just host the API. Run downloader with cron job (see `sync` cmd crontab line example in the previous section). This way you can set the time to run the download job
262290
3. Run cleanup job on one of the instances (see `trash` cmd crontab line example in the previous section). Use configuration file that enumerates all the instances in `server.instances` section. This way cleanup job will check all the instances for consistency and trash/delete recordings from Zoom Cloud only if all the instances have downloaded them. Disable deleting and trashing downloaded recordings (`client.trash_downloaded: false` and `client.delete_downloaded: false` in the configuration file) on every other instance but this one.
263291

264-
### Database backup
265-
Backup database file regularly to prevent data loss. See example shell script at `dist/backup_db.sh`. It can be run as a cron job like this:
292+
> [!NOTE] Copy yesterday's recordings from "Main" instance to "Secondary" instance
293+
Secondary instance can run something like this to copy yesterday's recordings from "Main" instance:
294+
```sh
295+
sleep 1s && date && scp -r server.local:/data/`date --date="yesterday" +%Y-%m-%d` /data/ && date
296+
```
266297

267-
# 0 10 * * * sh $HOME/go/src/zoomrs/backup_db.sh
298+
> [!NOTE] Database backup
299+
Backup database file regularly to prevent data loss. See example shell script at `dist/backup_db.sh`. It can be run as a cron job like this:
300+
```sh
301+
0 10 * * * sh $HOME/go/src/zoomrs/backup_db.sh
302+
```
268303

269304
## Contributing
270305
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Check the existing issues to see if your problem is already being discussed or if you're willing to help with one of them. Tests are highly appreciated.
@@ -276,9 +311,9 @@ Pull requests are welcome. For major changes, please open an issue first to disc
276311
If you have any security issue to report, contact project owner directly at [master@parMaster.com.ua](mailto:master@parMaster.com.ua) or use Issues section of this repository.
277312

278313
## Responsibility
279-
The author of this project is not responsible for any damage caused by the use of this software. Use it at your own risk.
314+
The author of this project is not responsible for any damage caused by the use of this software. Use it at your own risk. However, the software is being used in production at least since May 2023 on a number of devices, processing hundreds of GB of data every day and is considered stable.
280315

281316
## Credits
282317
- [lgr](github.com/go-pkgz/lgr) - simple but effective logging package
283318
- [go-sqlite3](github.com/mattn/go-sqlite3) as a database driver
284-
- [go-pkgz/auth](github.com/go-pkgz/auth) - powerful authentication middleware
319+
- [go-pkgz/auth](github.com/go-pkgz/auth) - powerful authentication middleware

dist/README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,43 @@ Example self-documented configuration file `config.yml` included.
1313
### Foreground mode
1414
Plain and simple `./zoomrs` should load a default `config.yml` file and launch if everything is configured correctly:
1515

16-
./zoomrs
16+
```sh
17+
./zoomrs
18+
```
1719

1820
or specify config file and debug mode:
1921

20-
./zoomrs --config custom_config.yml --dbg
22+
```sh
23+
./zoomrs --config custom_config.yml --dbg
24+
```
2125

2226
To stop the service press `Ctrl+C` (or send `SIGINT`, `SIGTERM` signal to the process)
2327

2428
### Systemd service
2529
1. Configure the service and make sure it runs in foreground mode (see above).
2630
2. Run `make deploy` to build the binary and copy everything where it belongs (see `Makefile` and `zoomrs.service` for details), enable and run the service
2731

28-
make deploy
32+
```sh
33+
make deploy
34+
```
2935

3036
3. Run `make status` to check the status of the service
3137

32-
make status
38+
```sh
39+
make status
40+
```
3341

3442
Log files are located at `/var/log/zoomrs.log` and `/var/log/zoomrs.err` by default.
3543

3644
### CLI Tool
3745
CLI tool command example:
3846

39-
./zoomrs-cli --cmd check --config config.yml
47+
```sh
48+
./zoomrs-cli --cmd check --config config.yml
49+
```
4050

4151
Refer to the [README](https://github.com/parmaster/zoomrs#readme) in main repository to learn more about the CLI tool and its commands.
4252

4353
## Responsibility
44-
The author of this project is not responsible for any damage caused by the use of this software. Use it at your own risk.
54+
The author of this project is not responsible for any damage caused by the use of this software. Use it at your own risk. However, the software is being used in production at least since May 2023 on a number of devices, processing hundreds of GB of data every day and is considered stable.
55+
If you find a bug or have a feature request, please [open an issue](https://github.com/parMaster/zoomrs/issues/new/choose) on GitHub. Thank you!

0 commit comments

Comments
 (0)