1Stikked is an Open-Source PHP Pastebin, with the aim of keeping a simple and easy to use user interface. 2 3Stikked allows you to easily share code with anyone you wish. Based on the [original Stikked](http://code.google.com/p/stikked/) with lots of bugfixes and improvements. 4 5Here are some features: 6 7* Easy setup 8* Syntax highlighting for many languages, including live syntax highlighting with CodeMirror 9* Paste replies 10* Diff view between the original paste and the reply 11* An API 12* Search pastes 13* Trending pastes 14* Encrypted pastes 15* Burn on reading 16* Anti-Spam features 17* Themes support 18* Multilanguage support 19* Stikked client with support for client side encryption/decryption: [gostikkit](https://github.com/tcolgate/gostikkit) 20* Another CLI tool requiring only curl program: [pbin](https://github.com/glensc/pbin) 21* And many more. View [this review](http://maketecheasier.com/run-your-own-pastebin-with-stikked/2013/01/11) 22 23 24Try it out 25---------- 26 27https://paste.scratchbook.ch/ 28 29See an encrypted paste: https://paste.scratchbook.ch/view/1427473f#iP7p05DRH0BC72qQjxv01BjUeOmNV073 30 31 32Prerequisites 33------------- 34 35* A web server: Apache, Lighttpd, Nginx, Cherokee. 36* A database: MySQL, Postgres. OR a writable folder on your filesystem for SQLite. 37* PHP version 5.6 or newer is recommended. 38* PHP-GD for the creation of QR-codes. 39 40 41Installation 42------------ 43 441. Download stikked from https://github.com/claudehohl/Stikked/tags 452. Create a user and database for Stikked 463. Copy application/config/stikked.php.dist to application/config/stikked.php 474. Edit configuration settings in application/config/stikked.php - everything is described there 485. You're done! 49 50* The database structure will be created automatically if it doesn't exist. 51* No special file permissions are needed by default. Optional: If you want to have the JavaScript- and CSS-files minified, the static/asset/ folder has to be writable. 52* To ensure that pastes with an expiration set get cleaned up, define the cron key in the config and set up a cronjob, for example: 53 * `*/5 * * * * curl --silent http://yoursite.com/cron/[key]` 54* If you encounter errors with stylesheets and paths, make sure your base_url config value is not empty (see [here](http://www.codeigniter.com/user_guide/installation/upgrade_303.html)). 55* Be sure to also copy the .htaccess file when you move files around. This is a hidden file and easily overlooked. 56 57 58How to run it in Docker 59----------------------- 60 61 sudo docker build -t stikked . 62 sudo docker-compose up -d 63 64This automatically creates a database with passwords that are configurable in the docker-compose.yml file. 65 66NOTE: This sets the captcha to false and requires port 80 to be accessible on the host machine. Also, a host entry of 127.0.0.1 stikked.local will fix the base_url issues. 67 68 69Documentation 70------------- 71 72In the folder doc/, you will find: 73 74* Webserver example configurations for Apache, Nginx, Lighttpd, Cherokee 75* A troubleshooting guide 76* How to create your own theme 77* How to translate Stikked into your language 78* How to contribute and improve Stikked 79 80 81Changelog 82--------- 83 84### Version 0.13.0: 85 86* Updated CodeIgniter to 3.1.9 87* Various improvements in the Docker setup 88* An automated Docker-build: https://hub.docker.com/r/claudehohl/stikked/ 89* Reverted the "intelligent language switcher" back to a fixed language setting because of too many side-effects 90* Fixed encodings and decryption functionality in various themes 91* Various bugfixes and improvements 92 93#### Upgrade instructions 94 95Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back. 96 97The language setting in config/stikked.php is back, you can set a fixed language: 98 99```php 100$config['language'] = 'english'; 101``` 102 103New config option: Content expiration. \ 104Sets the "Expires:"-header to make use of browser-caching \ 105Format: http://php.net/manual/en/function.strtotime.php \ 106Examples: '+10 seconds', '+1 year', '-1 week' \ 107Browser-caching is disabled when this option is not set. 108 109```php 110$config['content_expiration'] = '+1 week'; 111``` 112 113### Version 0.12.0: 114 115* Updates ensuring the compatibility with PHP7: 116 * Updated CodeIgniter to 3.1.5 117 * Updated GeSHi to 1.0.9.0 118* Ability to run Stikked in Docker 119* Small security fixes regarding XSS and LDAP 120* Various bugfixes and improvements 121 122#### Upgrade instructions 123 124Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back. 125 126If you want to keep QR codes being displayed, add the following line in config/stikked.php: 127 128```php 129$config['qr_enabled'] = true; 130``` 131 132### Version 0.11.0: 133 134* Upgrade to CodeIgniter 3.1.0 135* Added ACE editor 136* Ability to select JS editor (CodeMirror, ACE or none) 137* Insert paste text via drag & drop 138* BBCode support 139* Improved Spamadmin; ability to delete single and multiple pastes at once 140* Soft api key 141* Lots of bugfixes and improvements 142 143#### Upgrade instructions 144 145Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back. 146 147Add and set the base_url in htdocs/application/config/stikked.php 148 149### Version 0.10.0: 150 151* Upgrade to CodeIgniter 3.0.1 and with it, lots of improvements: 152 * SQLite support (yay!) 153 * Lots of "Error 500" and blank screens fixed 154* New theme: i386 155* New translations: Lithuanian, Danish, Polish 156* Automatic language detection 157* Support for the new ReCaptcha API 158* Support for Goo.gl and Bit.ly URL shorteners 159* Display expiration time if set 160* XSS fixes 161* Word wrap for looong words in paste display 162* And many more 163 164#### Upgrade instructions 165 166Copy your htdocs/application/stikked.php config file away. Upload the new version. 167 168Append the $config['expires'] part at the bottom of application/config/stikked.php.dist to your config. 169 170Copy it back. 171 172### Version 0.9.0: 173 174* New translations: Japanese, Chinese-Simplified, Chinese-Traditional, Russian 175* New themes: Stikkedizr, Cleanwhite 176* Display QR code in paste 177* Multiline highlighter 178* Encrypted pastes (yeah!) - see it in action: http://paste.scratchbook.ch/view/1427473f#iP7p05DRH0BC72qQjxv01BjUeOmNV073 179* Added "burn on reading" as expiration 180* Search function - search in recent and trending pastes 181* Added mockingjay to word list for unknown posters - let the revolution begin! 182* Bugfixes and improvements 183 184#### Upgrade instructions 185 186Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back. 187 188### Version 0.8.6: 189 190* New translations: Portuguese, Norwegian, Turkish, French 191* New theme: Snowkat 192* YOURLS support (http://yourls.org/) 193* There is now a stikked.php.dist. You may copy that to config.php and have your own settings 194* The API has more possibilities, see API doc 195* Captcha must be entered only once, no more for further pastes 196* Bugfixes and improvements 197 198#### Upgrade instructions 199 200Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back. 201 202### Version 0.8.5: 203 204* Themes! Configure a different theme in config/stikked.php - or create your own 205* Multilanguage support. Configure a different language in config/stikked.php 206* Diff view for paste replies! View differences between the original paste and its reply 207 * see it in action: http://paste.scratchbook.ch/view/de81a093/diff 208* Possibility to set default expiration time 209* Updated GeSHi to version 1.0.8.11 210* Updated CodeMirror to version 3.11 211* Lots of minor fixes and improvements 212* Added guides for troubleshooting, development, translation and creating themes 213* Added webserver example configurations 214* Added reCaptcha integration for better antispam 215 216#### Upgrade instructions 217 218The following lines must be present config/stikked.php 219 220```php 221$config['theme'] = 'default'; 222``` 223 224You can choose between default, bootstrap, gabdark, gabdark3 and a fancy geocities theme ;) 225 226Create you own theme. See doc/CREATING_THEMES.md 227 228```php 229$config['language'] = 'english'; 230``` 231 232You can choose between english, german and swissgerman ;) 233 234Help translating Stikked into your language! See doc/TRANSLATING_STIKKED.md 235 236##### reCaptcha 237 238```php 239$config['recaptcha_publickey'] = ''; 240$config['recaptcha_privatekey'] = ''; 241``` 242 243If these lines are filled, reCaptcha will be used. 244Get a key from https://www.google.com/recaptcha/admin/create 245 246### Version 0.8.4: 247 248* Trending pastes: http://paste.scratchbook.ch/trends 249* LDAP authentication (thanks to Daniel, https://github.com/lightswitch05) 250* Blocked words; maintain a comma separated list in your config, e.g. '.es.tl, mycraft.com, yourbadword' - pastes with this words will never get pasted 251* Spam trap for bots 252* Bugfix: Remove\_invisible\_characters removing legitimate paste content (https://github.com/claudehohl/Stikked/issues/28) 253* Possibility to manually set the paste's displayed URL (used with mod\_rewrite configurations) 254* Print layout for pastes 255* Updated to CodeIgniter version 2.1.3 256 257### Version 0.8.3: 258 259* From now on, IPs get logged in the DB 260* Added spamadmin: 261 * Enter credentials in config/stikked.php 262 * Visit /spamadmin, login 263 * Click on an IP to list all pastes belonging to it 264 * You can remove all the pastes listed, and optionally block the IP range 265* Updated to CodeIgniter version 2.1.2 266 267### Version 0.8.2: 268 269* Database optimizations: Pastes use less space (if you upgrade from a previous version, execute this SQL statement: "ALTER TABLE pastes DROP paste;" 270* Anti spam features: 271 * Option to disable recent pastes 272 * Option to require the user to enter a captcha 273 274### Version 0.8.1: 275 276* Cleaner options 277* Valid RSS feed 278* Simpler API response (non-JSON) 279* Favicon 280* gw.gd URL shortener (replaces bit.ly) 281* Minor fixes 282 283### Version 0.8: 284 285* Added backup function (yoursite.com/backup; set credentials in stikked.php config) 286* Added pagination to the replies table 287* Added RSS-Feeds to recent pastes and paste replies 288* Embeddable pastes 289* GeSHi updated to version 1.0.8.10 290* Codemirror turned off by default 291* Codemirror: Syntax changes dynamically with selection in language dropdown 292 293### Version 0.7: 294 295* An API (see http://paste.scratchbook.ch/api) 296* Integration of Codemirror (http://codemirror.net) 297 298### Version 0.6: 299 300* The language-selection was broken; the dropdown now features all the languages that GeSHi supports 301* Updated to CodeIgniter version 2.1.0 302* Creation of bit.ly-URLs (instead of snipurl) 303* Fixed download link 304* Paste downloads as a .txt file 305* No need to have PHP short tags enabled 306* Automatic creation of all necessary MySQL tables 307* Raw-mode is now like the raw-mode on pastebin.com 308* Minification and concatenation of CSS and JavaScript files (can be turned on/off) 309* Breached the license by removing the nasty copyright footer 310 311### Version 0.5: 312 313* Paste Replies 314* Fluid width pastes 315* Auto copying paste url to clipboard. 316* Paste expiration. 317* Fully standards compliant css and xhtml. 318* Random generating names for anonymous users 319* Paste downloading 320