+-------------------------------------------------------------------------------
| Running mollysocket on OpenBSD
+-------------------------------------------------------------------------------

Scope of mollysocket
====================

mollysocket is targeted at Signal users that want to use the Signal chat app on
android without google dependencies. mollysocket itself is only a single part
of a multi-program setup, some of which are optional.

Required software
-----------------

For de-googling your Signal experience, as well as mollysocket, you will need:

- Molly, a fork of Signal, installed from one of the official sources:
  https://molly.im/get.html
- An UnifiedPush client app on the same android device. See https://ntfy.sh for
  reference. This will default to using the public ntfy.sh server for
  notifications. If you'd like to self-host that as well, net/ntfy is available
  in the ports tree.
- An optional reverse-proxy setup in front of mollysocket, if you'd like Molly
  to be able to communicate with mollysocket. relayd can be used for this.
  Even if optional, this is recommended. Otherwise, you'd need to setup
  mollysocket in 'airgapped' mode. Refer to upstream documentation for this.

Finish mollysocket install
==========================

Before running mollysocket for the first time, you need to generate a VAPID
key and append it to /etc/mollysocket.conf. To do this, you may run:

# sed -i "s|changeme|$(mollysocket vapid gen)|" /etc/mollysocket.conf

Since /etc/mollysocket.conf now contains a secret, take care that
permissions on that file stay restrictive.

Reverse proxy in front of mollysocket
=====================================

By default, mollysocket listens to port 8020 on localhost for http
connections and expects to have an external reverse proxy adding https.
If using relayd, this snippet should get you started:

    table <mollysocket> { 127.0.0.1 }

    http protocol "wwwsecure" {
	...
	pass request quick header "Host" value "mollysocket.example.org" \
	    forward to <mollysocket>
	...
    }

    relay "https4" {
	...
	protocol wwwsecure
	forward to <mollysocket> port 8020
	...
    }

Other reverse proxies can be used (nginx is common).

Custom UnifiedPush endpoint
===========================

The default option is to use the public endpoint run at https://ntfy.sh/.
Others (public or otherwise) can be used; set "allowed_endpoints" in
/etc/mollysocket.conf.

Post-setup steps
================

After configuring mollysocket on your box, you need to setup the UnifiedPush
notification backend in the Molly app. This will show a device ID which you
can optionally set in "allowed_uuids" in /etc/mollysocket.conf, preventing
any other Molly user from using your mollysocket instance.
