Myzel394 / locus

[DISCONTINUED / NO LONGER MAINTAINED] Share your location end-to-end encrypted on decentralized servers using Nostr.
GNU General Public License v3.0
226 stars 9 forks source link

[FEATURE] Self-Host Web Viewer #71

Open duncanam opened 1 year ago

duncanam commented 1 year ago

Is your feature request related to a problem? Please describe. No, although a functional web viewer for those without the app would be slick.

Describe the solution you'd like The ability to self host this web viewer- perhaps a docker file that we can build that gets the server and configs set up.

Describe alternatives you've considered N/A

Additional context N/A

Myzel394 commented 1 year ago

Hey @duncanam,

this website is a Solid app, so you could host it based of the SolidJS docs. Although a Docker file would be much easier - I'll add one in the following days.

duncanam commented 1 year ago

Awesome! You are so speedy.

To be clear, the web viewer isn't ready yet, correct? My view after I've copied the generated link to my browser:

Screenshot_20230626-075904_1.png

Myzel394 commented 1 year ago

To be clear, the web viewer isn't ready yet, correct? My view after I've copied the generated link to my browser:

Could you try reloading the tab a few times with the generated link? I know it sounds dumb but that did the trick for me :joy: Gonna have to fix this too

Myzel394 commented 1 year ago

Note for me:

duncanam commented 1 year ago

To be clear, the web viewer isn't ready yet, correct? My view after I've copied the generated link to my browser:

Could you try reloading the tab a few times with the generated link? I know it sounds dumb but that did the trick for me :joy: Gonna have to fix this too

I tried both in something chrome-based as well as firefox and releaded the page around 10 times and got the same page as above :/

Myzel394 commented 1 year ago

I think this might be due to the selected Nostr relay. I haven't figured out why, but some relays do not seem to be storing the data properly. Could you try using a different relay?

duncanam commented 1 year ago

I am attempting to try this- unfortunately, it now is not pulling location at all for me while a task is running. I used the "test location pulling feature" in the settings menu, and it was successful, so I'm puzzled. I tried with both an existing as well as new task.

Myzel394 commented 1 year ago

@duncanam Could you try using the relay "relay.damus.io"? I have tested it just now and it definitely works for me. Note that you can trigger a manual location update by long pressing the launcher icon and then tapping on "Update location now".

duncanam commented 1 year ago

Okay, something wonky is up, but could be my misunderstanding of the infra. So, the existing task I selected 5 random relays, and it did not find pull any locations, but the new task pulled a location around 10 minutes in, and that also had a location.

Okay, back to the question at hand- I generated a link for that, popped it into 2 different browsers, and I am still getting the webpage in the screenshot above.

duncanam commented 1 year ago

@duncanam Could you try using the relay "relay.damus.io"? I have tested it just now and it definitely works for me. Note that you can trigger a manual location update by long pressing the launcher icon and then tapping on "Update location now".

Can do! And good to know.

Myzel394 commented 1 year ago

Okay, back to the question at hand- I generated a link for that, popped it into 2 different browsers, and I am still getting the webpage in the screenshot above.

Okay I'm facing the issue too now, gotta fix this in the next few hours

duncanam commented 1 year ago

@duncanam Could you try using the relay "relay.damus.io"? I have tested it just now and it definitely works for me. Note that you can trigger a manual location update by long pressing the launcher icon and then tapping on "Update location now".

Using this relay, copying the generated link, and pasting into my mobile chrome / firefox browser shows me the same webpage as before.

Also notably the "Update location now" spun indefinitely on my phone, but the running task in the background was able to pull a few locations though. Not sure if intended behavior.

Myzel394 commented 1 year ago

Using this relay, copying the generated link, and pasting into my mobile chrome / firefox browser shows me the same webpage as before.

I have pushed the update, could you try it again?

Also notably the "Update location now" spun indefinitely on my phone, but the running task in the background was able to pull a few locations though. Not sure if intended behavior.

Strange, it shouldn't take long if the background location fetches don't take long either. Could you tell me what OS you are using and whether you have Google Play Services installed?

duncanam commented 1 year ago

Using this relay, copying the generated link, and pasting into my mobile chrome / firefox browser shows me the same webpage as before.

I have pushed the update, could you try it again?

Sure, I'll update here once done.

Also notably the "Update location now" spun indefinitely on my phone, but the running task in the background was able to pull a few locations though. Not sure if intended behavior.

Strange, it shouldn't take long if the background location fetches don't take long either. Could you tell me what OS you are using and whether you have Google Play Services installed?

I am using GrapheneOS, and have Google Play Services installed through their sandbox. I have installed Locus through Droid-ify, which pulls from Izzy's builds as far as I know.

Myzel394 commented 1 year ago

I am using GrapheneOS, and have Google Play Services installed through their sandbox. I have installed Locus through Droid-ify, which pulls from Izzy's builds as far as I know.

Okay that's exactly the same setup I'm also using. Have you also disabled location rerouting and enabled Location Accuracy? Normally GrapheneOS reroutes location requests to the OS (instead of using Play Services). This is better for privacy, but personally I have disabled it (meaning that location requests are sent to Google) and even allowed Location Accuracy, as I've installed Play Services anyway and FLOSS locations did not work at all for me unfortunately.

I think this might be an issue on your side, as the almost exact same setup works on my side

duncanam commented 1 year ago

I am using GrapheneOS, and have Google Play Services installed through their sandbox. I have installed Locus through Droid-ify, which pulls from Izzy's builds as far as I know.

Okay that's exactly the same setup I'm also using. Have you also disabled location rerouting and enabled Location Accuracy? Normally GrapheneOS reroutes location requests to the OS (instead of using Play Services). This is better for privacy, but personally I have disabled it (meaning that location requests are sent to Google) and even allowed Location Accuracy, as I've installed Play Services anyway and FLOSS locations did not work at all for me unfortunately.

I think this might be an issue on your side, as the almost exact same setup works on my side

How can I check these things? I'm seeing a "precise location" setting under each app's location permissions, and searching for the terms you mentioned did not pull anything up on my settings. If possible I'd love to avoid routing location through Google.

Myzel394 commented 1 year ago

If you want to route your location through Google, you can do so by following these steps:

  1. Open the settings app
  2. Go to "Apps" > "Sandboxed Google Play"
  3. You should now be able to enable and disable "Reroute location requests to the OS"

You should also see a "Google Location Accuracy" setting here.

If possible I'd love to avoid routing location through Google.

I understand and it's totally your decision what to do. However, Locus might only work outside then. I know this isn't great and I'm not happy either, but there doesn't seem to be a good FLOSS location fetcher library available for Flutter yet. But if you do not need location access inside buildings, it should even be okay, because from what I have heard about others with a pure FLOSS phone, outside location fetching should work fine.

duncanam commented 1 year ago

If you want to route your location through Google, you can do so by following these steps:

  1. Open the settings app
  2. Go to "Apps" > "Sandboxed Google Play"
  3. You should now be able to enable and disable "Reroute location requests to the OS"

You should also see a "Google Location Accuracy" setting here.

If possible I'd love to avoid routing location through Google.

I understand and it's totally your decision what to do. However, Locus might only work outside then. I know this isn't great and I'm not happy either, but there doesn't seem to be a good FLOSS location fetcher library available for Flutter yet. But if you do not need location access inside buildings, it should even be okay, because from what I have heard about others with a pure FLOSS phone, outside location fetching should work fine.

Ah! Got it. Yes- quite familiar with having to wait for GPS to find sats overhead inside buildings haha. Can live with that- thanks for explaining to me what is going on here.

Also I still owe you a test on your latest release, I'll try that next.

duncanam commented 1 year ago

Well, pasting in the link still brings me to the "file upload" page. I am curious- do you have any examples of what it should look like? I was expecting a map, but maybe my understanding is totally off here

Myzel394 commented 1 year ago

I am curious- do you have any examples of what it should look like? I was expecting a map, but maybe my understanding is totally off here

Yes it should normally show you a map. Could you inspect the website send me the console logs? I'll take a look what's wrong here.

duncanam commented 1 year ago

@Myzel394 Huh, installed your latest update, went to the link in my browser, and looks like it indeed worked! (Scrolled to ocean for privacy here).

Is this the intended overall view you were wanting? Also, the browser wanted my location as well, is that to enable showing the end user how close they are to you?

duncanam commented 1 year ago

Ah, just turned the phone sideways, looks like it has a lot more info. I wonder if there's a way to optimize for mobile browsers- for context, the reason I'm so interested in the browser view here is because I have family on iOS and friends that would be considerably simpler to just send a link rather than get the app on their end.

Myzel394 commented 1 year ago

Is this the intended overall view you were wanting? Also, the browser wanted my location as well, is that to enable showing the end user how close they are to you?

Exactly! You do not need to allow it if you don't want to see how far you are away.

I wonder if there's a way to optimize for mobile browsers- for context

I currently do not plan to optimize it for mobile to be honest. I was developing the website more as the "desktop variant" for Locus. However:

I have family on iOS and friends that would be considerably simpler to just send a link rather than get the app on their end.

This indeed would make things much simpler. I will probably not optimize the website in the near future, because I want to focus on making the app more useful and more reliable, but I'll think again about optimizing the website!

Also, if you're interested, one person wrote me in an email that they managed to load the app onto iOS using AltStore. I haven't tried it out myself, but if you're interested, I can upload the .ipa file (similar to .apk on Android, but for iOS), and then you could see if you can install the app on iOS as well :D

duncanam commented 1 year ago

I think your targets focusing near-term on Locus itself instead of Locus web are totally reasonable- if you plan to eventually push this to the iOS app store that may also make this much easier.

That said, displaying only the map when the browser detects a mobile browser I think is sufficient- the other information is neat, but min viable product could just be the map and dot.

Myzel394 commented 1 year ago

@duncanam just so that you know, I have deleted your screenshot to avoid any location leaks.

That said, displaying only the map when the browser detects a mobile browser I think is sufficient- the other information is neat, but min viable product could just be the map and dot.

May I ask what browser you used? The map shouldn't work at all on mobile actually currently :O

duncanam commented 1 year ago

Thanks for looking out for me :)

I used Vanadium, GrapheneOS's native browser, with mobile webpage view option checked as normal.

-------- Original Message -------- On Jul 5, 2023, 9:40 AM, Myzel394 wrote:

@.***(https://github.com/duncanam) just so that you know, I have deleted your screenshot to avoid any location leaks.

That said, displaying only the map when the browser detects a mobile browser I think is sufficient- the other information is neat, but min viable product could just be the map and dot.

May I ask what browser you used? The map shouldn't work at all on mobile actually currently :O

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

maximbaz commented 1 year ago

the reason I'm so interested in the browser view here is because I have family on iOS and friends that would be considerably simpler to just send a link rather than get the app on their end.

I would like to add another use-case, that is personally important for me - sharing my location just on a single occasion, to people who I don't normally share location with. It could be I'm meeting a friend in the city, and I want them to find me, or to show them how close I am to the agreed meeting point. It would be an overkill to ask them to install an app, just for this one occasion, but a link would be just perfect!

An app would confine me to using this awesome tool only with people who I often share my location with, but a useful mobile link (agree with @duncanam, just a map, a dot, and perhaps a button to open the latest dot in a navigation app) is more than enough as a starting point. And who knows, maybe some of my friends will end up installing the app and using it with their friends and family, after using the link!