The Server for Puut. With Puut you can easily share screenshots using handy shortcuts, uploaded to your own webserver!
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status Build Status Code Climate

This is the Puut server. Puut is a decentral and quick screenshot sharing service. You have to deploy this on a server with the ability to run nodejs. It offers a small uploading interface by itself but is intended for use with the OS-specific clients you can find here.


You have to have nodejs and imagemagick installed. Do this via your preferred packet manager on your server but beware that Ubuntu by now does not include the newest version of nodejs in their package sources, which might be an issue. If you encounter errors running Puut, try updating nodejs. Now clone this repo to wherever you want via git clone Go into the new directory and run npm install there, all dependencies will be downloaded automatically. Copy config.example.json to config.json.

You may now change the config of Puut, by setting the PORT environment variable (export PORT=12345) or changing the values in config.json.

If this is not done, Puut will run on Port 3000 by default.

Now change the user credentials in config.json. You have to enter this credentials in your client later.

Start the server by typing npm start in the terminal.

Setup on a Uberspace

This chapter deals with the installation of Puut server on a uberspace, a neat webserver provided by

First perform an installation as described above. You may want a port in the firewall to be opened for your server. This can be done by simply mailing the uberspace team and requesting a port. Another way is to add a subdomain and forward the port internally: Create a folder for the subdomain by typing mkdir /var/www/virtual/$USER/puut.$USER.$ (replace $USER with username and $HOST with hostname). Create a .htaccess there and fill it with

RewriteEngine On
RewriteRule (.*) http://localhost:3000/$1 [P]

and save it. Maybe you have to adjust the port for the server and in the .htaccess as the port 3000 is already in use.

Configuration as a daemon: Now it gets interesting. Do you want your Puut-Server to start automatically and even be restarted if it crashed? Then read on!

If you haven't done this before, run uberspace-setup-svscan once cd into your Puut-Server directory. Create a file called run. It should contain:

export PORT=3001
cd ~/Puut-Server
exec npm start 2>&1

This ensures that your server is always running on the same port by setting $PORT before launching the server. You may have to adjust the path to the server.

Now create a log directory and create a run file there containing

exec multilog t ./main

This enables logging of output. Make both scripts executable and symlink this folder to ~/service/Puut-Server by running ln -s ~/Puut-Server ~/service/Puut-Server.

You're done now. Enjoy Puut!


Tests can be run either by grunt test, npm test or make test. If you see the error message "File not supported" please update ImageMagick on your system.