honk

honk is an Activitypub software that focused on Single-user instance.

Install

honk is available at OpenBSD ports.

# pkg_add honk

Configuring httpd.conf

httpd will used for acme-client. Edit /etc/httpd.conf:

# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $

server "example.com" {
	listen on * port 80
	location "/.well-known/acme-challenge/*" {
		root "/acme"
		request strip 2
	}

	location * {
		block return 302 "https://$HTTP_HOST$REQUEST_URI"
	}
}

Replace example.com with your hostname.

Check the configuration with httpd -n, if it is OK enable and start relayd (as root):

# rcctl enable httpd
# rcctl start httpd

Configuring relayd.conf

relayd will be used as the reverse proxy sitting in front of honk. Insert the following configuration in /etc/relayd.conf:

# $OpenBSD: relayd.conf,v 1.4 2018/03/23 09:55:06 claudio Exp $

ext_inet="<IPv4 address>"
ext_inet6="<IPv6 address>"

table <honk_server> { 127.0.0.1 }
table <httpd_server> { 127.0.0.1 }

http protocol honk { # Protocol for upstream honk server
    #tcp { nodelay, sack, socket buffer 65536, backlog 128 } # Uncomment and adjust as you see fit
    tls { keypair example.com }

    # Append a bunch of headers
    match request header append "X-Forwarded-For" value "$REMOTE_ADDR" # This two header and the next one are not strictly required by honk but adding them won't hurt
    match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"

    match request header append "Connection" value "upgrade"
}

relay www {
    listen on $ext_inet port https tls # Comment to disable listening on IPv4

    protocol honk

    forward to <honk_server> port 4000
}

relay www6 {
    listen on $ext_inet6 port https tls # Comment to disable listening on IPv6

    protocol honk

    forward to <honk_server> port 4000
}

Change example.com with your instance domain.

Again, change <IPv4 address> and <IPv6 address> to your server's address(es) and comment one of the two listen options if needed.

Check the configuration with relayd -n, if it is OK enable and start relayd (as root):

# rcctl enable relayd
# rcctl start relayd

Setting the honk up

We need to access /var/honk to setup database. So login as root

$ doas su

Go to /var/honk, Then set up database.

# cd /var/honk
# doas -u _honk honk init
username: yourusername
password:
listenaddr: 127.0.0.1:4000
servername: example.com

Replace yourusername with your username, example.com to your hostname.

Then start the server.

# rcctl start honk

If server succesfully started, You may start it during boot.

# rcctl enable honk

Finally, You can visit https://example.com to see your instance.

You may also adjust your instance settings by doing doas -u _honk honk admin (Every honk command must be run under _honk user). Also read honk(1)

Managing users

honk is actually focused for single user instance, But it can also used for multiple users.

  • Adding user can done by executing doas -u _honk honk adduser
  • Changing user password can done by executing doas -u _honk honk chpass
  • Deleting user can done by executing doas -u _honk honk deluser

User interface basic

honk is also known for it's humorous UI. An post is a "honk". Here's some info to get you started:

In honk, The users that you follow is called as "honkers" which you can manage at menu -> honkers

  • it's honking time will create a post

Post Actions:

  • bonk repost, rehonk, or reblog.
  • honk back reply to a post
  • zonk Delete a post
  • ack like a post.
  • badonk react to a post.

You can modify the text by editing header.html under views directory.

And you may also like customizing your instance by copying style.css to local.css and edit local.css under views directory.

Also read