Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App Submission - Simplexmq #1510

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Conversation

arguser
Copy link
Contributor

@arguser arguser commented Sep 21, 2024

App Submission

App name

SimpleXMQ
...

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.)
We will help finalize this icon before the app goes live in the Umbrel App Store.

...

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.)
We will help finalize these images before the app goes live in the Umbrel App Store.
...

I have tested my app on:

  • umbrelOS on a Raspberry Pi
  • umbrelOS on an Umbrel Home
  • umbrelOS on Linux VM

@arguser
Copy link
Contributor Author

arguser commented Sep 21, 2024

Looks like I will have to build a multi-architecture image for this...

@arguser arguser changed the title App Submission - Simplex-Server App Submission - Simplexmq Sep 24, 2024
@nmfretz
Copy link
Contributor

nmfretz commented Oct 3, 2024

@arguser thanks for submitting SimpleX 🎉. This one's been pretty heavily requested.

We've got our heads down on some other aspects of the codebase, but we have this on our radar and will get to it soon.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 25, 2024

Hey @arguser, thanks for your patience 🙏.

Before I dig in too far, do you currently have Simplexmq working?

I just took a quick scan through the PR and noticed that both the smp and xftp services are set up as Tor only:
e.g.,

environment:
      ADDR: ${APP_SIMPLEX_SERVER_SMP_HIDDEN_SERVICE}
      PASS: ${APP_PASSWORD}

But I don't think the current torrc-template you have will set things up correctly:

# Enable log (otherwise, tor doesn't seem to deploy onion address)
Log notice file /tmp/notices.log
# Enable single hop routing (2 options below are dependencies of the third) - It will reduce the latency at the cost of lower anonimity of the server - as SMP-server onion address is used in the clients together with public address, this is ok. If you deploy SMP-server with onion-only address, you may want to keep standard configuration instead.
SOCKSPort 0
HiddenServiceNonAnonymousMode 1
HiddenServiceSingleHopMode 1
# smp-server hidden service host directory and port mappings
HiddenServiceDir /data/app-$APP_ID-smp
HiddenServicePort $APP_SIMPLEX_SERVER_SMP_PORT simplexmq_smp-server:$APP_SIMPLEX_SERVER_SMP_PORT
# xftp-server hidden service host directory and port mappings
HiddenServiceDir /data/app-$APP_ID-xft
HiddenServicePort $APP_SIMPLEX_SERVER_XFTP_PORT simplexmq_xftp-server:$APP_SIMPLEX_SERVER_XFTP_PORT

The container names for the smp and xftp services will need a _1 at the end of them (e.g., simplexmq_smp-server_1) in order for Docker's internal DNS to resolve an IP. Also, I noticed that HiddenServiceDir /data/app-$APP_ID-xft is missing a p at the end (xftp) which is how it's defined in your exports.sh.

I suspect that the tor hidden services won't actually be created when the app starts and so you'll get notyetset.onion passed into your smp and xftp containers as the env var for ADDR (based on the exports.sh logic).


Also, I'm not familiar with SimpleX chat or running a smp/xftp server. Will the server UI show users their smp and xftp connection details? Or is Simplexmq still in early-days and users would be required to use CLI?

@arguser
Copy link
Contributor Author

arguser commented Oct 25, 2024

Hey @nmfretz yes I had it running via TOR. I probably made mistakes while moving the code from my community-apps repo, let me check this out.
Not using TOR would require port forwarding or other tooling for using the sever as a relay, we could discuss what's the best way to go.

The web doesn't show the addresses, I have to figure out if there's a configuration for that. So user should check the terminal.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 27, 2024

Hey @nmfretz yes I had it running via TOR. I probably made mistakes while moving the code from my community-apps repo, let me check this out.

Sounds good. Let me know when you're ready for me to test!

Not using TOR would require port forwarding or other tooling for using the sever as a relay, we could discuss what's the best way to go.

Ya, I'm thinking we should probably just ship this initial version as tor only as you have done.

The web doesn't show the addresses, I have to figure out if there's a configuration for that. So user should check the terminal.

Ah darn. That's unfortunate, but nothing we can really do about it besides request this feature from the app devs. It may be good to include instructions on how to check the smp and xftp server addresses, or else include a link to some instructions.

@jeremycady
Copy link

I'd love a non-TOR option as well.

Umbrel comes with the abilty to easily integrate Cloudflare Tunnels or to use Tailscale.

I would think it would be pretty simple to shoot a domain to that port and allow others to use it.

Hey @nmfretz yes I had it running via TOR. I probably made mistakes while moving the code from my community-apps repo, let me check this out. Not using TOR would require port forwarding or other tooling for using the sever as a relay, we could discuss what's the best way to go.

The web doesn't show the addresses, I have to figure out if there's a configuration for that. So user should check the terminal.

Copy link

⚠️   Linting finished with 1 warning   ⚠️

Thank you for your submission! This is an automated linter that checks for common issues in pull requests to the Umbrel App Store.

Please review the linting results below and make any necessary changes to your submission.

Linting Results

Severity File Description
ℹ️ simplexmq/docker-compose.yml Mounted file/directory "/simplexmq/torrc" doesn't exist:
The volume "${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro" tries to mount the file/directory "/simplexmq/torrc", but it is not present. This can lead to permission errors!
⚠️ simplexmq/umbrel-app.yml "icon" and "gallery" needs to be empty for new app submissions:
The "icon" and "gallery" fields must be empty for new app submissions as it is being created by the Umbrel team.

Legend

Symbol Description
Error: This must be resolved before this PR can be merged.
⚠️ Warning: This is highly encouraged to be resolved, but is not strictly mandatory.
ℹ️ Info: This is just for your information.

@arguser
Copy link
Contributor Author

arguser commented Nov 1, 2024

@nmfretz Update! since v6.1.0 we can show the needed information on the simplex web! https://simplex.chat/docs/server.html#server-information-page

I've built images for arm/amd of v6.2.0 and trying to figure out how to initialize the addresses on the container start. On the new version SMP is not starting, probably due to configuration, I'll come back when progress is made.

@nmfretz
Copy link
Contributor

nmfretz commented Nov 11, 2024

@nmfretz Update! since v6.1.0 we can show the needed information on the simplex web!

@arguser Perfect, that's a huge win for usability! Ping me when you're ready for review.

I'd love a non-TOR option as well.

Umbrel comes with the abilty to easily integrate Cloudflare Tunnels or to use Tailscale.

I would think it would be pretty simple to shoot a domain to that port and allow others to use it.

@jeremycady good idea. @arguser once you have 6.2.0 up and running we can test configuring with a local hostname and then tunneling from cloudflare.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants