node.js - Asynchronous Javascript Framework
Shell HTML JavaScript Makefile
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.art
conf.d
overlay
plan
.gitignore
Makefile remove superflous overlay reference Jun 9, 2017
README.rst update changelog and readme Aug 9, 2018
changelog

README.rst

Node.js - Asynchronous Javascript Framework

Node.js is a cross-platform Javascript runtime environment built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, especially for server-side and networking applications. npm, Nodes package ecosystem is the largest ecosystem of open source libraries in the world.

This appliance includes all the standard features in TurnKey Core, and on top of that:

  • Node.js configurations:

    • n Node Version Manager used to install the latest stable version of Node. n supports updating Node to the latest version and switching between multiple older versions:

      # install latest stable node
      n stable
      
      # show all installable versions
      n list
      
      # install specific version
      n <version>
      
    • Support for installing npm packages globally more securely without root or sudo:

      su node
      npm install -g package
      
    • npm now supports security audit (replaces nsp). Provides subcommand fix, to automatically install compatible updates to vulnerable dependencies. E.g.:

      su node
      cd /opt/your-awesome-node-app
      npm audit
      npm audit fix
      
    • systemd PM2 service at /etc/systemd/system/pm2-node.service runs node apps on boot.

      pm2 is a production process manager that helps keep your node apps running, supports clustering and makes it easy to manage node apps:

      # su node
      $ pm2 start --max-memory-restart 500M /opt/yourapp/app.js
      $ pm2 stop tklweb-cp
      $ pm2 list
      
    • Default Nginx configuration template:

      server {
          listen 0.0.0.0:80 default_server;
      
          set $nodeapp_port 8000;
          include /etc/nginx/include/nodejs-proxy;
      }
      
    • npm bash tab-completion:

      $ npm in<tab>
      info     init     install
      
    • hundreds of node example apps:

      $ ls /opt/node-examples
      express_example  node-by-example  nodejsbook.io.examples  practicalnode
      
    • Default web page / control panel at /opt/tklweb-cp is itself an example Node.js app built with express and pug templating.

  • Bundled globally-installed Node.js packages:

    • PM2: production process manager. Configured to start on boot as a systemd service.
    • forever: a simple CLI tool for ensuring a node app runs continuously. Supports watching sources for changes and restarting app.
    • grunt: task runner that automates repetitive tasks like minifcation, compilation, unit testing and linting.
  • Postfix MTA (bound to localhost) to allow sending of email (e.g., password recovery).

  • Webmin modules for configuring Postfix.

Credentials (passwords set at first boot)

  • Webmin, SSH: username root