Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Linkode is the useful pastebin!

It's a kind of "short living collaboration space", a "dynamic pastebin".

It's live right now in, give it a try!

Some awesome details:

  • you can create linkodes anywhere, whenever, and effortlessly.
  • editable texts, not static!
  • every new edition creates a child: you have a tree
  • code/text type automatic detection (and coloring!)
  • permanent linkodes (the owner can still remove them)
  • absolutely anonymous (unless you login, which is dead simple)
  • private URLs: because you can not guess UUIDs

There is a Telegram bot!

Try it here.

Note this bot has a project on its own, check it!


Code and issues is in GitHub:

We also have a mailing list:

And you can also get help by IRC, in Freenode: #linkode


Get the API details from the HTML file::


In a future this will be in a Doc file (source of that HTML).

How To Try It In Development

Just using fades:


Or creating the virtualenv by hand:

virtualenv kilink
cd kilink
git clone
source bin/activate
pip install -r requirements.txt
python2 kilink/

Or if you prefer to use Docker

docker build -t kilink .
docker run -it -p 5000:5000 kilink

How to Translate

When including translatable text in the code, make sure to always wrap it in the gettext function. Within templates it's already available and bound to _, e.g.:

<span>{{ _("Text to translate") }}</span>

In Python files you need to import it from Flask, e.g.:

from flask.ext.base import gettext as _

def views():
    flash( _("Text to translate") )

Later, to produce language catalogs:

  1. Extract the translation texts:

    cd kilink
    pybabel extract -F babel.cfg -o messages.pot translations
  2. Generate an individual language message catalog. E.g. for Italian (it) you would do:

    pybabel init -i messages.pot -d translations -l it

    That should leave a messages.po file nested under the directory specified by the given -d argument (e.g.: translations/it/LC_MESSAGES/messages.po);

  3. Open it in your favorite text editor and translate the collected messages;

  4. Repeat steps 1-3 for each target language;

  5. When finished, compile with:

    pybabel compile -d translations

  6. Finally, add the newly available languages to the file, as follows:

         'it': 'Italian',

You'll need to follow again these steps each time you add or change some text in the code. See the Flask-Babel Tutorial for more on this subject.

How To Deploy With Apache

Documentation based in

We use a virtualenv to deploy the project and apache virtual host on Ubuntu 13.04, This configuration es very general, I guess that works in almost all linux OS


  • Project path: /var/linkode_home/
  • Application path: /var/linkode_home/linkode_app
  • VirtualEnv Path: /var/linkode_home/linkode_virtualenv
  • User: www-data

Create virtualenv:

cd /var/linkode_home
virtualenv linkode_virtualenv
cd linkode_virtualenv
source bin/activate

Clone repository:

cd /var/linkode_home/
git clone linkode_app

Install the requirements:

cd linkode_app
pip install -r requirements.txt

The WSGI configuration file is already in the project, ready to use; for develop or debugging you can add to it:

application.debug = True
# Needs install paste via pip "pip install paste"
# For More information:
from paste.evalexception.middleware import EvalException
application = EvalException(application)

Create a virtual host configuration file in /etc/apache2/sites-enabled/ with the name that you want, in this case "linkode"

sudo vi /etc/apache2/sites-enabled/linkode

And paste this:

<VirtualHost *>
    ServerName linkode.mydomain

    WSGIDaemonProcess linkode user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/linkode_home/linkode.wsgi
    WSGIScriptReloading On

    <Directory /var/linkode_home/linkode_app/kilink/>
        WSGIProcessGroup linkode
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all

    AddDefaultCharset utf-8
    ServerSignature On
    LogLevel info

    ErrorLog  /var/log/apache2/linkode-error.log
    CustomLog /var/log/apache2/linkode-access.log combined


Restart Apache and enjoy!



A next generation pastebin







No releases published


No packages published