hwittenborn / celeste

GUI file synchronization client that can sync with any cloud provider
GNU General Public License v3.0
1.22k stars 40 forks source link

Dropbox sync failing on fresh Flathub install #187

Open Jachimo opened 10 months ago

Jachimo commented 10 months ago

I'm running into a problem after installing Celese using Flatpak on a brand-new Pop_OS 22.04 (basically Ubuntu 22.04) system.

I installed Celeste, ran it, added my Dropbox account, authenticated to the account (browser roundtrip worked fine), but then it seemed to stop doing anything.

Running it in a terminal session shows a lot (once a second or so) of the following error message lines:

2023/12/31 16:26:26 ERROR : : error listing: Post "https://api.dropboxapi.com/2/files/list_folder": token expired and there's no refresh token - manually refresh with "rclone config reconnect Personal Dropbox:"

Because the app is installed via Flatpak, and I don't have rclone installed in my normal PATH, I'm not sure how I can even do what it suggests about re-running rclone config reconnect. (I think for that to work I'd somehow have to run it from inside the Flatpak environment? I'm not sure where rclone is actually installed but presumably somewhere in /var/lib/flatpak/...)

It seems to me there are potentially two issues at work here: one is the issue with Dropbox sync not working and causing the error, and then there's a secondary contributing problem, which is the inability to run the Rclone reconnect command easily, when Flatpak has been used to install Celeste.

Happy to gather more information if helpful.

hwittenborn commented 10 months ago

Hey @Jachimo, the issue appears to be that the Dropbox token Celeste is using for your account expired, but like you said there needs to be a way for Celeste to fix that for you. Ideally Celeste would just detect the scenario you encountered and then ask to reconnect automatically, but that doesn't happen like you were seeing.

In regards to a way to fix things right now, you could run the following (replacing remote with the Name you configured in Celeste's GUI):

# First run this.
flatpak run --command=sh com.hunterwittenborn.Celeste
# And then run this in the shell that gets spawned.
rclone config delete 'remote'
rclone config
# And then follow the prompts to make a new config.
# Set 'name' to the previous value you had for 'remote'.

I want to have a way to make that all seamless in Celeste's GUI as well, I just haven't quite gotten to it yet. I'm still pretty busy with Celeste's rewrite, but I'd like to get this tackled after that's done.

If you need help with any of that you can reach out in Celeste's support room as well.

hwittenborn commented 10 months ago

Also though: did you get that error immediately after adding the Dropbox account to Celeste, or had you waited a bit? It shouldn't be happening immediately, if it is there might be something else happening that I need to look into.

Jachimo commented 10 months ago

@hwittenborn No, the error didn't appear immediately. When I first added the Dropbox account (about a week ago, maybe a bit more) it just seemed to be sitting there and not syncing anything. I left it unattended for a while to see if it would pull anything down. It didn't seem to, so when I got back I restarted the app and at that point saw the error.

There might be something else going on that caused it to fail to sync the first time, but I wanted to try again and see if that was just a fluke.

Jachimo commented 10 months ago

I got a chance to play with the machine that's having the issue today and unfortunately the steps you suggested didn't seem to help.

Getting into the Flatpak shell and deleting and re-configuring it seemed to work fine. It popped me into my browser where I authorized the app with Dropbox, and seemed to have gotten the OAuth token. But when I opened Celeste again and cleared the errors, the "token expired and there's no refresh token" error popped right back up.

Possibly related though: when I used rclone inside the Flatpak shell and tried to use the ncdu text-based browser, it failed with an error (and also blew up my terminal window with some sort of messed-up ASCII stuff):

Waiting for root directory...                                                                                                       
Total usage: 3.246G, Objects: 3082024/01/05 21:24:02 
ERROR : Vault: error listing: path/locked/

This is with rclone rclone v1.53.3-DEV inside the Flatpak.

Update -- I think I've figured out at least one aspect of the problem. When I initially set up the sync, I wanted to have the local directory ~/Dropbox sync with my entire remote Dropbox repository. I thought that the default, which has / as the remote sync target, would do that. But... for whatever reason, that doesn't seem to work right. (I have a personal Dropbox account, if that matters.)

Syncing ~/Dropbox on the local side to a directory inside my Dropbox, e.g. "Apps", on the remote side, seems to work fine. It's not what I want exactly, but it shows that it's not really an authentication/token issue really. There's something a bit more complicated going on.

However, in doing all this I noticed a slightly-odd behavior in Celeste: I can't delete a remote using the GUI; it pops up a confirmation dialog, I click yes, and then the app seems to crash.

ShadowDrakken commented 3 weeks ago

Also though: did you get that error immediately after adding the Dropbox account to Celeste, or had you waited a bit? It shouldn't be happening immediately, if it is there might be something else happening that I need to look into.

I'm running into the same issue with Dropbox after about 6 hours is all.

I've noticed that Flatpaks, at least in Zorin OS 17.2 (can't speak for others), are really awful at maintaining web session IDs, OAuths, etc. though as I have similar issues with Proton Mail, Mailspring, and others if I use the Flatpak version. ~So perhaps it's some issue with Flatpaks as a whole?~ Turns out the Snap has the same issue in about the same amount of time for me.

ShadowDrakken commented 3 weeks ago

I think I figured out a workaround. Not the most ideal situation, but it's better than deleting and rebuilding the config

Close Celeste, then run the following:

flatpak run --command=sh com.hunterwittenborn.Celeste
cp .var/app/com.hunterwittenborn.Celeste/config/celeste/rclone.conf .var/app/com.hunterwittenborn.Celeste/config/rclone/rclone.conf
rclone config reconnect Dropbox:
cp .var/app/com.hunterwittenborn.Celeste/config/rclone/rclone.conf .var/app/com.hunterwittenborn.Celeste/config/celeste/rclone.conf