Cloud Commander

Cloud file manager with console and editor

View Project on GitHub

Find typo? Help fix it.
Contact

Cloud Commander v1.3.0

Main Blog Live(JitSu JitSu, Heroku Heroku)

Cloud Commander orthodox web file manager with console and editor. Will help you manage the server and work with files, folders and programs in browser from any computer, mobile or tablet device.

Cloud Commander

Benefits

Install

The installation of file manager is very simple.

npm install cloudcmd    #local install or
npm install cloudcmd -g #global install

NPM_INFO

Start

To start Cloud Commander change directory to node_modules/cloudcmd and run command:

node bin/cloudcmd

or if you install with -g flag just type in any directory:

cloudcmd

Cloud Commander supports command line parameters:

Parameter Operation
-h, --help display help and exit
-v, --version output version information and exit
-p, --port set port number and start

If no parameters given Cloud Commander reads information from json/config.json and use port from it (8000 default). if port variables PORT or VCAP_APP_PORT isn't exist.

To begin use, type in address bar of your browser:

http://localhost:<port>

With default settings it would be:

http://localhost:8000

Update

Cloud Commander is very often updated.

Update is doing automagically but it could be done also manualy. If you cloned repository you could get last changes with:

git pull
npm i

If you installed Cloud Commander with npm just re-install it:

npm i cloudcmd -g

After that clear cache of your browser, restart application and reload page.

Hot keys

Key Operation
F1 help
F2 rename
F3 view
Shift + F3 view as markdown
F4 edit
F5 copy
F6 rename/move
F7 new dir
Shift + F7 new file
F8, Delete remove
Shift + Delete remove without prompt
F9 menu
F10 config
* select/unselect all
+ expand selection
- shrink selection
Ctrl + x cut to buffer
Ctrl + с copy to buffer
Ctrl + v paste from buffer
Ctrl + z clear buffer
Ctrl + r refresh
Ctrl + d clear local storage
Alt + q disable key bindings
Alt + s enable key bindings
Ctrl + a select all files in a panel
Up, Down, Enter filesystem navigation
Ctrl + \ go to the root directory
Tab move via panels
Page Up up on one page
Page Down down on one page
Home to begin of list
End to end of list
Space select current file (and get size of directory)
Insert select current file (and move to next)
F9 context menu
~ console
Ctrl + Click open file on new tab

View

View

Features

Hot keys

Key Operation
F3 open
Esc close

Edit

Edit

Features

Hot keys

Key Operation
F4 open
Ctrl + s save
Ctrl + f find
Ctrl + h replace
Ctrl + g go to line
Esc close

For more details see Ace keyboard shortcuts.

Console

Console

Hot keys

Key Operation
~ open
Ctrl + p paste path of current directory
Ctrl + z cancel current prompt
Ctrl + l clear
Esc close

Config

Console

Hot keys

Key Operation
F10 open
Esc close

Menu

Menu Right mouse click button shows context menu with items:

Hot keys

Key Operation
F9 open
Esc close

Configuration

All main configuration could be done via json/config.json.

{
    "auth"              : false,    /* enable http authentication               */
    "username"          : "root",   /* username for authentication              */
    "password"          : "toor",   /* password hash in sha-1 for authentication*/
    "analytics"         : true,     /* google analytics support                 */
    "diff"              : true,     /* when save - send patch, not whole file   */
    "zip"               : true,     /* zip text before send / unzip before save */
    "notifications"     : false,    /* show notifications when tab is not active*/
    "localStorage"      : true,     /* cache directory data                     */
    "buffer"            : true,     /* buffer for copying files                 */
    "dirStorage"        : true,     /* store directory listing to localStorage  */
    "minify"            : true,     /* minification of js,css,html and img      */
    "online"            : true,     /* load js files from cdn or local path     */
    "cache"             : true,     /* add cache-control                        */
    "showKeysPanel"     : true,     /* show classic panel with buttons of keys  */
    "server"            : true,     /* server mode or testing mode              */
    "socket"            : true,     /* enable web sockets                       */
    "port"              : 8000,     /* http port                                */
    "ip"                : null,     /* ip or null(default)                      */
}

If you had changed config and want to keep updating via git, you should execute next command in root directory of Cloud Commander:

git update-index --assume-unchanged json/config.json

To get back to tracking:

git update-index --no-assume-unchanged json/config.json

Server

Standard practices say no non-root process gets to talk to the Internet on a port less than 1024. Anyway I suggest you to start Cloud Commander as non-root. How it could be solved? There is a couple easy and fast ways. One of them is port forwarding.

Iptables

Just run shell/addtables.sh for default options.

iptables -t nat -L # look rules before
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 4430
iptables -t nat -L # look rules after

You should see something like this ( 8000 and 4430 should be in config as port and sslPort )

target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8000
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:https redir ports 4430

If you would want to get things back just clear rules ( 1 and 2 it's rule numbers, in your list they could differ).

iptables -t nat -D PREROUTING 2
iptables -t nat -D PREROUTING 1

nginx

Get nginx. On linux it could be done this way:

sudo apt-get install nginx #for ubuntu and debian

Than make host file /etc/nginx/sites-enabled/io.cloudcmd.io ( io.cloudcmd.io is your domain name) with content:

server {
    listen 80;
    client_max_body_size 100m;
    server_name io.cloudcmd.io;
    access_log /var/log/nginx/io.cloudcmd.io.access.log;
    location / {
        proxy_pass          http://127.0.0.1:8000/;
    }
}

If you want add ssl, add a couple lines to server block:

server {
    listen 443;
    client_max_body_size 100m;
    ssl                  on;
    ssl_certificate      /home/coderaiser/cloudcmd/ssl/ssl.crt;
    ssl_certificate_key  /home/coderaiser/cloudcmd/ssl/ssl.key;
    server_name io.cloudcmd.io;
    access_log /var/log/nginx/io.cloudcmd.io.access.log;
    location / {
        proxy_pass    http://127.0.0.1:8000/;
    }
}

For websocket support (nginx >= v1.3.13) modify server block:

    location / {
        proxy_http_version  1.1;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection "upgrade";

        proxy_pass          http://127.0.0.1:8000/;
    }

If you need redirection from http to https, it's simple:

server {
    listen 80;
    server_name admin.cloudcmd.io;
    rewrite ^ https://io.cloudcmd.io$request_uri? permanent; #301 redirect
    access_log /var/log/nginx/io.cloudcmd.io.access.log;
}
# create symlink of this file
ln -s ./sites-enabled/io.cloudcmd.io ./sites-available
# restart nginx
/etc/init.d/nginx restart

To run Cloud Commander as daemon in linux you could set log to true in config and do something like this:

nohup node cloudcmd

Additional modules list

To extend capabilities of file manager next modules used:

Contributing

If you would like to contribute - read guide and send pull requests to dev branch. Getting dev version of Cloud Commander:

git clone git://github.com/coderaiser/cloudcmd.git
cd cloudcmd && git checkout dev

Version history

Special Thanks