A micropub speaking blog.
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-ho
will write files to this directory but will not serve them) -
Create a config file, by default it looks for a file called
config.toml
me = "https://john.example.com/" name = "John Doe" title = "John Doe's blog" description = "My great blog" # the URL tally-ho will be accessed from baseURL = "http://blog.john.example.com/" # the URL the media directory will be accessed from mediaURL = "http://media.john.example.com/" # each of these blocks can be left out if you don't want to use them [twitter] consumerKey = "..." consumerSecret = "..." accessToken = "..." accessTokenSecret = "..." [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
./web
directory somewhere -
Edit the contents of
web/templates/foooter.gotmpl
to not have my details, and potentially change the css or templates to be more your style
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
Twitter/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
q
options - 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
update
scope for requests
- Require
- Upload to media endpoint
- Delete
-
410 Gone
entry - Remove from listing
- Remove from grouped likes
-
- Undelete
-
mp-slug
-
post-status
- Create with
-
Syndication:
- Twitter
- Create
- Notes
- Posts
- Photos
- Videos
- Likes
- Replies
- Reposts (url only)
- Retrieve likes
- Retrieve replies
- Retrieve retweets
- Create
- 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
- Twitter
-
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: