| .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.0to listen on all interfaces) - port: [number] port to listen on
log: [object]
- level: [string] verbosity of the log; either
debug,info,warningorerror - 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
getorpost) - 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
truethe command can not be executed again until it has finished; if set torestartthe command will be killed (if active) and started again; if set totogglethe command will either be killed if active or started if not active