2022-02-02 17:09:05 +01:00
# remex
2022-03-18 14:51:01 +01:00
execute local commands remotely via http requests
2022-04-06 10:10:56 +02:00
## requirements
- node.js
- [nvm ](https://github.com/nvm-sh/nvm )
## setup (as root)
- install nvm
- to load nvm restart your terminal or `source ~/.nvm/nvm.sh`
- clone the project (to '/opt/remex')
`git clone https://git.velvettear.de/velvettear/remex.git /opt/remex`
- install and switch to a supported node.js version (automatically done via .nvmrc file)
`nvm install`
- install the required modules
`npm install`
- switch back to your system's default node.js version
`nvm deactivate`
- execute remex
`nvm run remex.js`
## systemd
**for security reasons it is highly recommended to not run remex with root permissions!**
- create a new system user
`useradd -U -r -s /usr/bin/nologin node`
- make your install of nvm available to the new user
`cp -R ~/.nvm /opt/nvm`
`chown -R node /opt/nvm`
- symlink the provided systemd-service file and modify it according to your needs
`ln -s /opt/remex/remex.service /etc/systemd/system/remex.service`
- reload systemd-services
`systemctl daemon-reload`
2022-04-06 10:15:01 +02:00
- enable and start remex as a systemd-service
2022-04-06 10:10:56 +02:00
`systemctl enable --now remex`
2022-03-18 14:51:01 +01:00
## configuration
configuration is done entirely within the file `config.json` .
### server: [*object*]
2022-04-06 10:10:56 +02:00
- address: [*string*] server address to listen on (`0.0.0.0` to listen on all interfaces)
2022-03-18 14:51:01 +01:00
- port: [*number*] port to listen on
### log: [*object*]
- level: [*string*] verbosity of the log; either `debug` , `info` , `warning` or `error`
- timestamp: [*string*] format string for the timestamp; review [moment.js ](https://momentjs.com/docs/#/displaying/format/ ) for further information
2022-04-06 10:10:56 +02:00
### api: [*object-array*]
- url: [*string*] url of the endpoint
- type: [*string*] http request method for the endpoint (either `get` or `post` )
- command: [*string*] command / path to script to execute
2022-03-18 14:51:01 +01:00
- args: [*string-array*] arguments to pass to the executed command
2022-04-06 10:10:56 +02:00
- timeout [*number*] max amount of time in milliseconds until the executed command times out and gets killed
- detach [*boolean*] detach from the executed command
- unique [*boolean* or *string* ] if set to `true` the command can not be executed again until it has finished; if set to `restart` the command will be killed (if active) and started again; if set to `toggle` the command will either be killed if active or started if not active