-
-
Notifications
You must be signed in to change notification settings - Fork 574
Installation
NOTE: If you are installing on an Raspberry Pi, start with the dedicated Raspberry Pi Setup Guide
We have a dedicated setup guide for setting up Node.js, NVM, CNC.js, Autostart with pm2, all tested on the Raspberry Pi. Go to Raspberry Pi Setup Guide System Setup & Preparation OR https://cnc.js.org/docs/rpi-setup-guide/ for more details.
NOTE: If you are installing on an Raspberry Pi, use dedicated Raspberry Pi Setup Guide, not the following.
Node.js 10 or higher is recommended. You can install Node Version Manager to manage multiple Node.js versions. If you have git
installed, just clone the nvm
repo, and check out the latest version:
git clone https://github.com/creationix/nvm.git ~/.nvm
cd ~/.nvm
git checkout `git describe --abbrev=0 --tags`
cd ..
. ~/.nvm/nvm.sh
Add these lines to your ~/.bash_profile
, ~/.bashrc
, or ~/.profile
file to have it automatically sourced upon login:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Once installed, you can select Node.js versions with:
nvm install 10
nvm use 10
It's recommended that you upgrade npm to the latest version. To upgrade, run:
npm install npm@latest -g
Install cncjs as a non-root user, or the serialport module may not install correctly on some platforms like Raspberry Pi.
npm install -g cncjs
If you're going to use sudo or root to install cncjs, you need to specify the --unsafe-perm
option to run npm as the root account.
sudo npm install --unsafe-perm -g cncjs
It's recommended that you run Raspbian Jessie on the RPi2 or RPi3. For Raspbian Wheezy, be sure to install gcc/g++ 4.8 before npm install.
Check out https://cnc.js.org/docs/installation/ for other installation methods.
Run npm install -g cncjs@latest
to install the latest version. To determine the version, use cncjs -V
.
Run cncjs
to start the server, and visit http://yourhostname:8000/
to view the web interface. Pass --help
to cncjs
for more options.
pi@rpi3$ cncjs -h
Usage: cncjs [options]
Options:
-h, --help output usage information
-V, --version output the version number
-p, --port set listen port (default: 8000)
-l, --host set listen address or hostname (default: 0.0.0.0)
-b, --backlog set listen backlog (default: 511)
-c, --config <filename> set config file (default: ~/.cncrc)
-v, --verbose increase the verbosity level
-m, --mount [<url>:]<path> set the mount point for serving static files (default: /static:static)
-w, --watch-directory <path> watch a directory for changes
--access-token-lifetime <lifetime> access token lifetime in seconds or a time span string (default: 30d)
--allow-remote-access allow remote access to the server
--controller <type> specify CNC controller: Grbl|Smoothie|TinyG|g2core (default: '')
Examples:
$ cnc -vv
$ cnc --mount /pendant:/home/pi/tinyweb
$ cnc --watch-directory /home/pi/watch
$ cnc --access-token-lifetime 60d # e.g. 3600, 30m, 12h, 30d
$ cnc --allow-remote-access
$ cnc --controller Grbl
Instead of passing command line options for --watch-directory
, --access-token-lifetime
, and --allow-remote-access
, you can create a ~/.cncrc
file that contains the following configuration in JSON format:
{
"watchDirectory": "/path/to/dir",
"accessTokenLifetime": "30d",
"allowRemoteAccess": false,
"controller": ""
}
To troubleshoot issues, run:
cncjs -vvv
The configuration file .cncrc contains settings that are equivalent to the cnc command-line options. The configuration file is stored in user's home directory. To find out the actual location of the home directory, do the following:
-
Linux/Mac
echo $HOME
-
Windows
echo %USERPROFILE%
Check out an example configuration file here.
{
"ports": [
{
"path": "/dev/ttyAMA0",
"manufacturer": ""
}
],
"baudrates": [115200, 250000],
"watchDirectory": "/path/to/dir",
"accessTokenLifetime": "30d",
"allowRemoteAccess": false,
"controller": "",
"state": {
"checkForUpdates": true
},
"commands": [
{
"title": "Update (root user)",
"commands": "sudo npm install -g cncjs@latest --unsafe-perm; pkill -a -f cnc"
},
{
"title": "Update (non-root user)",
"commands": "npm install -g cncjs@latest; pkill -a -f cnc"
},
{
"title": "Reboot",
"commands": "sudo /sbin/reboot"
},
{
"title": "Shutdown",
"commands": "sudo /sbin/shutdown"
}
],
"events": [],
"macros": [],
"users": []
}
If you prefer to use Git instead of npm install
, You can create a local clone of the repository on your computer and sync from GitHub. Type the following commands to install and run cncjs
:
git clone https://github.com/cncjs/cncjs.git
cd cncjs
git checkout master
yarn install
yarn build-prod
cd dist/cncjs
yarn install
cd ../..
node bin/cncjs
For running only the generated dist
folder and bin\cncjs
script is required, you can copy this to other drives etc.
To update your local copy with latest changes, use:
git checkout master
git pull origin master
npm install
npm run prepare
./bin/cncjs
This is the fastest method to bring your local copy up-to-date.
Alternatively, you can install and run a Docker image within a Docker container. The first installation may take a long time to complete, but further updates will be much faster.
To install and set up cnc, take the following steps:
Step 1: Enter the following command to retrieve the latest version of the image:
docker pull cncjs/cncjs:latest
Step 2: Use the docker run
command to create the Docker container and run the server, like so:
docker stop cncjs # [optional] stop a running cncjs container
docker rm cncjs # [optional] remove existing cncjs container
docker run --privileged -p 8000:8000 --detach --name cncjs cncjs/cncjs:latest
docker exec -it cncjs /bin/bash # [optional] to get a bash shell in the container
By default a container is not allowed to access any devices, but a "privileged" container is given access to all devices on the host.
Step 3: If everything works fine, you should be able to view the web interface at http://yourhostname:8000/
.
https://hub.docker.com/r/cncjs/cncjs/tags/
If you run into issues and need to restart the Docker container, use the following commands to first stop the Docker application, and then start it up again:
docker stop cncjs
docker start cncjs
To view a list of all containers that are currently running in your Docker environment, use:
docker ps
To view all the images you have pulled into your Docker environment, use:
docker images
To delete containers in your Docker environment, use:
docker rm CONTAINER_ID
To delete images in your Docker environment, use:
docker rmi IMAGE_ID
To view the container in your terminal, use:
docker attach cncjs
To do system cleanup, use:
docker system prune --all
To delete volumes currently not being used by a running or stopped container, use:
docker system prune --all --volumes
Join CNCjs Users Group on Facebook to share your experiences with other people.
Site: https://cnc.js.org
- Introduction
- Installation
- Using Pendants
-
Raspberry Pi Setup Guide
- System Setup & Preparation
- Install Node.js & CNCjs
- Install Node.js via Package Manager (Recommended)
- Install Node.js via Node Version Manager (NVM) (Alternative)
- Install Node.js Manually (Alternative)
- Use PM2 to auto-start CNCjs (Optional)
- Use Port 80 (Optional)
- Maintain
- Additional Setup Options:
- CNCjs UI on Pi - Adventures in PiLand
- Pi with Arduino Due
- Electron App
- User Guide
- Tool Change
- Troubleshooting
-
FAQ
- Forgot your password?
- How can I enable WebGL in my browser?
- Raspberry Pi: Error opening serial port "ttyAMA0"
- Webcam Streaming with Raspberry Pi
- Restream RTSP to M-JPEG
- Connect to an Arduino using WiFi
- Install Native Addons with Node.js v4
- Install Serialport on OS X El Capitan
- Kernel panic issue on macOS Sierra for devices using the CH340G, CH34G or CH34X chipset
- Testing without Arduino board
- Development
- API
- Wiki History
- Resources
- About