Add JoinMarket WebUI#1216
Conversation
values must be present before sending payments. former values where just placeholders, new ones are taken from: https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/4ba817e5d236559c15b08090680b9e84085d7a5e/jmclient/jmclient/cli_options.py#L134-L136
|
Wow exciting stuff @theborakompanioni, great work! I realise this is still a draft but just checking, is this supposed to work in its current state? I'm trying to mix but keep hitting the same error I tried about 5 coinjoins, hit the same error every time. Any ideas? |
|
Hey @lukechilds !
It is built from the respective master branches of
I have personally not tried this on mainnet yet, pinging @AdamISZ who's the most capable of answering these questions.
Thank you for checking it out and your valuable feedback. Highly appreciated! |
|
@lukechilds we have a default setting in the config Meanwhile the current setup via the RPC, while it does have a Also yeah you can do 30K but consider bumping it up to like 100K if at all possible, just to avoid edge cases. Even better, test on signet, but you need to have people running signet maker bots for that. |
|
Oh I forgot to mention, backend needs restart if you edit the config manually, otherwise it would not be updated. There's a bit of an issue around config updates generally, for now, editing the file is simplest. |
|
Got it, thanks guys! Looking forward to the stable release, ping me when you're ready for review, super exited for this one! And of course let me know if you need anything or if there's anything I can do to help. |
🙏
Thanks @lukechilds, your help is highly appreciated. I am currently trying to make use of the Is this okay for the first version or should we go a different route? Otherwise we have to come up with our own solution before the first release. However, there may be a completely different best practice you can advise. Edit: Okay, found that at least one app ( |
ba74861 to
8d8c2f1
Compare
|
I think basic auth should be fine for now. We can always upgrade it to something more fancy at a later stage, but I'd say basic auth is good enough for the first release (which is basically an "alpha" version anyway). |
|
Yep totally cool ot use HTTP basic auth, we have a number of apps using it currently. Also, without giving too much secret sauce away, $APP_PASSWORD is more of a hacky temporary solution to locking down apps. We're working on a much cleaner solution at the Umbrel level that doesn't involve any custom handling from apps. So totally makes sense to go with HTTP basic auth for now until we have that ready. A nice thing is that the browser caches the HTTP basic auth credentials after a sucessful login. So while it doesn't look too pretty, it's relatively uninvasive. Most users will only see it the first time they use the app, then the credentials will be cached and they won't see it again. |
Great to hear. Thanks for your feedback. All upstream app versions are updated and ready to go. One last question before signing off the submission: Are there any problems with changing to a non-root user in a subsequent release, or is it safe to do so? Just asking if we should tackle this before or after. Otherwise, we would be ready. 🚀 |
It's fine to ship as root. It's just a reccomendation that apps don't run as root but it's not strictly enforced. You can implmement that in a future update. One small issue is that the persistent data that lives in the volume from existing installs will probably not be readable by the new user after the update since it would have been created by root. But that's easily fixable by adding a migration step that chowns the files to the new user during the update process. We have stuff in place to handle that, so don't worry about it, I can talk you through it when we get to that point. |
Nice. Thank you 🙏 |
|
Awesome! Thanks for getting this ready @theborakompanioni 🧡 PR looks good to me, let us know if there is anything that still needs to be done @lukechilds |
|
I see this in the description:
But I don't see |
No, it doesn't. Sorry, I wrote the checklist before a decision was made. Just |
Got it, no worries, we don't need to block the intitial release for this but it would be a really awesome feature to support. Main benefit of If their Umbrel get destroyed, they could setup a new one and use their previous Umbrel seed and installing JM would also recover their previous funds. |
|
Ok so just had a play with this, it's looking really really good! The UI is 😘👌. Magic wallet mode is a thing of beauty! One issue I had is that it took me quite a few attempts to get a (taker) coinjoin to work. I think I tried maybe 10 attempts at coinjoining before I managed to suceed. Is this something you've also experienced or am I doing something wrong? One other things was that it seemed like the state of the UI and the state of JM were kind of out of sync at times. I could see stuff failing by tailing the JM logs on the filesystem but there wasn't any feedback in the UI that the CJ had failed or why. This was easy enough for me to figure out but I don't think many Umbrel users would be comfortable hunting down log files, so there may be some confusion with users there. It woulds be great if the UI could handle the different ways CJs can fail and display a simple but helpful error to users so they have some idea what's going wrong. Of course again that's an improvement that doesn't need to delay the intial release, just a suggestion. |
|
Btw guys how do you feel about naming the app just "JoinMarket" instead of "JoinMarket Web UI"? I'm not sure how closely affiliated with upstream JM devs you are or if they would be ok with that. But assuming they are I think it's a much cleaner name, thoughts? |
It's hard to say without knowing all the details of what you're doing, which of course you shouldn't say, on mainnet. With default number of counterparties ~ 9-10 we can expect:
I generally experience success first time, but to say any more than vague generalities, would need to at least know, what error is shown on the console. For this reason agree strongly that we need feedback to the user on a failure at the end of a Taker event. |
We are in the process of coming up with a better name. Our thinking was that we could change it later on, but since this issue came up here and we have a couple of ACKs on "Jam" - which is short for Joinmarket's awesome, man - we might as well go with it straight away. |
|
Haha, love Jam! So rename to Jam and then good to merge? |
Jep, will rename everything, |
|
|
||
| services: | ||
| jam: | ||
| image: ghcr.io/joinmarket-webui/joinmarket-webui-standalone:v0.0.3-clientserver-v0.9.5@sha256:d33817e4daec4ddaaf95a1c08e54f50cff4893b7d8c5b3bbe8b179ced74bbaa2 |
There was a problem hiding this comment.
Did you miss the name change in the Docker image or is it not renamed to jam-standalone (or something like that)?
There was a problem hiding this comment.
No, image is already pinned. Everything will be renamed (repos, support group, hyperlinks in general, etc.) within the next releases. Since it is not user-facing - is it okay to leave it that way?
|
Perfect! Ok lemme just quickly just run through another test with all the naming changes and make sure nothing's broken, then we can merge this. 🚀 |
|
Really amazing work, everyone! The app's UI is very well done. Congrats on the launch, and thank you for finally making JoinMarket with web UI a reality. ❤️ Here are the gallery images and app icon for Jam. If you ever want to change/update them, feel free to directly open a PR at getumbrel/umbrel-apps-gallery. |

This is a draft PR until following TODOs are finished on our side:
APP_PASSWORD/APP_SEEDsupportApp Submission
App name
JoinMarket Web UI
Version
v0.0.3
One line description of the app
(max 50 characters)
A user-friendly UI for JoinMarket.
Summary of the app
(50 to 200 words)
JoinMarket WebUI is a user-interface for JoinMarket with a focus on user-friendliness.
It is time for top-notch privacy for your bitcoin. Widespread use of JoinMarket improves bitcoin's fungibility and privacy for all.
The app provides sensible defaults and is easy to use for beginners while still providing the features advanced users expect.
Developer name
JoinMarket WebUI Organisation
Developer website
https://github.com/joinmarket-webui
Source code link
(Link to your app's source code repository.)
https://github.com/joinmarket-webui/joinmarket-webui
Support link
(Link to your Telegram support channel, GitHub issues/discussions, support portal, or any other place where users could contact you for support.)
https://github.com/joinmarket-webui/joinmarket-webui/issues
Requires
256x256 SVG icon
(Submit an icon with no rounded corners as it will be dynamically rounded with CSS. GitHub doesn't allow uploading SVGs directly, so please upload your icon to an alternate service, like https://svgur.com, and paste the link below.)
https://svgur.com/i/dsx.svg
Gallery images
(Upload 3 to 5 high-quality gallery images (1440x900px) of your app in PNG format, or just upload 3 to 5 screenshots of your app and we'll help you design the gallery images.)
I have tested my app on: