{"id":20874514,"url":"https://github.com/oothkoo/supervizer","last_synced_at":"2025-04-08T17:17:53.242Z","repository":{"id":9175932,"uuid":"10976450","full_name":"oOthkOo/supervizer","owner":"oOthkOo","description":"The most simple NodeJS application manager with RESTful API.","archived":false,"fork":false,"pushed_at":"2025-01-17T15:32:21.000Z","size":378,"stargazers_count":296,"open_issues_count":1,"forks_count":21,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-01T13:12:20.813Z","etag":null,"topics":["application-management","cli","cluster","clustering","fault-tolerant","forever","javascript","management","master","monitoring","pm2","process-configuration","process-manager","server","supervisord","sysadmin","systemd","sysvinit","tools","upstart"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oOthkOo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-06-26T19:07:17.000Z","updated_at":"2025-01-17T15:32:22.000Z","dependencies_parsed_at":"2025-03-25T04:36:23.396Z","dependency_job_id":null,"html_url":"https://github.com/oOthkOo/supervizer","commit_stats":{"total_commits":100,"total_committers":6,"mean_commits":"16.666666666666668","dds":"0.31999999999999995","last_synced_commit":"289f9f1f2a9f8c8ae07c35f5ee4fa4cddab98b9a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oOthkOo%2Fsupervizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oOthkOo%2Fsupervizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oOthkOo%2Fsupervizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oOthkOo%2Fsupervizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oOthkOo","download_url":"https://codeload.github.com/oOthkOo/supervizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247888562,"owners_count":21013001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-management","cli","cluster","clustering","fault-tolerant","forever","javascript","management","master","monitoring","pm2","process-configuration","process-manager","server","supervisord","sysadmin","systemd","sysvinit","tools","upstart"],"created_at":"2024-11-18T06:33:27.681Z","updated_at":"2025-04-08T17:17:53.220Z","avatar_url":"https://github.com/oOthkOo.png","language":"JavaScript","readme":"Supervizer ![Travis Status](https://travis-ci.org/oOthkOo/supervizer.png) \n========================\n[![Stars](https://img.shields.io/github/stars/oOthkOo/supervizer.svg?style=for-the-badge)](https://github.com/oOthkOo/supervizer)\n[![Latest Stable Version](https://img.shields.io/npm/v/supervizer.svg?style=for-the-badge)](https://www.npmjs.com/package/supervizer)\n[![NPM Downloads](https://img.shields.io/npm/dt/supervizer.svg?style=for-the-badge)](https://www.npmjs.com/package/supervizer)\n[![NPM Downloads](https://img.shields.io/npm/dm/supervizer.svg?style=for-the-badge)](https://www.npmjs.com/package/supervizer)\n\nA NodeJS manager to spawn/stop/manage node application.\n\n``` sh\n  supervizer list\n```\n![List command](https://raw.github.com/oOthkOo/supervizer/master/screenshots/supervizer-list.png)\n``` sh\n  supervizer monit\n```\n![Monit command](https://raw.github.com/oOthkOo/supervizer/master/screenshots/supervizer-monit.png)\n``` sh\n  supervizer get myApp\n```\n![Get command](https://raw.github.com/oOthkOo/supervizer/master/screenshots/supervizer-get.png)\n``` sh\n  supervizer-master\n```\n![Get command](https://raw.github.com/oOthkOo/supervizer/master/screenshots/supervizer-master-log.png)\n\nFeatures\n-----\n * Start/Stop/Restart a node application\n * Grouping applications\n * Start/Stop/Restart a application group\n * Hot change application parameters (env, host, port, logs) in realtime ;-)\n * Keep alive/Restart a application when it crash\n * Monitoring application resources (restart count, uptime, memory, cpu etc..)\n * Watch directories/files changes to restart application\n * Full RESTfull API management via HTTP/S\n * Application LOG files process management\n * Application PID files process management\n * User execution process management by uid:gid\n * Load/Save all application configurations from/to JSON config file\n\nInstallation (module)\n-----\nTo install node supervizer module from npm repository :\n``` sh\n  npm install -g supervizer\n```\nOr from source:\n``` sh\n  git clone git://github.com/oOthkOo/supervizer.git\n  cd supervizer\n  npm link -g\n```\nAnd run this command to start supervizer master server :\n\n``` sh\n  supervizer-server\n```\nInstallation (master)\n-----\nTo install supervizer master as a daemon/service :\n\n  On Linux :\n\n  With Sysvinit - (https://help.ubuntu.com/community/UbuntuBootupHowto).\u003cbr /\u003e\n  With Upstart - (http://upstart.ubuntu.com/getting-started.html).\u003cbr /\u003e\n  With Systemd - (https://wiki.ubuntu.com/SystemdForUpstartUsers).\n\nConfiguration (apps)\n-----\nTo make your nodeJS Application fully compatible with Supervizer, you must follow this code example to retrieve host and port parameters :\n``` js\nvar host = process.argv[2] || '0.0.0.0';\nvar port = process.argv[3] || '5000';\n```\nFor example, if you use expressjs framework :\n``` js\nvar express = require('express');\nvar server = express();\n\nserver.use(express.static(__dirname + '/public'));\nserver.use(express.logger());\n\nserver.get('/', function(req, res) {  \t\n\tres.end('Hello word!');\n});\n\nserver.get('*', function(req, res) {\n  \tres.send('Not Found!', 404);\n});\n\nserver.use(function(err, req, res, next) {  \t\n  \tres.send(500, 'Something broke!');\n\tconsole.error(err.stack);\n});\n\nvar host = process.argv[2] || '0.0.0.0';\nvar port = process.argv[3] || '5000';\n\nserver.listen(port, host);\nconsole.log('Listening on port ' + port);\n```\nUsage (Summary)\n-----\nAdd your application :\n``` sh\n  supervizer add --name myApp --group myGroup --script /path/to/script.js\n  --host localhost --port 3000 --watch /path/to/watch --log /path/to/logfile.log\n```\nStart your application :\n``` sh\n  supervizer start --name myApp\n```\nStop your application :\n``` sh\n  supervizer stop --name myApp\n```\nUpdate your application parameters :\n``` sh\n  supervizer set myApp --port 3001\n```\nSave all your applications :\n``` sh\n  supervizer save --config /path/to/apps.json\n```\nLoad all your applications :\n``` sh\n  supervizer load --config /path/to/apps.json\n```\nStart all your applications :\n``` sh\n  supervizer startAll  \n```\nStart all applications by group:\n``` sh\n  supervizer startAll --group myGroup\n```\nDisable your application :\n``` sh\n  supervizer disable myApp\n```\nSecurity (Authentication)\n-----\nEnable authentication mode :\n``` sh\n  supervizer secure enable --auth myNewUserName:myNewPassword\n```\nRestart your application with authentication :\n``` sh\n  supervizer restart --name myApp --auth myUserName:myPassword\n```\nDisable authentication mode :\n``` sh\n  supervizer secure disable --auth myUserName:myPassword\n```\nUpdate your credentials :\n``` sh\n  supervizer secure disable --auth myOldUserName:myOldPassword\n  supervizer secure enable --auth myNewUserName:myNewPassword\n```\nUsage (Complete)\n-----\n``` sh\n  supervizer [command] \u003coptions\u003e\n\n  Commands:\n\n    install                install supervizer as daemon\n    uninstall              uninstall supervizer as daemon\n    load                   load all applications from a JSON config file\n    save                   save all applications to a JSON config file\n    add                    add an application\n    remove                 remove an application\n    start                  start an application\n    startAll               start all applications\n    stop                   stop an application\n    stopAll                stop all applications\n    restart                restart an application\n    restartAll             restart all applications\n    list                   list all applications\n    monit                  monitor all applications\n    secure                 create/update/remove security authentication\n    enable \u003cname\u003e          enable an application\n    enableAll              enable all applications\n    disable \u003cname\u003e         disable an application\n    disableAll             disable all applications\n    set \u003cname\u003e             setting application property value\n    get \u003cname\u003e             getting application properties values\n\n  Options:\n\n    -h, --help                  output usage information\n    -V, --version               output the version number\n    -v --verbose                display verbose data\n    -n --name \u003cstring\u003e          specify application name\n    -z --env \u003cstring\u003e           specify comma separated environment variables\n    -x --params \u003cstring\u003e        specify node command line extra parameters\n    -r --run \u003cuser:group\u003e       specify user uid:gid to run application\n    -g --group \u003cstring\u003e         specify application group\n    -s --script \u003cpath\u003e          specify application main script\n    -l --log \u003cfile\u003e             specify application log output file\n    -t --pid \u003cfile\u003e             specify application pid file\n    -k --keep \u003cyes/no\u003e          keep alive application (default:yes)\n    -t --attempt \u003cnumber\u003e       max restart to keep alive (default:3)\n    -w --watch \u003cpath\u003e           specify path to watch\n    -e --exclude \u003cregex,regex\u003e  specify regexes to exclude paths\n    -h --host \u003caddress\u003e         specify address to bind\n    -p --port \u003cport\u003e            specify port to bind\n    -a --auth \u003cuser:password\u003e   specify user/password to use\n    -c --config \u003cfile\u003e          specify JSON config file to load/save\n```\n\nAPI endpoints\n-----\nSupervizer master server has an RESTfull HTTP interface wich allow you to control it remotely ;-)\n\n| COMMANDs        | VERBs       | URIs            | Descriptions                      |\n| ----------------|-------------|-----------------|-----------------------------------|   \t\t\t\t\t\t\n|\t\t\t\t          | GET   \t\t  | /\t\t            | Show server banner                |\n| load\t\t        |\tPOST\t \t    | /config/load\t\t| Load all applications from file   |\n| save\t\t        |\tPOST\t    \t| /config/save\t\t| Save all applications to file     |\n| add\t\t          |\tPUT\t\t      | /apps\t\t\t\t    | Add an application to run         |\n| remove\t        |\tDELETE\t    |\t/apps\t\t\t\t    | Stop and Remove an application    |\n| start\t\t        | POST\t\t    | /app/start\t\t\t| Start an application              |\n| startAll        |\tPOST\t\t    | /apps/start\t\t  | Start all applications            |\n| stop            |\tPOST\t\t    | /app/stop\t\t    | Stop an application               |\n| stopAll\t\t      | POST\t\t    | /apps/stop\t\t\t| Stop all applications             |\n| restart\t\t      | POST\t     \t| /app/restart\t  | Restart an application            |\n| restartAll\t    | POST\t    \t| /apps/restart\t  | Restart all applications          |\n| list\t\t\t      | POST\t    \t| /apps/list\t\t  |\tList all applications             |\n| monit\t\t        | POST\t\t    | /apps/monit     |\tMonitor all applications          |\n| list            | POST        | /secure         | enable/disable authentication     |\n| enable          | POST        | /app/enable     | Enable an application             |\n| enableAll       | POST        | /apps/enable    | Enable all applications           |\n| disable         | POST        | /app/disable    | Disable an application            |\n| disableAll      | POST        | /apps/disable   | Disable all applications          |\n| set\t\t\t        | POST\t\t    | /app\t\t\t      |\tSet an application property\t\t    |\n| get\t\t\t        | GET\t\t      | /app\t\t\t      |\tGet an application property       |\n\nTODOs (commands)\n-----\nTheses commands actually doesn't work, but you can install easily\nSupervizer master as a service by Systemd, Upstart, Sysvinit or other.\n\n    * install\n    * uninstall\n\nDonations\n-----\n\n:heart: Donations are always welcome :heart:.\n\nCoins | Symbols | Addresses\n--- | --- | ---\n\u003cimg width=\"32\" src=\"https://github.com/oOthkOo/supervizer/blob/master/pictures/btc.svg\" alt=\"Bitcoin\"/\u003e | BTC | 3B52fbzNFQTaKZxWf5GrCUsASD2UP8na4A\n\u003cimg width=\"32\" src=\"https://github.com/oOthkOo/supervizer/blob/master/pictures/eth.svg\" alt=\"Ethereum\"/\u003e | ETH | 0x1C389f1f85Cdb3C2996b83fAc87E496A80698B7C\n\u003cimg width=\"32\" src=\"https://github.com/oOthkOo/supervizer/blob/master/pictures/sol.svg\" alt=\"Solana\"/\u003e | SOL | F14pWhGjGLcCF8RMk4JhbK2kD49iBBwa9KFygRJo54Fm\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foothkoo%2Fsupervizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foothkoo%2Fsupervizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foothkoo%2Fsupervizer/lists"}