npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

craydent-deploy

v1.2.0

Published

craydent deploy helper

Downloads

4

Readme

Craydent Deploy 1.2.0

by Clark Inada

This standalone module is a deployment, continuous integration (CI), and log viewing platform for NodeJS written in node. This craydent-deploy can be used in conjunction with craydent-proxy and routes can be automatically added when the package.json of the app to be deployed has a configuration properly set. Craydent-deploy can add git projects and set up CI and allows you to view real-time logs on the server for the added projects. Craydent-deploy needs to creates a webserver and a websocket server and will require assignable ports.

Install

Recommended

$ npm install -g craydent-deploy
$ sudo cdeploy

Once installed and configured, the cdeploy command without arguments will restart the craydent-deploy server. It will also create the following directories:

  • /var/craydent/config/ - stores config files for Craydent applications.
  • /var/craydent/git/ - stores the original/current git repo files.
  • /var/craydent/nodejs/ - stores all the nodejs file for each git repo.
  • /var/craydent/log/ - stores the logs for each project.
  • /var/craydent/backup/ - stores back up copies for each project.
  • /var/craydent/key/ - stores ssh keys created and used by Craydent-deploy.

CLI

Version

$ sudo cdeploy version;

$ sudo cdeploy --version;

$ sudo cdeploy -v;

cdeploy version takes no arguments. This will output the current verion of Craydent Deploy.

Initialize

Usage with arguments (these are defaults or variables) to initialize

$ sudo cdeploy 'prod' 4900 4800 admin admin /var/craydent/key/master_id_rsa.pub '' '{{[email protected]:craydent/Craydent-Deploy.git or skip}}' '{{Craydent-Deploy}}' 'yes' 'yes' '{{http://www.example.com}}' '{{gituser}}' '{{gitpassword}}' '{{mongoURI}}' '{{amzaccessid:amzaccesssecret}}' '{{smtp}}' '{{senderemail}}'

$ sudo cdeploy -e 'prod' -s 4900 -h 4800 -u admin -p admin -k /var/craydent/key/master_id_rsa.pub -m '' -a '{{[email protected]:craydent/Craydent-Deploy.git or skip}}' -n '{{Craydent-Deploy}}' -w 'yes' -r 'yes' -f '{{http://www.example.com}}' -g '{{gituser}}' -i '{{gitpassword}}' -b '{{mongoURI}}' -z '{{amzaccessid:amzaccesssecret}}' -o '{{smtp}}' -d '{{senderemail}}'

$ sudo cdeploy --environment 'prod' --socketport 4900 --hostport 4800 --httpuser admin --httppassword admin --sshkey /var/craydent/key/master_id_rsa.pub --email '' --gitaddress '{{[email protected]:craydent/Craydent-Deploy.git or skip}}' --name '{{Craydent-Deploy}}' --use-webhook 'yes' --sshkey-exists 'yes' --fqdn '{{http://www.example.com}}' --gituser '{{gituser}}' --gitpassword '{{gitpassword}}' --mongo '{{mongoURI}}' --amazon '{{amzaccessid:amzaccesssecret}}' --smtp '{{smtp}}' --sender '{{senderemail}}'

cdeploy initialization can take 18 arguments. When arguments are missing, the CLI will ask a series of questions to obtain the missing arguments.

  1. env tier - dev, stg, prod or custom name (-e,--environment).
  2. socket port - port the websocket server will listen on (-s,--socketport).
  3. http port - port the webserver server will listen on (-h,--hostport).
  4. http auth username - username to login with to access the deploy UI (HTTP AUTH) (-u,--httpuser).
  5. http auth password - password to login with to access the deploy UI (HTTP AUTH) (-p,--httppassword).
  6. ssh key - path to ssh key or 'create' to create a new key (-k,--sshkey).
  7. email - email to send notifications (-m,--email).
  8. git url - first project to add from a git repo or 'skip' to skip this step (-a,--gitaddress).
  9. project name - name of the git project (-n,--name).
  10. yes/no to add webhooks - flag to enable webhook for continuous integration (-w,--use-webhook).
  11. yes/no if the ssh key is already registered in git - if yes, continuous integration will use the key. if no the key will be added to the git repo (-r,--sshkey-exists).
  12. the domain pointing to this server - the fully qualified domain name or IP for this server (-f,--fqdn).
  13. git username - username for the git user able to add webhooks and keys. (this is not stored and used one time) (-g,--gituser).
  14. git password - password for the git user able to add webhooks and keys. (this is not stored and used one time) (-i,--gitpassword).
  15. mongo - MongoDB connection string to be used for logging (-b,--mongo).
  16. aws credentials - Credentials for AWS SES which must be in the format "accessKeyId:secretAccessKey" (-z,--amazon).
  17. smtp - SMTP server url to be used to send emails (-o,--smtp).
  18. sender - Email of the the sender when sending emails via Craydent Deploy (-d,--sender).

Reset

$ sudo cdeploy reset

cdeploy reset takes no arguments. This will remove configuration/log files and reset the state to a freshly installed state.

Uninstall

$ sudo cdeploy uninstall

cdeploy uninstall takes no arguments. This will remove configuration/log files and and uninstalled the global module but leave all projects that were added.

Add Project

Usage with arguments (variables) to add projects

$ sudo cdeploy add '{{[email protected]:craydent/Craydent-Deploy.git}}' '{{Craydent-Deploy}}' 'yes' 'yes' '{{gituser}}' '{{gitpassword}}' /var/craydent/key/master_id_rsa.pub

$ sudo cdeploy add -a '{{[email protected]:craydent/Craydent-Deploy.git}}' -n '{{Craydent-Deploy}}' -w 'yes' -r 'yes' -g '{{gituser}}' -i '{{gitpassword}}' -k /var/craydent/key/master_id_rsa.pub

$ sudo cdeploy add --gitaddress '{{[email protected]:craydent/Craydent-Deploy.git}}' --name '{{Craydent-Deploy}}' --use-webhook 'yes' --use-sshkey 'yes' --gituser '{{gituser}}' --gitpassword '{{gitpassword}}' --sshkey /var/craydent/key/master_id_rsa.pub

cdeploy add can take 8 arguments. When arguments are missing, the CLI will ask a series of questions to obtain the missing arguments.

  1. git url - first project to add from a git repo (-a,--gitaddress).
  2. project name - name of the git project (-n,--name).
  3. yes/no to add webhooks - flag to enable webhook for continuous integration (-w,--use-webhook).
  4. yes/no if the ssh key is already registered in git - if yes, continuous integration will use the key. if no the key will be added to the git repo (-r,--use-sshkey).
  5. git username - username for the git user able to add webhooks and keys. (this is not stored and used one time) (-g,--gituser).
  6. git password - password for the git user able to add webhooks and keys. (this is not stored and used one time) (-i,--gitpassword).
  7. ssh key name to add as a deploy key. (default: is master_id_rsa created when Craydent Deploy was initialized) (-k,--sshkey).

Project Actions

Usage with arguments (variables) to manually run actions against projects Available actions:

  • backup - Manually create a back up of the project
  • build - Build will perform a backup, pull, npminstall, restart, and sync
  • npminstall - Performs a fresh npm install on the project
  • pull - Performs a git pull on the project
  • pullrestart - Performs a pull and restart
  • pullsync - Performs a pull and sync
  • restart - Performs a stop and start
  • rm - Removes a project from Craydent Deploy and all files (Backup is performed before removing and if there are Craydent Proxy routes, they will be removed as well).
  • start - Performs a nohup node on the main NodeJS file
  • stop - Kills the process of the project
  • sync - Sync performs an rsync on the configured source to destination (typically used when your node application is a web application with a NodeJS backend)
$ sudo cdeploy backup '{{Project Name}}'

$ sudo cdeploy backup -n '{{Project Name}}'

$ sudo cdeploy backup --name '{{Project Name}}'
$ sudo cdeploy build '{{Project Name}}'

$ sudo cdeploy build -n '{{Project Name}}'

$ sudo cdeploy build --name '{{Project Name}}'
$ sudo cdeploy npminstall '{{Project Name}}'

$ sudo cdeploy npminstall -n '{{Project Name}}'

$ sudo cdeploy npminstall --name '{{Project Name}}'
$ sudo cdeploy pull '{{Project Name}}'

$ sudo cdeploy pull -n '{{Project Name}}'

$ sudo cdeploy pull --name '{{Project Name}}'
$ sudo cdeploy pullrestart '{{Project Name}}'

$ sudo cdeploy pullrestart -n '{{Project Name}}'

$ sudo cdeploy pullrestart --name '{{Project Name}}'
$ sudo cdeploy pullsync '{{Project Name}}'

$ sudo cdeploy pullsync -n '{{Project Name}}'

$ sudo cdeploy pullsync --name '{{Project Name}}'
$ sudo cdeploy restart '{{Project Name}}'

$ sudo cdeploy restart '{{Project Name}}'

$ sudo cdeploy restart --name '{{Project Name}}'
$ sudo cdeploy rm '{{Project Name}}'

$ sudo cdeploy rm -n '{{Project Name}}'

$ sudo cdeploy rm --name '{{Project Name}}'
$ sudo cdeploy start '{{Project Name}}'

$ sudo cdeploy start -n '{{Project Name}}'

$ sudo cdeploy start --name '{{Project Name}}'
$ sudo cdeploy stop '{{Project Name}}'

$ sudo cdeploy stop -n '{{Project Name}}'

$ sudo cdeploy stop --name '{{Project Name}}'
$ sudo cdeploy sync '{{Project Name}}'

$ sudo cdeploy sync -n '{{Project Name}}'

$ sudo cdeploy sync --name '{{Project Name}}'

cdeploy {{action}} requires 1 argument (project name). When argument is missing, the CLI will ask a for the project name (-n,--name).

REST equivalents

/backup/{{Project Name}}/{{passcode}
}
/build/{{Project Name}}/{{passcode}
}
/npm/{{command}}/{{Project Name}}/{{passcode}
}
/pull/{{Project Name}}/{{passcode}
}
/pull/{{command}}/{{Project Name}}/{{passcode}
}
/restart/{{Project Name}}/{{passcode}
}
/rm/{{Project Name}}/{{passcode}
}
/start/{{Project Name}}/{{passcode}
}
/stop/{{Project Name}}/{{passcode}
}
/sync/{{Project Name}}/{{passcode}
}

Enable auto start

$ sudo cdeploy autostart true {{Craydent-Deploy}}'

$ sudo cdeploy autostart -e -n {{Craydent-Deploy}}'

$ sudo cdeploy autostart --enable --name '{{Craydent-Deploy}}'

cdeploy autostart can take 2 arguments. When argument is missing, the CLI will ask questions to obtain the fields.

  1. enable - flag to enable or disable auto start. (-e,--enable)
  2. name - project name (-n,--name). 


Disable auto start

$ sudo cdeploy autostart false {{Craydent-Deploy}}'

$ sudo cdeploy autostart -e false -n {{Craydent-Deploy}}'

$ sudo cdeploy autostart --enable false --name '{{Craydent-Deploy}}'

$ sudo cdeploy autostart --disable --name '{{Craydent-Deploy}}'

cdeploy autostart can take 2 arguments. When argument is missing, the CLI will ask questions to obtain the fields.

  1. enable - flag to enable or disable auto start. (-e,--disable)
  2. name - project name (-n,--name).

Set health check interval

$ sudo cdeploy setinterval 30000 {{Craydent-Deploy}}'

$ sudo cdeploy setinterval -c 30000 -n {{Craydent-Deploy}}'

$ sudo cdeploy setinterval --interval 30000 --name '{{Craydent-Deploy}}'

cdeploy setinterval can take 2 arguments. When argument is missing, the CLI will ask questions to obtain the fields.

  1. interval - Health check interval (default: 30000) (-c,--interval).
  2. name - project name (-n,--name). 


Set up mongodb for logging and error emails

$ sudo cdeploy setmongo '{{mongoURI}}'

$ sudo cdeploy setmongo -b '{{mongoURI}}'

$ sudo cdeploy setmongo --mongo '{{mongoURI}}'

cdeploy adduser requires 1 argument (MongoDB URI). When argument is missing, the CLI will ask a for the MongoDB URI.

  1. mongo - MongoDB connection string to be used for logging (-b,--mongo).

Set up email on errors

$ sudo cdeploy setmailer '{{amazoncredentials}}' '{{smtp uri}}' '{{sender email}}' '{{mongoURI}}'

$ sudo cdeploy setmailer -z '{{amazoncredentials}}' -o '{{smtp uri}}' -d '{{sender email}}' -b '{{mongoURI}}'

$ sudo cdeploy setmailer --amazon '{{amazoncredentials}}' --smtp '{{smtp uri}}' --sender '{{sender email}}' --mongo '{{mongoURI}}'

cdeploy setmailer can take up to 4 arguments. When argument is missing, the CLI will ask questions to obtain the fields.

  1. amazon credentials - amazon access credentials in form form accessKeyId:secretAccessKey. (-z,--amazon)
  2. smtp uri - mail server transport uri string for logging.. (-o,--smtp)
  3. sender email - email address to use in the "from" when sending emails. (-d,--sender)
  4. mongo - MongoDB connection string to be used for logging (-b,--mongo).

Add HTTP User

$ sudo cdeploy adduser '{{username}}' '{{password}}' '{{access level}}'

$ sudo cdeploy adduser -u '{{username}}' -p '{{password}}' -l '{{access level}}'

$ sudo cdeploy adduser --user '{{username}}' --password '{{password}}' --access '{{access level}}'

cdeploy adduser can take up to 3 arguments.

  1. *username - username to add. (-u,--user)
  2. *password - password for the username. (-p,--password)
  3. access - access level for the username. (-l,--access)

REST equivalents

/admin/user/add/{{passcode}}/{{username}}/{{password}
}

Remove HTTP User

$ sudo cdeploy rmuser '{{username}}'

$ sudo cdeploy rmuser -u '{{username}}'

$ sudo cdeploy rmuser -user '{{username}}'

cdeploy rmuser takes 1 argument.

  1. *username - username to remove. (-u,--user)

REST equivalents

/admin/user/remove/{{passcode}}/{{username}}/{{password}}


Update HTTP User

$ sudo cdeploy updateuser '{{username}}' '{{password}}' '{{access level}}'

$ sudo cdeploy updateuser -u '{{username}}' -p '{{password}}' -l '{{access level}}'

$ sudo cdeploy updateuser --user '{{username}}' --password '{{password}}' --access '{{access level}}'

deploy updateuser can take up to 3 arguments.

  1. *username - username to add. (-u,--user)
  2. *password - password for the username. (-p,--password)
  3. access - access level for the username. (-l,--access)

REST equivalents

/admin/password/update/{{passcode}}/{{username}}/{{password}}

If craydent-proxy is installed and there are routes in the package.json of the added project, deploy will automatically add the routes to craydent-proxy. The package.json file must contain a property named "cproxy" and follow the route structure of craydent-proxy.

"cproxy":{
    "routes": {
        // these are the domains which the server be requested on 
        "sub.example.com": [{
            // name is the identifier of the route and must be unique
            "name": "unique name identifier"
            // host is the destination to forward the request
            "host": ["localhost"],
            // port is the port to forward on the destination
            "port": ["3000"],
            // verbs are the allowable methods on the destination
            "verbs": ["get", "post", "put", "delete"],
            // refering domains allowed to use this route
            "allow": ["*"],
            // headers are used to overwrite the headers being passed iff it is passed
            "headers": {},
            // destination path prefix
            "path": "/websocket/",
            // request path for this route
            "request_path": "/websocket/*"
            // http authentication
            "http_auth": false
            "http_username": "user",
            "http_password": "password"
        }]
    }
}

In addition, the actual configuration for the for the routes can be a reference to a different file.

"cproxy": { "$ref": "../routes.json#/routes_to_add" }

This will pull the json object from ../routes.json and use the routes_to_add property.

Download

Craydent-Deploy is released under the Dual licensed under the MIT or GPL Version 2 licenses.