.vscode | ||
libs | ||
.gitignore | ||
.nvmrc | ||
example_config.json | ||
LICENSE.md | ||
package-lock.json | ||
package.json | ||
README.md | ||
remex.js | ||
remex.service |
remex
execute local commands remotely via http requests
requirements
- node.js
- 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
-
enable and start remex as a systemd-service
systemctl enable --now remex
configuration
configuration is done entirely within the file config.json
.
server: [object]
- address: [string] server address to listen on (
0.0.0.0
to listen on all interfaces) - port: [number] port to listen on
log: [object]
- level: [string] verbosity of the log; either
debug
,info
,warning
orerror
- timestamp: [string] format string for the timestamp; review moment.js for further information
api: [object-array]
- url: [string] url of the endpoint
- type: [string] http request method for the endpoint (either
get
orpost
) - command: [string] command / path to script to execute
- args: [string-array] arguments to pass to the executed command
- 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 torestart
the command will be killed (if active) and started again; if set totoggle
the command will either be killed if active or started if not active