Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Self-hosted pastebin software written in PHP. Pastes are editable, may have multiple files and are stored in git repositories.

tag: v0.1.0

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 data
Octocat-spinner-32 src
Octocat-spinner-32 www
Octocat-spinner-32 .gitignore ignore dist files April 18, 2012
Octocat-spinner-32 LICENSE add agpl license file March 30, 2012
Octocat-spinner-32 README.rst
Octocat-spinner-32 build file April 18, 2012
Octocat-spinner-32 build.xml

phorkie - PHP and Git based pastebin

Self-hosted pastebin software written in PHP. Pastes are editable, may have multiple files and are stored in git repositories.



  • every paste is a git repository
    • repositories can be cloned
    • clone url can be displayed
  • paste editing
    • add new files
    • delete existing files
    • replace file with upload
  • multiple files in one paste
  • syntax highlighting with GeSHi
  • rST rendering
  • image upload + display
  • external tool support
    • xmllint
    • php syntax check
  • history in the sidebar
    • old files can be downloaded easily


phorkie stands on the shoulders of giants.

Install VersionControl_Git

$ pear install versioncontrol_git-alpha

Install Date_HumanDiff

$ pear install

Install GeSHi

$ pear channel-discover
$ pear install mediawiki/geshi

Note that this version of GeSHi is a bit outdated, but it's the fastest way to install it.

Install Twig

$ pear channel-discover
$ pear install twig/Twig


Make git repositories clonable

To make git repositories clonable, you need to install git-daemon (git-daemon-run package on Debian/Ubuntu).

Now make the repositories available by symlinking the paste repository directory ($GLOBALS['phorkie']['cfg']['repos'] setting) into /var/cache/git, e.g.:

$ ln -s /home/user/www/paste/repos/git /var/cache/git/paste

Edit your config.php and set the $GLOBALS['phorkie']['cfg']['git']['public'] setting to git://$yourhostname/git/paste/. The rest will be appended automatically.

You're on your own to setup writable repositories.

Technical details


  • filters (xmllint --format, rapper)
  • search
  • OpenID-Login to get username+email as authorship information
  • document how to keep disk usage low (block size)
  • comments
  • when 2 people edit, merge changes
  • diff changes
  • configurable highlights
  • tags
  • autotags for file types
  • Atom feed for new pastes
  • Atom feed for paste changes


Index page. Shows form for new paste
Display page for paste
Edit the paste
Display raw file contents
Delete the paste
Search for term
List all pastes

Internal directory layout

    1/ - work directory for paste #1
    2/ - work directory for paste #2
    1.git/ - git repository for paste #1
      description - Description for the repository
    2.git/ - git repository for paste #2


Use ack-grep

Something went wrong with that request. Please try again.