1 ************************************
2 phorkie - PHP and Git based pastebin
3 ************************************
4 Self-hosted pastebin software written in PHP.
5 Pastes are editable, may have multiple files and are stored in git repositories.
7 Project page: http://sourceforge.net/p/phorkie/
9 .. contents:: Table of Contents
14 - every paste is a git repository
16 - repositories can be cloned
17 - clone url can be displayed
21 - delete existing files
22 - replace file with upload
23 - multiple files in one paste
24 - syntax highlighting with GeSHi
26 - image upload + display
27 - external tool support
31 - history in the sidebar
33 - old files can be downloaded easily
34 - search across pastes: description, file names and file content
36 - options: quoting, logical and, or, not, partial words
42 1. Unzip the phorkie release file::
44 $ tar xjvf phorkie-0.2.0.tar.bz2
46 2. Create the git directories::
48 $ mkdir -p repos/git repos/work
49 $ chmod og+w repos/git repos/work
51 3. Install dependencies_
53 4. Copy ``data/config.php.dist`` to ``data/config.php`` and adjust it
56 $ cp data/config.php.dist data/config.php
57 $ $EDITOR data/config.php
59 Look at ``config.default.php`` for values that you may adjust.
61 5. Set your web server's document root to ``/path/to/phorkie-0.2.0/www/``
63 6. Open phorkie in your web browser
68 phorkie stands on the shoulders of giants.
72 $ pear install versioncontrol_git-alpha
73 $ pear install services_libravatar-alpha
74 $ pear install http_request2
76 $ pear install https://github.com/downloads/cweiske/Date_HumanDiff/Date_HumanDiff-0.1.0.tgz
78 $ pear channel-discover pear.twig-project.org
79 $ pear install twig/Twig
81 $ pear channel-discover mediawiki.googlecode.com/svn
82 $ pear install mediawiki/geshi
84 Note that this version of GeSHi is a bit outdated, but it's the fastest
92 phorkie makes use of an Elasticsearch__ installation if you have one.
94 It is used to provide search capabilities and the list of recent pastes.
96 __ http://www.elasticsearch.org/
100 Edit ``config.php``, setting the ``elasticsearch`` property to the HTTP URL
101 of the index, e.g. ::
103 http://localhost:9200/phorkie/
105 Run the index script to import all existing pastes into the index::
107 php scripts/index.php
109 That's all. Open phorkie in your browser, and you'll notice the search box
115 In case something really went wrong and you need to reset the search
116 index, run the following command::
118 $ curl -XDELETE http://localhost:9200/phorkie/
119 {"ok":true,"acknowledged"}
121 Phorkie will automatically re-index everything when ``setupcheck`` is enabled
122 in the configuration file.
129 Make git repositories clonable
130 ==============================
131 To make git repositories clonable, you need to install ``git-daemon``
132 (``git-daemon-run`` package on Debian/Ubuntu).
134 Now make the repositories available by symlinking the paste repository
135 directory (``$GLOBALS['phorkie']['cfg']['repos']`` setting) into
136 ``/var/cache/git``, e.g.::
138 $ ln -s /home/user/www/paste/repos/git /var/cache/git/paste
140 Edit your ``config.php`` and set the ``$GLOBALS['phorkie']['cfg']['git']['public']``
141 setting to ``git://$yourhostname/git/paste/``.
142 The rest will be appended automatically.
145 You're on your own to setup writable repositories.
154 - OpenID-Login to get username+email as authorship information
155 - filters (``xmllint --format``, ``rapper``)
156 - document how to keep disk usage low (block size)
158 - when 2 people edit, merge changes
160 - configurable highlights
161 - Atom feed for new pastes
162 - Atom feed for paste changes
169 Index page. Shows form for new paste
171 Display page for paste
175 Display raw file contents
176 ``/[0-9]/tool/[a-zA-Z]+/(.+)``
177 Run a tool on the given file
178 ``/[0-9]/rev/[a-z0-9]+``
179 Show specific revision of the paste
183 Create a fork of the paste
184 ``/search?q=..(&page=[0-9]+)?``
185 Search for term, with optional page
187 List all pastes, with optional page
190 Internal directory layout
191 =========================
196 1/ - work directory for paste #1
197 2/ - work directory for paste #2
199 1.git/ - git repository for paste #1
200 description - Description for the repository
201 2.git/ - git repository for paste #2