Need help with Nimbus?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

194 Stars 27 Forks MIT License 179 Commits 7 Opened issues


Not maintained. A private file sharer and URL shortener (like Cloudapp and TinyURL).

Services available


Need anything else?

Contributors list

# 337,932
166 commits
# 339,191
1 commit
# 1,463
1 commit

Nimbus Logo

Nimbus is a private file sharer and URL shortener. Heavily inspired by Cloudapp, Nimbus is a free and open source solution to file sharing and URL shortening that you can host yourself and fully control.

Nimbus consists of several components:

  • A website that displays sharing pages for generated links and redirects shortened URLs to their targets
  • A website to manage shared items
  • An API to manipulate shared items
  • A Mac OS X menubar app to upload files and shorten links

The menubar app is only compatible with OS X 10.9 and up since it is written in Swift. The files are stored in Amazon S3, so you must have an AWS account.


Screenshot Screenshot
Screenshot Screenshot


  • Share pages that show file previews or redirect to the shortened link
    • Image file previews
    • Text file previews with automatic syntax highlighting if applicable
  • Screenshots are automatically uploaded and the share link is copied to the clipboard
  • Drag a file or text to the menubar icon to upload it and copy the share link to the clipboard
  • Drag a URL to the menubar icon to create a shortened link and copy it to the clipboard
  • Keep track of view counts for files and shortened URLS


To set up the Django app, perform the following steps on your server (assumes pip, virtualenv, and MySQL are already installed)

  1. Create a virtualenv and activate it
  2. Clone the repository (from here on, it is assumed that the respository's location is
  3. While in the repository root, install the Python requirements by running
   pip install -r requirements/production.txt
  1. Create a database and grant a user full access to it.
  2. Follow the instructions in
    to create a secrets file with your MySQL and Amazon S3 credentials
  3. Set up the environment for the Django app by running
  1. Set up the database and create your user by running
    ./ syncdb
  2. Start a Django shell (
    ./ shell
    ) and run the following commands, replacing
    with your domain name
   from django.contrib.sites.models import Site
   Site.objects.update(name="", domain="")
  1. Collect static files by running
   yes yes | ./ collectstatic

Serving Nimbus

Make sure you have a domain name configured with the following records:

@       IN A  
api     CNAME @
account CNAME @
files   CNAME

Also make sure you have an Amazon S3 bucket called


The recommended setup for serving Nimbus is Gunicorn managed by Supervisor with nginx as a reverse proxy. Configuration requirements are as follows.

  • Nginx must be listening on the subdomains
    of your domain as well as the root domain. Forward all of this traffic to Gunicorn - the Django app handles the subdomain routing.
  • The attribute
    must be set in the nginx config to a sufficiently large value to allow uploads of big files.
  • Static file requests (
    ) should be aliased to
    in the repository root
  • Supervisor must call the version of gunicorn in your virtualenv

Example Supervisor Configuration

directory = /usr/local/www/Nimbus
user = nobody
command = /usr/local/virtualenvs/Nimbus/bin/gunicorn nimbus.wsgi:application --user=nobody --workers=1 --bind=
environment = PRODUCTION=TRUE
stdout_logfile = /var/log/sites/nimbus.gunicorn.log
stderr_logfile = /var/log/sites/nimbus.gunicorn.log
autostart = true
autorestart = true

Example Nginx Configuration

server {
    listen 80;
    return 301 https://$host$request_uri;

server { listen 443 ssl; server_name;

ssl on;
ssl_certificate /usr/local/certs/;
ssl_certificate_key /usr/local/certs/;

client_max_body_size 1024M;

access_log /var/log/sites/nimbus.access.log;
error_log /var/log/sites/nimbus.error.log;

location /favicon.ico {
    alias /usr/local/www/Nimbus/nimbus/static/img/favicon.ico;

location /static/ {
    alias /usr/local/www/Nimbus/nimbus/collected_static/;

location / {
    rewrite ^/((?!(api-auth|admin))(.*))/$ /$1 permanent;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;


API Reference

API documentation can be found here.


Ethan Lowman - - [email protected]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.