A micropub speaking blog.
Although this allows some customisation, it isn't really being built in that manner. So please fork if you want to use for your own site, as I will probably change it completely when I get bored of how it works.
This is an almost all-in-one solution for running an "IndieWeb" blog. To get running you will need to:
-
Run
go install hawx.me/code/tally-ho@latest, or clone this repo and rungo build -
Make a directory to put media files in (
tally-howill write files to this directory but will not serve them) -
Create a config file, by default it looks for a file called
config.tomlme = "https://john.example.com/" # the URL tally-ho will be accessed from baseURL = "https://john.example.com" # the URL the media directory will be accessed from mediaURL = "https://media.john.example.com" [context] name = "John" author = "John Doe" copyright = "© 2025 John D. Doe." links = [ { name = "posts", url = "/posts" }, { name = "info", url = "/info" }, { name = "etc", url = "/etc" }, ] # each of these blocks can be left out if you don't want to use them [flickr] consumerKey = "..." consumerSecret = "..." # To get these values you can use the cmd/flickr-credentials tool which uses # this config file to perform the web authentorization flow. # # $ go install hawx.me/code/tally-ho/cmd/flickr-credentials # $ flickr-credentials -config $PATH_TO_CONFIG accessToken = "..." accessTokenSecret = "..." [github] clientID = "..." clientSecret = "..." # To get this value you can use the cmd/github-credentials tool which uses # this config file to perform the web authentorization flow. # # $ go install hawx.me/code/tally-ho/cmd/github-credentials # $ github-credentials -config $PATH_TO_CONFIG accessToken = "..." -
Copy the
./webdirectory somewhere
Then you are ready to run it:
$ tally-ho
--config $PATH_TO_CONFIG_FILE
--web $PATH_TO_WEB_DIR
--media-dir $PATH_TO_MEDIA_DIR
--db ./db.sqlite
It will be listening on http://localhost:8080, this can be changed by passing
--port or --socket. If run as a systemd service then it will detect a
corresponding .socket definition.
To get webmentions for social media posts I recommend setting up
https://brid.gy/, as tally-ho only allows syndicating to Flickr/GitHub and
not gathering responses (yet).
See ./misc for examples of config files for nginx and systemd.
Possibly up-to-date feature list:
-
IndieAuth:
- Authentication in header
- Authentication in body
-
Config:
- Get
qoptions - Micropub
q=config - Micropub
q=media-endpoint - Micropub
q=source - Micropub
q=syndicate-to - Media
q=last
- Get
-
Posting:
- Create with
application/x-www-form-urlencoded - Create with
application/json - Create with
multipart/form-data- Store photo/audio/video as if they had been sent via the media endpoint
- Update with
application/json- Require
updatescope for requests
- Require
- Upload to media endpoint
- Delete
-
410 Goneentry - Remove from listing
- Remove from grouped likes
-
- Undelete
-
mp-slug -
post-status
- Create with
-
Syndication:
- Flickr
- Create
- Photos
- Videos
- Likes
- Replies
- Retreive likes
- Retrieve comments
- Create
- GitHub
- Likes
- Repos
- Issues
- Comments
- Create issue (in-reply-to repo)
- Create comment (in-reply-to issue)
- Retrieve reactions
- Retrieve comments
- Likes
- Flickr
-
Webmentions:
- Receive webmentions for posts
- Send webmentions on create
- Send webmentions on update
- Send webmentions on delete
- Send webmentions on undelete
-
Display:
- List:
- All
- Combine likes
- Pagination
- By kind
- By category
- Entry:
- Notes
- Posts
- Photos
- Videos
- Likes
- Replies
- Bookmarks
- RSVPs
- Checkins (kinda)
- Reposts
- indiebookclub
- teacup
- List:
-
Feeds:
- RSS
- Atom
- Jsonfeed (https://jsonfeed.org/)
- WebSub
- On create
- On update
- On delete
- On undelete
Relevant specs: