Runs shell scripts when syncthing folders get updated. 🦉🕗
Go to file
Lynn Smeria 5276accf6e 0.4.0 2022-11-24 14:41:05 +01:00
.gitignore Initial commit 2020-03-18 20:01:47 +02:00
.npmignore Add .npmignore 2020-03-18 20:04:14 +02:00
LICENSE Create LICENSE 2020-03-18 20:01:47 +02:00
README.md Drop character restriction from readme 2022-11-24 14:40:40 +01:00
api.js URL from env 2021-04-18 01:42:48 +02:00
env.js function to read from env 2021-04-18 01:41:41 +02:00
hooks.js Remove 11-character requirement on folder names. Fixes #1. 2021-11-05 00:37:33 -07:00
index.js Hide scheduling message when running hook 2020-03-18 20:51:21 +02:00
package.json 0.4.0 2022-11-24 14:41:05 +01:00
yarn.lock Bump normalize-url from 4.5.0 to 4.5.1 2021-06-11 02:04:26 +00:00

README.md

syncthing-hooks

Run shell scripts via event hook files (similar to Git hooks) when changes are detected in a Syncthing folder.

Prerequisites

Node.js >= 10

Installation

npm i -g syncthing-hooks

Usage

You can simply run the watcher process via:

API_KEY=mykey syncthing-hooks

Don't forget to substitute mykey with your syncthing API key, which can be found in the settings in the GUI.

If Syncthing runs on another host or listens to a non-default port, you can specify an URL by using ST_URL. Note that this URL has to include the protocol, hostname, port and path, e.g.:

ST_URL=http://<ip>:8384/rest/events

It won't install itself as a daemon by default, however. In order to run it as a service, it is recommended to install pm2:

npm i -g pm2

You can then register it as a daemon via:

pm2 start "API_KEY=mykey syncthing-hooks" --name sthooks

To create the daemon automatically on startup, consult this documentation.

You can follow the output of your hooks by using:

pm2 logs

Hooks

Create a folder in your home directory called .syncthing-hooks. A different directory can be set using ST_HOOK_ROOT. Each hook is a file with the following naming scheme:

folder-name-delay

The folder name is the 11 character unique string found in the syncthing GUI. The delay is a string (anything parseable by the ms module) indicating the idle time after an event, so that hooks aren't executed multiple times on successive changes in a short interval.

An example: a script at the location ~/.syncthing-hooks/night-owlzz-5m will be executed five minutes after the most recent event in the folder with the identifier night-owlzz.

Don't forget to chmod +x the script.