Pasteque is a free and open source (MIT License) Pastebin like application written in Python/Django.
A demo instance of Pasteque is running at http://paste.henriet.eu.
- Support any database supported by Django (Sqlite3, MySQL, PostgreSQL, Oracle, ...)
- Available in english, french .. and easily translatable into another languages.
- Syntax highlighting for a bunch of languages using Pygments.
- Public/private pastes (don't appear in the pastes history).
- Time-based or "page loads"-based pastes expiration.
- Password protection.
- Possibility to enable/disable renderers and to choose the default one.
- Limit pastes size.
- Pastes history.
- Duplicate paste
- Locale selector
- Search engine
- Disable pastes via link submitted by email
- Copy to clipboard JS
- Google Analytics easy-integration
This procedure will guide you step-by-step through the setup of your own instance of Pasteque using nginx et UWSGI. In this tutorial, app files and servers processes are owned by unprivilegied web user.
It is assumed that some system packages are installed on the server where you plan to setup Pasteque.
On Debian
sudo apt-get install python python-pip python-dev nginx git
The application is deployed into /opt/app/webtools which is owner by user web.
sudo mkdir -p /opt/app/webtools/ sudo chown -R web: /opt/app/webtools/ cd /opt/app/webtools/ git clone https://github.com/setsuna-/pasteque . mkdir -p var/logs var/db var/pygments-static
Even if python packages are installed system-wide in this tutorial, virtualenv is of course the way to go.
sudo -s export CFLAGS="-march=native -O2 -fomit-frame-pointer -pipe" && export CXXFLAGS="-march=native -O2 -fomit-frame-pointer -pipe" pip install -r /opt/app/webtools/share/requirements.pip
vim /opt/app/webtools/webtools/settings.py DISPLAY_NAME = 'YourCompany-Paste' COMPRESS_ENABLED = True SECRET_KEY = 'fill_a_secret_key_here' ALLOWED_HOSTS = ['localhost','127.0.0.1','paste.henriet.eu']
cd /opt/app/webtools/ ./manage.py syncdb Creating tables ... Creating table paste_language Creating table paste_paste Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) sqlite3 var/db/webtools.sqlite3 sqlite> .read share/language-dml.sql sqlite> .quit
./manage.py collectstatic ls static/ css font img js
Validate application setup using the development web server.
./manage.py runserver paste.henriet.eu:16000
cp /opt/app/webtools/share/uwsgi.ini /opt/app/webtools/uwsgi.ini vim /opt/app/webtools/uwsgi.ini [uwsgi] chdir=/opt/app/webtools module=webtools.wsgi:application master=True env=DJANGO_SETTINGS_MODULE=webtools.settings pidfile=/opt/app/webtools/var/uwsgid-pasteque.pid socket=/opt/app/webtools/var/uwsgid-pasteque.sock processes=5 uid=1002 gid=1002 harakiri=20 limit-as=128 max-requests=5000 vacuum=True daemonize=/opt/app/webtools/var/uwsgid-pasteque.log
uwsgi --ini /opt/app/webtools/uwsgi.ini [uWSGI] getting INI configuration from /opt/app/webtools/uwsgi.ini ps -ef |grep uwsgi web 2269 1 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini web 2271 2269 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini web 2272 2269 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini web 2273 2269 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini web 2274 2269 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini web 2275 2269 0 11:32 ? 00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini cat /opt/app/webtools/var/uwsgid-pasteque.log to check if everything is ok.
sudo vim /etc/nginx/nginx.conf
user web;
sudo vim /etc/nginx/sites-available/webtools-pasteque
upstream uwsgi {
server unix:///opt/app/webtools/var/uwsgid-pasteque.sock;
}
server {
listen 80;
server_name paste.henriet.eu;
charset utf-8;
error_log /opt/app/webtools/var/nginx-error.log;
access_log /opt/app/webtools/var/nginx-access.log;
client_max_body_size 8M;
location /static {
alias /opt/app/webtools/static;
expires 30d;
}
location / {
uwsgi_pass uwsgi;
include /etc/nginx/uwsgi_params;
}
}
cd /etc/nginx/sites-enabled/
sudo ln -s ../sites-available/webtools-pasteque
sudo /etc/init.d/nginx restart Restarting nginx: nginx.