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
|
2013-11-01 15:45:21 +00:00
|
|
|
|
only option to interact with your 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
|
2013-10-19 12:24:36 +00:00
|
|
|
|
better off with a comment system that is under your control. This is, where
|
2012-12-16 18:34:15 +00:00
|
|
|
|
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-30 15:16:38 +00:00
|
|
|
|
**[Try Yourself!](http://posativ.org/isso/)**
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
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-10-30 09:06:09 +00:00
|
|
|
|
* [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) comments written in Markdown
|
2013-10-09 16:02:55 +00:00
|
|
|
|
* SQLite backend, Disqus import
|
2013-10-31 16:14:49 +00:00
|
|
|
|
* client-side JS (currently 54kb minified, 18kb 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
|
|
|
|
|
2012-12-16 12:55:18 +00:00
|
|
|
|
Installation
|
|
|
|
|
------------
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-10-19 12:24:36 +00:00
|
|
|
|
- Python 2.6, 2.7 or 3.3
|
2013-10-31 16:14:49 +00:00
|
|
|
|
- a working C compiler
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
Install Isso with:
|
2013-10-13 13:10:24 +00:00
|
|
|
|
|
2013-10-30 08:28:52 +00:00
|
|
|
|
~> pip install isso
|
2013-10-09 16:02:55 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
Set your database location and website:
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
~> cat my.cfg
|
|
|
|
|
[general]
|
|
|
|
|
dbpath = /var/lib/isso/comments.db
|
|
|
|
|
host = http://example.tld/
|
2013-09-05 17:48:17 +00:00
|
|
|
|
|
2013-11-01 15:45:21 +00:00
|
|
|
|
Optional: you can import your comments from [Disqus.com](https://disqus.com/):
|
2013-09-05 17:48:17 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
~> isso -c my.cfg import ~/Downloads/user-2013-09-02T11_39_22.971478-all.xml
|
|
|
|
|
[100%] 53 threads, 192 comments
|
2013-10-29 16:21:39 +00:00
|
|
|
|
|
2013-11-01 15:45:21 +00:00
|
|
|
|
Now start the server:
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
~> isso -c my.cfg run
|
|
|
|
|
2013-10-30 09:32:48,369 WARNING: unable to connect to SMTP server
|
2013-11-01 15:45:21 +00:00
|
|
|
|
2013-10-30 09:32:48,408 INFO: connected to HTTP server
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
Make sure, Isso can connect to the server that hosts your blog, otherwise you
|
|
|
|
|
are not able to post comments.
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
Website Integration
|
|
|
|
|
-------------------
|
2013-09-05 17:52:51 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
You can run Isso on a dedicated domain or behind a sub URI like `/isso`. It
|
|
|
|
|
makes actually no difference except for the webserver configuration (see
|
|
|
|
|
below).
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-11-01 15:45:21 +00:00
|
|
|
|
Whatever method you prefer (just change the URL), to embed comments add
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<script src="http://example.tld/js/embed.min.js"></script>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
to your HTML (presumedly into `<head>`) and
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-10-19 12:24:36 +00:00
|
|
|
|
```html
|
2013-11-01 16:29:57 +00:00
|
|
|
|
<div id="isso-thread"></div>
|
2013-10-19 12:24:36 +00:00
|
|
|
|
```
|
2012-10-23 18:36:43 +00:00
|
|
|
|
|
2013-11-01 15:45:21 +00:00
|
|
|
|
below your post. That's all. The JavaScript client will automatically detect
|
|
|
|
|
the API endpoint.
|
|
|
|
|
|
|
|
|
|
To show the comment count for posts (but no comments), add
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```html
|
2013-11-01 16:29:57 +00:00
|
|
|
|
<script src="http://example.tld/js/count.min.js"></script>
|
2013-09-12 17:10:03 +00:00
|
|
|
|
```
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-11-01 15:45:21 +00:00
|
|
|
|
to your header and all links ending with `#isso-thread` are updated with the
|
|
|
|
|
current comment count.
|
|
|
|
|
|
2013-10-31 16:14:49 +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.
|
|
|
|
|
|
2013-11-02 14:07:42 +00:00
|
|
|
|
### Client Configuration
|
|
|
|
|
|
|
|
|
|
You can configure the client (the JS part) via `data-` attributes:
|
|
|
|
|
|
|
|
|
|
* data-title
|
|
|
|
|
|
|
|
|
|
When you start a new thread (= first comment on a page), Isso sends
|
|
|
|
|
a GET request that page to see if it a) exists and b) parse the site's
|
|
|
|
|
heading (currently used as subject in emails).
|
|
|
|
|
|
|
|
|
|
Isso assumes that the title is inside an `h1` tag near the isso thread:
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<html>
|
|
|
|
|
<body>
|
|
|
|
|
<h1>Website Title</h1>
|
|
|
|
|
<article>
|
|
|
|
|
<header>
|
|
|
|
|
<h1>Post Title</h1>
|
|
|
|
|
<section id="isso-thread">
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
In this example, the detected title is `Post Title` as expected, but some
|
|
|
|
|
older sites may only use a single `h1` as their website's maintitle, and
|
|
|
|
|
a `h2` for the post title. Unfortunately this is unambiguous and you have
|
|
|
|
|
to tell Isso what's the actual post title:
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<section data-title="Post Title" id="isso-thread">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Make sure to escape the attribute value.
|
|
|
|
|
|
2013-11-05 13:25:12 +00:00
|
|
|
|
* data-isso
|
2013-11-02 17:26:33 +00:00
|
|
|
|
|
|
|
|
|
Isso usually detects the REST API automatically, but when you serve the JS
|
2013-11-05 13:25:12 +00:00
|
|
|
|
script on a different location, this may fail. Use `data-isso` to
|
2013-11-02 17:26:33 +00:00
|
|
|
|
override the API location:
|
|
|
|
|
|
|
|
|
|
```html
|
2013-11-05 13:25:12 +00:00
|
|
|
|
<script data-isso="/isso" src="/path/to/embed.min.js"></script>
|
2013-11-02 17:26:33 +00:00
|
|
|
|
```
|
2013-11-02 14:07:42 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
### Webserver configuration
|
2013-10-19 12:24:36 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
* nginx configuration to run Isso on `/isso`:
|
2013-10-19 12:24:36 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
```nginx
|
|
|
|
|
server {
|
|
|
|
|
listen [::]:80;
|
|
|
|
|
listen [::]:443 ssl;
|
|
|
|
|
server_name example.tld;
|
|
|
|
|
root /var/www/example.tld;
|
2013-10-19 12:24:36 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
location /isso {
|
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
|
proxy_set_header X-Script-Name /isso;
|
|
|
|
|
proxy_pass http://localhost:8080;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2013-10-19 12:24:36 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
* nginx configuration to run Isso on a dedicated domain:
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
```nginx
|
|
|
|
|
server {
|
|
|
|
|
listen [::]:8080;
|
|
|
|
|
server_name comments.example.tld;
|
2012-10-23 19:09:51 +00:00
|
|
|
|
|
2013-10-31 16:14:49 +00:00
|
|
|
|
location / {
|
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
|
proxy_pass http://localhost:8080;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2012-10-17 20:44:35 +00:00
|
|
|
|
|
|
|
|
|
|
2013-10-31 10:57:34 +00:00
|
|
|
|
Documentation
|
|
|
|
|
-------------
|
2013-09-12 17:10:03 +00:00
|
|
|
|
|
2013-10-29 16:21:39 +00:00
|
|
|
|
- [Configuration](https://github.com/posativ/isso/blob/master/docs/CONFIGURATION.rst)
|
2013-11-01 15:45:21 +00:00
|
|
|
|
- [uWSGI](https://github.com/posativ/isso/blob/master/docs/uWSGI.md)
|
2013-10-31 10:57:34 +00:00
|
|
|
|
- [Contributing](https://github.com/posativ/isso/blob/master/CONTRIBUTING.md)
|
|
|
|
|
- [Development](https://github.com/posativ/isso/blob/master/docs/DEVELOPMENT.md)
|
2013-11-01 15:45:21 +00:00
|
|
|
|
- [API overview](https://github.com/posativ/isso/raw/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)
|