2012-10-17 20:44:35 +00:00
|
|
|
|
Isso – Ich schrei sonst
|
|
|
|
|
=======================
|
|
|
|
|
|
2013-09-05 17:48:17 +00:00
|
|
|
|
You love static blog generators (especially [Acrylamid][1] *cough*) and the
|
|
|
|
|
only option to interact with the community is [Disqus][2]. There's nothing
|
2012-12-16 18:34:15 +00:00
|
|
|
|
wrong with it, but if you care about the privacy of your audience you are
|
|
|
|
|
better off with a comment system that is under your control. This is, were
|
|
|
|
|
Isso comes into play.
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-05 17:48:17 +00:00
|
|
|
|
[1]: https://github.com/posativ/acrylamid
|
2013-09-05 17:52:51 +00:00
|
|
|
|
[2]: https://disqus.com/
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-10-03 12:36:00 +00:00
|
|
|
|
**[Screenshot @2013-09-13](http://posativ.org/~tmp/isso-preview.png)** |
|
|
|
|
|
**[Screenshot @2013-10-03](http://rw.posativ.org/n1v/o)** |
|
2013-09-26 13:30:31 +00:00
|
|
|
|
**[Try Yourself!](http://posativ.org/isso/static/post.html)** (in case it's not crashed ;-)
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-06 18:21:11 +00:00
|
|
|
|
Isso is not stable (pretty far from that state) and the database format may
|
|
|
|
|
change without any backwards compatibility. Just saying.
|
|
|
|
|
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-02 12:44:53 +00:00
|
|
|
|
Features
|
|
|
|
|
--------
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-05 17:52:51 +00:00
|
|
|
|
* [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) comments
|
2013-10-09 16:02:55 +00:00
|
|
|
|
* SQLite backend, Disqus import
|
|
|
|
|
* client-side JS (currently 61kb minified, 21kb gzipped)
|
2013-10-03 12:36:00 +00:00
|
|
|
|
* I18N, available in german and english (also fallback)
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2012-12-16 13:00:40 +00:00
|
|
|
|
|
2013-09-02 12:44:53 +00:00
|
|
|
|
Roadmap
|
|
|
|
|
-------
|
2012-12-16 12:55:18 +00:00
|
|
|
|
|
2013-09-02 12:44:53 +00:00
|
|
|
|
- Ping/TrackBack™ support
|
|
|
|
|
- simple admin interface
|
2013-09-12 17:10:03 +00:00
|
|
|
|
- spam filtering
|
2012-10-25 14:20:16 +00:00
|
|
|
|
|
2012-12-16 13:00:40 +00:00
|
|
|
|
|
2012-12-16 12:55:18 +00:00
|
|
|
|
Installation
|
|
|
|
|
------------
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
Requirements:
|
|
|
|
|
|
|
|
|
|
- Python 2.6 or 2.7
|
2013-10-02 12:26:06 +00:00
|
|
|
|
- [NPM](https://npmjs.org/) and [Bower](http://bower.io/)
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-13 13:10:24 +00:00
|
|
|
|
On Debian/Ubuntu install the following packages
|
|
|
|
|
|
|
|
|
|
~> sudo aptitude install python-setuptools python-dev npm
|
|
|
|
|
~> ln -s /usr/bin/nodejs /usr/bin/node
|
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
For now (as long as there is no stable version), you need to manually
|
|
|
|
|
build everything:
|
|
|
|
|
|
|
|
|
|
~> git clone https://github.com/posativ/isso.git
|
|
|
|
|
~> cd isso/
|
|
|
|
|
~> python setup.py develop
|
|
|
|
|
|
2013-10-09 16:02:55 +00:00
|
|
|
|
To fetch the requires JS components, run:
|
2013-10-02 12:26:06 +00:00
|
|
|
|
|
|
|
|
|
~> cd isso/js/
|
|
|
|
|
~> bower install almond q requirejs requirejs-domready requirejs-text
|
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
You can now either use the JS client as-is (using [require.js][r.js], see
|
|
|
|
|
below) or compile all JS into a single file:
|
|
|
|
|
|
|
|
|
|
~> cd isso/js
|
|
|
|
|
~> npm install -g requirejs uglifyjs
|
|
|
|
|
~> r.js -o build.embed.js
|
|
|
|
|
~> r.js -o build.count.js
|
|
|
|
|
|
2013-10-09 16:02:55 +00:00
|
|
|
|
At last, you need to build the CSS:
|
|
|
|
|
|
|
|
|
|
~> cd ../css
|
|
|
|
|
~> gem install sass
|
|
|
|
|
~> scss isso.scss > isso.css
|
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
Before you start, you may want to import comments from
|
|
|
|
|
[Disqus.com](https://disqus.com/):
|
|
|
|
|
|
|
|
|
|
~> isso import ~/Downloads/user-2013-09-02T11_39_22.971478-all.xml
|
|
|
|
|
[100%] 53 threads, 192 comments
|
|
|
|
|
|
|
|
|
|
You start the server via (try to visit [http://localhost:8080/static/post.html]()).
|
2013-09-05 17:48:17 +00:00
|
|
|
|
|
|
|
|
|
~> isso run
|
|
|
|
|
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
Webserver Configuration
|
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
|
This part is not fun, I know. I have prepared two possible setups for nginx,
|
|
|
|
|
using Isso on the same domain as the blog, and on a different domain. Each
|
|
|
|
|
setup has its own benefits.
|
|
|
|
|
|
|
|
|
|
### Isso on a Sub URI
|
|
|
|
|
|
|
|
|
|
Let's assume you want Isso on `/isso`, use the following nginx snippet
|
2013-09-05 17:52:51 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```nginx
|
|
|
|
|
server {
|
|
|
|
|
listen [::]:80;
|
|
|
|
|
listen [::]:443 ssl;
|
|
|
|
|
server_name example.tld;
|
|
|
|
|
root /var/www/example.tld;
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
location /isso {
|
2013-09-13 17:58:26 +00:00
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
2013-09-12 17:10:03 +00:00
|
|
|
|
proxy_set_header X-Script-Name /isso;
|
|
|
|
|
proxy_pass http://localhost:8080;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
The Isso API endpoint is now `example.tld/isso`, check by `curl`ing the client
|
|
|
|
|
JS located at `http://example.tld/isso/js/embed.js`.
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
### Isso on a Dedicated Domain
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
...
|
2013-09-02 12:44:53 +00:00
|
|
|
|
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
Website Integration
|
|
|
|
|
-------------------
|
2013-09-02 12:44:53 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
Add the following two lines into your HTML header:
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```html
|
|
|
|
|
<link rel="stylesheet" href="http://example.tld/isso/static/isso.css" />
|
2013-10-13 13:10:24 +00:00
|
|
|
|
<script src="http://example.tld/isso/js/embed.min.js"></script>
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
To enable comments, add a `<div id="#isso-thread"></div>` below your post and
|
|
|
|
|
let the magic happen :-)
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
To add comment count links to your index page, include `count.min.js` at the
|
|
|
|
|
very bottom of your document. All links followed by `#isso-thread`, are
|
|
|
|
|
updated with the current comment count.
|
2012-10-23 19:09:51 +00:00
|
|
|
|
|
2013-09-13 17:58:26 +00:00
|
|
|
|
This functionality is already included when you embed `embed.min.js`, do
|
|
|
|
|
*not* mix `embed.min.js` and `count.min.js` in a single document.
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
### Embed with require.js
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
This section is primarily for developers: The client-side JS is modularized
|
|
|
|
|
and uses an AMD loader for execution. You can easily hack on the JS files,
|
|
|
|
|
when using [require.js][r.js]:
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```html
|
|
|
|
|
<link rel="stylesheet" href="/static/isso.css" />
|
2013-10-02 12:26:06 +00:00
|
|
|
|
<script src="/js/config.js"></script>
|
|
|
|
|
<script data-main="/js/embed" src="/isso/js/components/requirejs/require.js"></script>
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
See [docs/API.md](https://github.com/posativ/isso/blob/master/docs/API.md).
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
|
|
|
|
|
2012-12-16 12:55:18 +00:00
|
|
|
|
Alternatives
|
|
|
|
|
------------
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
- [talkatv](https://github.com/talkatv/talkatv) – Python
|
2013-09-12 17:20:31 +00:00
|
|
|
|
- [Juvia](https://github.com/phusion/juvia) – Ruby on Rails
|
2013-09-12 17:10:03 +00:00
|
|
|
|
- [Tildehash.com](http://www.tildehash.com/?article=why-im-reinventing-disqus) – PHP
|
|
|
|
|
- [SO: Unobtrusive, self-hosted comments](http://stackoverflow.com/q/2053217)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[r.js]: http://require.js/
|