ood
Node.js process manager and reverse proxy
Goal
An average sysadmin who is not familiar with node.js, should be able to install and maintain a working system that serves web pages or apps written in node.js, in a safe and reliable way. It should be possible to install, update or restart running applications within only a few seconds with zero downtime.
Features
- System service
- Brings up apps on reboot if they were started
- Restarts your apps if they crash
- Minimal configuration
- Apps are easily scalable
- Automatic load-balancing between workers
- Optionally set UID, GID and env for each separate app
- One CLI to rule them all
- Make ood serving a new app with one single command
- Restart apps with 0s downtime
- Autocomplete (with intelligent app name suggestions)
- Allow specific users to run the ood command
- Show or change system or app configuration
- Check the health of apps and workers
- Read log files
- Manage ssl certificates
- Reverse proxy
- Aliases and redirects
- Scalable
- HTTPS with SNI
- Import existing certificates
- Wildcard certificate support
- Free certificates from letsencrypt.org
- A single command and your work is done
- Automatic renewal
- Extendable
- API
- Module system
- Tested with node v0.12, v4.2, v4.3, v5.5 and v5.6 on
- Ubuntu 14.04
- Ubuntu 15.04
- Ubuntu 15.10
- Debian 8.2
- CentOS 7.2
Roadmap
2016-01-18 ✔ initial release (without proxy)
2016-01-22 ✔ reverse proxy
2016-01-24 ✔ redirects
2016-01-29 ✔ https support
2016-01-31 ✔ ssl --auto (Let's Encrypt)
2016-02-01 ✔ shell autocomplete
2016-02-05 ✔ container states (handle crashing apps)
2016-02-07 ✔ logging for apps
2016-02-12 ✔ monitoring sensors, load-balancing probe
2016-02-14 ✔ api client, module system
2016-02-16 ✔ wildcard certificate support
2016-02-18 ✔ access logs
2016-02-21 ✔ first stable release candidate
2016-02-27 ✔ v1.0.0 (stable)
2016-02-28 basic web administration interface (module)
Next steps
- Loads of tests
- Documentation
- Improve module system
- Root permission / drop privileges
- Official modules (whitelist)
- Install routines for modules
- util.prompt
- Autorestart on memory usage or uptime
- Modules
- Web administration interface
- Improve ood-monitoring
- Watch files and restart app on change
- PKCS#12 support (.pfx)
Installing ood
sudo npm install -g ood
sudo ood install
Tutorials
CLI
Usage: ood [command]
Commands:
init [options] <app> Initialise a new app
start <app> Start an app
stop <app> Stop a running app
restart <app> Restart a running app
scale <app> <instances> Kill or fork new worker instances
redirect [options] <host> [target] Set http redirect for a hostname
status Show status of all apps
status [app] Show status of a running app
config [options] Modify or show configuration
ssl [options] Manage ssl certificates and keys
log [options] Read log files
mod [options] Manage ood modules
install Install and start system service
help [command] Show help
Examples:
ood help init
ood help config
ood init example.com --alias www.example.com
ood start example.com
ood scale example.com 4
ood stop testapp
ood status
ood redirect www.example.com https://example.com
ood redirect http://example.com https://example.com
ood redirect --delete www.example.com
ood config --get
ood config --get httpPort
ood config --set httpsPort 443
ood config --get --app example.com
ood config -ga example.com
ood config -a example.com -g port
ood config -a testapp -s cwd /home/test/testapp
ood ssl --auto example.com --email me@example.com --agree
ood ssl --auto example.org # (If you supplied --email before)
ood ssl --list
Tests
Run tests with npm test
or generate coverage reports with npm run test-cov
.