🌺 self-hosted microblogging inspired by http://sebsauvage.net/wiki/doku.php?id=php:shaarli. Destilled down to the bare minimum, with easy hosting and security in mind. No PHP, no DB, no server-side templating, JS optional. https://demo.mro.name/shaarligo

Marcus Rohrmoser b27a11abc7 🐳. 1 month ago
static b27a11abc7 🐳. 1 month ago
testdata d61a97e196 also use <title>. 2 months ago
tpl 7d3b870429 🐳. 2 months ago
.gitattributes c87dc3136a fix github language detection 1 year ago
.gitignore 2d4c13e1b2 cli 4 months ago
.travis.yml 341d8989b7 template & travis 5 months ago
README.md 301a1499d8 🐳. 2 months ago
ShaarliGo.go c65e142dda seed from config.yaml rather than code. 2 months ago
ShaarliGo_test.go 1a275998ac https://goreportcard.com/report/github.com/mro/ShaarliGo 4 months ago
api0.go 94fb96856f avoid allocation of temp tag array and use visitor + callback. 1 month ago
api0_test.go 55c512466a tags case-insensitive. 1 month ago
atom.go 55c512466a tags case-insensitive. 1 month ago
atom_test.go 55c512466a tags case-insensitive. 1 month ago
ban.go e3322e133f 2019 6 months ago
ban_test.go 1a275998ac https://goreportcard.com/report/github.com/mro/ShaarliGo 4 months ago
bindata.go b27a11abc7 🐳. 1 month ago
build.sh 92963e3068 light + lightweight theme (no bootstrap) 3 months ago
cgi-fake.sh f82137e2c2 - rename, 2nd. 1 year ago
comb.go d61a97e196 also use <title>. 2 months ago
comb_test.go d61a97e196 also use <title>. 2 months ago
config-core.go c65e142dda seed from config.yaml rather than code. 2 months ago
config-core_test.go 74a5907dd3 gofmt -w -l -s . 4 months ago
config.go 1a275998ac https://goreportcard.com/report/github.com/mro/ShaarliGo 4 months ago
config_test.go f10a2b335f 🐳. 5 months ago
doap.rdf 9cdd6ea430 git repo subdomain 10 months ago
emoji_map.go 942ac74720 make #§ and #† proper tags and make emojis implicit tags. 9 months ago
feedwriter.go 1a275998ac https://goreportcard.com/report/github.com/mro/ShaarliGo 4 months ago
feedwriter_test.go 74a5907dd3 gofmt -w -l -s . 4 months ago
flow.dot f82137e2c2 - rename, 2nd. 1 year ago
http.go 1a275998ac https://goreportcard.com/report/github.com/mro/ShaarliGo 4 months ago
mini-build.sh 278596c978 rename ‚pub/posts‘ to ‚=/p and according. 1 year ago
pinboard.go e3322e133f 2019 6 months ago
pinboard_test.go e3322e133f 2019 6 months ago
post-test.sh 2c5481d0e5 - trailing slashes 1 year ago
search.go 74a5907dd3 gofmt -w -l -s . 4 months ago
search_test.go e3322e133f 2019 6 months ago
tags.go 94fb96856f avoid allocation of temp tag array and use visitor + callback. 1 month ago
tags_test.go 94fb96856f avoid allocation of temp tag array and use visitor + callback. 1 month ago
tools.go 2d4c13e1b2 cli 4 months ago
tools_test.go e3322e133f 2019 6 months ago
version.go 24491e7c0b version bump. 9 months ago

README.md

🌩 Lightning Talk at the 34c3 🚀

Build Status

ShaarliGo

self-hosted microblogging inspired by http://sebsauvage.net/wiki/doku.php?id=php:shaarli. Destilled down to the bare minimum, with easy hosting and security in mind. No PHP, no DB, no server-side templating, JS optional.

Design Goals

  • backwards compatible posting (https://code.mro.name/mro/Shaarli-API-test)
  • trivial installation and minimal hosting requirements (run on simple hosted webspace),
  • keep server lean, especially for readers,
  • standards compliant (Atom, Atompub, WebSub),
  • easy migration from existing shaarlis,
  • run ok without javascript,
  • visitor reading operates on static flat files only (no server code),
  • secure against brute force login attacks,
  • easy translation & skinning,
  • leverage existing, widely deployed web tec (CGI, XSLT, HTML, CSS),
  • easy fail2ban integration / DOS mitigation,
Quality very good good normal irrelevant
Functionality ×
Reliability ×
Usability ×
Efficiency ×
Changeability ×
Portability ×

Dependencies

tl;dr: a webserver that can execute CGIs and serve files from disc.

ShaarliGo is an old-school CGI binary executable, so it needs a webserver to drive it. Configurations come for Apache (automatic, see static/.htaccess) and Lighttpd (see static/app/lighttpd.conf).

As a self-contained, statically linked, Go executable, it has no runtime dependencies and works on a variety of platforms.

ShaarliGo needs write access to the webroot filesystem to once unpack the web assets and when posting update the content.

Storage footprint is <25 KiB per post.

When posting a page, it is once accessed via HTTP GET to infer title, tags and a thumbnail image URL.

Install / Update

  1. $ curl -LRo shaarligo.cgi.gz http://purl.mro.name/shaarligo-Linux-x86_64.cgi.gz # uname -s; uname -m
  2. $ gunzip shaarligo.cgi.gz
  3. $ chmod a+x,a-w shaarligo.cgi
  4. visit in your browser: http://my.web.space/subdir/shaarligo.cgi

done (Apache)! For lighttpd see static/app/lighttpd.conf.

Or build from source at http://purl.mro.name/ShaarliGo

Todos

  1. private posts,
  2. PuSH/PubSubhubbub / WebSub,
  3. import shaarlis (login?),
  4. pwd reset (maybe deleting from app/config.yaml is acceptable),
  5. images/enclosures,
  6. comments,
  7. trackback/pingback

Shaarli(OS|er) Compatibilty

see https://code.mro.name/mro/ShaarliOS/src/master/ios/ShaarliOS/API/ShaarliCmdUpdateEndpoint.m and https://code.mro.name/mro/Shaarli-API-test/src/master/tests/test-post.sh