this post was submitted on 06 Nov 2023
33 points (100.0% liked)

Open Source

31164 readers
83 users here now

All about open source! Feel free to ask questions, and share news, and interesting stuff!

Useful Links

Rules

Related Communities

Community icon from opensource.org, but we are not affiliated with them.

founded 5 years ago
MODERATORS
 

The Molly fork of Signal now has a variant that supports UnifiedPush, but it requires a helper called Mollysocket to be installed on a server somewhere. I can't get my head around the (we'll call them 'lean') docs, and I've never encountered such a helper for other UP apps. They just ask what to attach to, and they attach.

Has anyone fought through this?

all 7 comments
sorted by: hot top controversial new old
[–] Kefwar@feddit.nl 8 points 1 year ago

UP requires server-side support. Signal has ignored the request to implement it numerous times. So users need to host a proxy that uses Signal's websocket notification protocol to connect with Signal and distributes received notifications over UP. This moves the battery-draining websocket from mobile devices to some net-powered server.

[–] uzay@infosec.pub 2 points 1 year ago (1 children)

Oh, so that's why there's no hint of UP in the UP version of Molly

in the settings if you change notification method from websocket to unified push, the UP settings come up, including a server address (which is what they intend to be used) or some air gap mode that i can't find documented

[–] rbn@feddit.ch 2 points 1 year ago (1 children)

Never heard of Molly before. Will look into that when I find some time. Thanks for the hint ;)

you probably already found this, but for others who might be curious:

https://molly.im/

https://github.com/mollyim/mollyim-android

Prerequisites

  • Internet-facing web server with reverse proxy and domain name (preferably SSL of course)
  • Server behind the reverse proxy with Rust environment

Installation

  • Don't bother downloading the source code to your server; installing it that way gives you a big debug executable
  • Instead just cargo install mollysocket
  • Move the mollysocket executable if desired
  • Run mollysocket once so that it will emit the default config

Configuration

  • Fish the config file out of .config/mollysocket/default-config.toml and copy it somewhere.

config.toml

  • In the new file, replace the allowed_endpoints line with allowed_endpoints = ['*']. The default 0.0.0.0 config appears to be a bug; this setting controls access to endpoints within the app, not IPs from outside. Leaving the original value causes mollysocket to reject everything.
  • Put a proper path in the db = './mollysocket.db' line rather than just having it land wherever you're sitting.
  • Delete the mollysocket.db that was created on first run (even if it's already where you're intending to put it). This is just to make sure the web server creates it and has the correct permissions.

Run script

  • The environment variable ROCKET_PORT must be set or the server will sit and do nothing. It's best to create all of the environment variables mentioned in the README, whether that is in a user profile script or in a shell script that wraps startup. You can change any of these values, but they must exist.
  • export ROCKET_PORT=8020
    export RUST_LOG=info
    export MOLLY_CONF=/path/to/your/config.toml
    

Proxy server

  • You'll need to proxy everything from / to your mollysocket server and ROCKET_PORT.
  • Exclude anything that you may need served from your web server, such as .well-known.

Things to know