Nimbus

Private, Secure and Absolutely Free.

Designed to run on nothing but an external hard drive and Raspberry Pi, Nimbus is your low-cost, easy to use personal cloud. Store, share and stream your files anywhere without paying a subscription or worrying about the security of your files.

Nimbus isn't your run-of-the-mill cloud service. This is your cloud. Plug it into your router and access it everywhere you go, or unplug the hard drive and take your files with you on the road.

Share Large Files

Easily share your files with optional password protection and expiration dates. Especially handy when files are too large to email.

Stream Music and Video

Login to your cloud and listen to music, watch videos, and create playlists. The files you upload are automatically scanned and added to your media library.

Automatic File Sync

Our desktop application automatically synchronizes files to Nimbus, and accross multiple computers. Easily store, transfer and back up files to your cloud.

Save Money

All you need to get up-and-running is a $35 Raspberry Pi and an external hard drive of any size. Connect multiple hard drives to increase storage, and forget about cloud subscriptions.

Easy Encryption

Configure TLS encrypted communication for your cloud with a single command. Thanks to Let's Encrypt, free, automated, and open encryption is a snap to set up.

More to Come!

The desktop sync app has just arrived! Mobile apps broader platform support are on the way. Have an idea? Let us know about it here.

Nimbus is in Beta. If you happen to find a bug or want to share feedback, please let us know by leaving a note in our Google Forum. By downloading and installing Nimbus you agree to our End User License Agreement.



To download directly to your Raspberry Pi via the command line:

wget http://cloudnimbus.org/dist/0.6.2-BETA/nimbus-0.6.2-BETA.tar.gz

Download Nimbus Sync

The Nimbus Sync app is now available for Windows machines, which automatically synchronizes files to and from your Nimbus cloud, and accross multiple devices. Mac OSX and Linux support are coming soon!

Nimbus Sync Installation

Nimbus Sync requires Java 8 or later. You can download the latest version here.

Antivirus software may detect the installer as a threat, but rest assured it is a false positive. We have submitted the file for analysis to fix this going forward.

Before You Start

Follow the instructions on the Raspberry Pi Website to get your Raspberry Pi up and running.

Warning!

Nimbus has only been tested on Raspbian so far, but you can try your luck with other operating systems if you're feeling adventurous. Let us know how it goes!

To download the official Raspbian image, click here.

1 Download and Extract Nimbus

Download nimbus-0.6.2-BETA.tar.gz and move the file to your desired installation directory. In the example below it is installed to /home/pi. Navigate into the installation directory and extract the files using the tar command. In the example below nimbus is installed to /home/pi/nimbus.

cd /home/pi
mkdir nimbus
tar -zxf nimbus-0.6.2-BETA.tar.gz -C nimbus

2 Run Setup Scripts and Start Nimbus

Once the files have been extracted, navigate into the nimbus directory. Install dependent programs by running install_helper_programs.sh, run add_to_startup_programs.sh to set Nimbus to start when Raspberry Pi does, and start Nimbus by running nimbus.sh start.

cd /home/pi/nimbus
sudo ./install_helper_programs.sh
sudo ./add_to_startup_programs.sh
./nimbus.sh start

If you ran add_to_startup_programs.sh you can also start and stop Nimbus by running sudo service nimbus [start|stop]. Nimbus runs on port 8080 by default. You can specify a different port by editing the nimbus.http.port value in /home/pi/nimbus/conf/nimbus.properties. For example:

nimbus.http.port=9090

Warning!

It is not recommended to specify a port which is less than 1024. This requires Nimbus to be run as root, which poses a security risk. If you would like to access Nimbus over port 80 (The default for HTTP) you have a few options which can be found in the support section.

3 Get Started Using Nimbus

Open a web browser and navigate to [hostname].local:8080 (if you don't know the hostname of your Raspberry Pi, run the hostname command). You should see the Nimbus welcome screen! Note that this will only work on your home network. To expose Nimbus to the outside word (a.k.a. the internet), forward port 80 from your router to your Raspberry Pi and optionally use a Dynamic DNS service to setup a free domain name.

Need help accessing Nimbus outside your home network?

You can learn more about port forwarding at portforward.com. You will probably want to forward port 80 of your router to port 8080 of your Raspberry Pi to access it online. We like to use DNSdynamic to set up free domains with Dynamic DNS.

Don't be shy! If you're still having trouble ask away in our Google Group.

4 Setup Encryption for Nimbus (Strongly Recommended)

Thanks to Let's Encrypt, setting up TLS encryption is quick and easy. Navigate to the installation directory and run the setup_encryption.sh script. This script will guide you through obtaining a new certificate and will automatically configure Nimbus to use it.

cd /home/pi/nimbus
sudo ./setup_encryption.sh

Before you can setup encryption your Nimbus installation must be accessible from the internet (outside of your home network) at a static domain name as described in the previous section.

Feel free to leave your comments and questions on our Google Group Forum here. Before you do, be sure to check out these FAQs:

Upgrading your Nimbus installation is supported for versions 0.6.2-BETA and later. Included in these versions is an upgrade.sh script in your Nimbus installation directory.

Upgrading is easy! All you need to do is download the new version and run the upgrade script. For example, if your current installation is at /home/pi/nimbus:

cd /home/pi
wget http://cloudnimbus.org/dist/0.6.2-BETA/nimbus-0.6.2-BETA.tar.gz
cd /home/pi/nimbus
./upgrade.sh ../nimbus-0.6.2-BETA.tar.gz

Small bug fixes and patches may be released under the same version number, so if you're having an issue with the current version try upgrading the the latest version available here.

First you need to create an X.509 (a.k.a. "SSL") certificate and keystore, optionally having a trusted CA sign your certificate. You can learn more about certificates, CAs and keystores here, or have a look at a Java keytool cheatsheet here.

Once you have a keystore you can configure the SSL settings in the <Nimbus Home Directory>/conf/nimbus.properties file. At a bare minimum you must specify the path to the keystore, provide the keystore password, and choose a port for SSL to run over. For example:

nimbus.ssl.enabled=true
nimbus.ssl.keystore.password=mykeystorepassword
nimbus.ssl.keystore.path=${nimbus.home}/ssl/keystore
nimbus.ssl.https.port=8443

You can also use obfuscated passwords in this file if you prefer. Simply run the command below to secure your password and use one of the output lines, including the OBF: prefix as your password in <Nimbus Home Directory>/conf/nimbus.properties

java -cp <Nimbus Home Directory>/lib/jetty-util-*.jar org.eclipse.jetty.util.security.Password mykeystorepassword
mykeystorepassword
OBF:1uh41zly1w8r1wml1zt11ym71v9u1x8e1vnw1vn61x8g1v8s1ym71zsp1wnl1w8z1zlk1ugm
MD5:14a6a8ceae8529e0ec1a1f5ecc09e8de

Your <Nimbus Home Directory>/conf/nimbus.properties file would then be:

nimbus.ssl.enabled=true
nimbus.ssl.keystore.password=OBF:1uh41zly1w8r1wml1zt11ym71v9u1x8e1vnw1vn61x8g1v8s1ym71zsp1wnl1w8z1zlk1ugm
nimbus.ssl.keystore.path=${nimbus.home}/ssl/keystore
nimbus.ssl.https.port=8443

Make sure to run install_helper_programs.sh, which installs Avahi (a zero-configuration networking implementation). It lets Nimbus to respond to nimbus.local within your home network.

If you ran that script, then Avahi should be installed. Double check your hostname by running the hostname command in the terminal. The default for Raspbian is 'raspberrypi'.

There can be a couple of reasons for this:

  1. Your hard drive may not be getting enough power.

    The micro-USB cord plugged into your Raspberry Pi needs to supply enough power to run the hard drive as well, and some don't provide enough juice. If you look at the cord you will find information about it's power rating - it should output 5 volts, and we've found that 2 amps is sufficient to power most drives. Some cables only output 1 amp. If you've tried a few and still can't get enough power to your Pi, you may need to try a powered USB hub like this one.

  2. Your hard drive may have an unsupported format

    Nimbus should work with EXT, EXT2, EXT3, EXT4, VFAT and NTFS. The driver for NTFS can be installed by running the ./install_helper_programs.sh script (see the setup section for more). You may need to reformat your hard drive to one of these types. More on that here.

No worries! Administrators of your cloud are able to reset passwords through the user management tab in the settings page. You will be sent an email with your new password when it is reset.

There is also a password reset script as of 0.4-beta. It's called reset_password.sh, and it's in the Nimbus installation directory.

As mentioned in the setup section, it is not recommended to specify a port which is less than 1024. This requires Nimbus to be run as root, which poses a security risk. There are a few methods you can use to forward traffic from port 80 to the port that Nimbus is running on, however:

  • Use the ipchains REDIRECT mechanism to redirect traffic from one port to another. For example:
    /sbin/ipchains -I input --proto TCP --dport 80 -j REDIRECT 8080
  • If ipchains isn't available on your system, usually iptables is. The equivalent of the first option in iptables is:
    /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
  • Use HAProxy to route traffic from one port to another. Install HAProxy with sudo apt-get install haproxy and then edit the /etc/haproxy/haproxy.cfg file. For example:
    global
        daemon
        maxconn 256
     
    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
     
    frontend http-in
        bind *:80
        default_backend nimbus
     
    backend nimbus
        server nimbus1 127.0.0.1:8080

Also note that you'll need to forward port 443 to port 8443 (by default) if you have SSL enabled.