[GH-ISSUE #8130] [Bug] Can't connect to sync changes - Self Hosted #3582

Closed
opened 2026-03-23 21:31:29 +00:00 by mirror · 25 comments
Owner

Originally created by @casainho on GitHub (Jul 22, 2025).
Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/8130

Originally assigned to: @appflowy on GitHub.

Bug Description

I am on selfhosting and using latest 0.9.64 AppFlowy-Cloud. I can access and write notes on the web version, but on PC Linux version (latest version 0.9.5) or Windows 11, I always get error Can't connect to sync changes as seen on the following images. I already tested on another Linux PC, but I got the same results.

Image Image

How to Reproduce

Install AppFlowy 0.9.5 on Linux or Windows 11

Expected Behavior

Should be able to sync.

Operating System

Linux Ubuntu 25.04 or Windows 11

AppFlowy Version(s)

0.9.5

Screenshots

No response

Additional Context

No response

Originally created by @casainho on GitHub (Jul 22, 2025). Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/8130 Originally assigned to: @appflowy on GitHub. ### Bug Description I am on selfhosting and using latest 0.9.64 AppFlowy-Cloud. I can access and write notes on the web version, but on PC Linux version (latest version 0.9.5) or Windows 11, I always get error Can't connect to sync changes as seen on the following images. I already tested on another Linux PC, but I got the same results. <img width="716" height="377" alt="Image" src="https://github.com/user-attachments/assets/d79d97bf-1ed4-4b29-b9a0-67f08af4b2ad" /> <img width="1015" height="383" alt="Image" src="https://github.com/user-attachments/assets/61f6cab6-c347-4b44-83f2-88ecfeccc412" /> ### How to Reproduce Install AppFlowy 0.9.5 on Linux or Windows 11 ### Expected Behavior Should be able to sync. ### Operating System Linux Ubuntu 25.04 or Windows 11 ### AppFlowy Version(s) 0.9.5 ### Screenshots _No response_ ### Additional Context _No response_
Author
Owner

@appflowy commented on GitHub (Jul 23, 2025):

Hi @casainho , When you see this network indicator, it means you cannot connect to the AppFlowy server using WebSocket, which is required for real-time collaborative editing. May I ask where you’re accessing AppFlowy from? There might be a network block causing this issue.

<!-- gh-comment-id:3106626447 --> @appflowy commented on GitHub (Jul 23, 2025): Hi @casainho , When you see this network indicator, it means you cannot connect to the AppFlowy server using WebSocket, which is required for real-time collaborative editing. May I ask where you’re accessing AppFlowy from? There might be a network block causing this issue.
Author
Owner

@casainho commented on GitHub (Jul 23, 2025):

Thanks!! I am hosting on a Linux PC and using Nginx Proxy Manager (NPM). Everything were working before, I think the only change were or with the PC app or on the AppFlowy-Cloud.

My relevant configurations about WebSocket on NPM:

Image

And on advanced tab:

location / {
        proxy_pass http://192.168.x.x:8800;
    }

    location /api/websocket {
        proxy_pass http://192.168.x.x:8800;

        proxy_set_header Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
<!-- gh-comment-id:3106751219 --> @casainho commented on GitHub (Jul 23, 2025): Thanks!! I am hosting on a Linux PC and using Nginx Proxy Manager (NPM). Everything were working before, I think the only change were or with the PC app or on the AppFlowy-Cloud. My relevant configurations about WebSocket on NPM: <img width="637" height="702" alt="Image" src="https://github.com/user-attachments/assets/686da983-2ad0-4cfc-8bb5-b386529fd3c5" /> And on advanced tab: ``` location / { proxy_pass http://192.168.x.x:8800; } location /api/websocket { proxy_pass http://192.168.x.x:8800; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } ```
Author
Owner

@appflowy commented on GitHub (Jul 25, 2025):

@casainho Have you try restart appflowy? If yes,did it work?

<!-- gh-comment-id:3117877046 --> @appflowy commented on GitHub (Jul 25, 2025): @casainho Have you try restart appflowy? If yes,did it work?
Author
Owner

@khy010802 commented on GitHub (Jul 25, 2025):

Same issue here, I updated my Appflowy desktop version to 0.9.5, and update my server to 0.9.64. (Using Windows 10 + Docker)

I tried restart & reinstall desktop app and server, but didn't work for me.

I downgraded my appflowy desktop to 0.9.4, and it works fine.

<!-- gh-comment-id:3120090180 --> @khy010802 commented on GitHub (Jul 25, 2025): Same issue here, I updated my Appflowy desktop version to 0.9.5, and update my server to 0.9.64. (Using Windows 10 + Docker) I tried restart & reinstall desktop app and server, but didn't work for me. I downgraded my appflowy desktop to 0.9.4, and it works fine.
Author
Owner

@appflowy commented on GitHub (Jul 26, 2025):

@khy010802 Version 0.9.4 does not support displaying the network indicator. I can build a test package for you to verify whether the issue still exists.

<!-- gh-comment-id:3121386789 --> @appflowy commented on GitHub (Jul 26, 2025): @khy010802 Version 0.9.4 does not support displaying the network indicator. I can build a test package for you to verify whether the issue still exists.
Author
Owner

@casainho commented on GitHub (Jul 26, 2025):

@khy010802 Version 0.9.4 does not support displaying the network indicator. I can build a test package for you to verify whether the issue still exists.

Yes, It took me sometime to understand that previously, on 0.9.4, I was having this issue. I guess that on 0.9.5 you guys added that bar to make clear if notes are on sync or not.

I restarted the server and did everything I could imagine, but I still have the issue, which is a pain and I am avoiding using the PC and mobile only the web version -- but it is far from ideal!!

@appflowy let me know if there is anything I can do to test any change. Thanks!!!

<!-- gh-comment-id:3122951976 --> @casainho commented on GitHub (Jul 26, 2025): > [@khy010802](https://github.com/khy010802) Version 0.9.4 does not support displaying the network indicator. I can build a test package for you to verify whether the issue still exists. Yes, It took me sometime to understand that previously, on 0.9.4, I was having this issue. I guess that on 0.9.5 you guys added that bar to make clear if notes are on sync or not. I restarted the server and did everything I could imagine, but I still have the issue, which is a pain and I am avoiding using the PC and mobile only the web version -- but it is far from ideal!! @appflowy let me know if there is anything I can do to test any change. Thanks!!!
Author
Owner

@annieappflowy commented on GitHub (Jul 28, 2025):

@casainho , is your VPN tunnel based?

<!-- gh-comment-id:3125630342 --> @annieappflowy commented on GitHub (Jul 28, 2025): @casainho , is your VPN tunnel based?
Author
Owner

@PaganMuffin commented on GitHub (Jul 28, 2025):

I have identical issue with websockets.
Appflowy Cloud 0.9.64 with external nginx
After hitting wss://sub.domain.tld/ws/v2/... it's returning 404 without any logs in appflowy_cloud container
Here is snippet from nginx config (based on nginx conf

    location /ws {
        proxy_pass http://127.0.0.1:28000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400s;
    }

Snippet from log sync (it's repeated many time)

{"msg":"establishing WebSocket connection to: wss://sub.domain.tld:443/ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1349059268&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"establishing WebSocket failed to 69688f56-a219-4013-8854-d465f445f319","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"[1349059268] workspace 69688f56-a219-4013-8854-d465f445f319 failed to connect: code:UserUnAuthorized msg: Unauthorized websocket connection","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"set connection status: Disconnected { reason: Some(Unauthorized(\"Unauthorized websocket connection\")) }","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"set connection status: Connecting { cancel: CancellationToken { is_cancelled: false } }","time":"07-28 11:00:30","target":"sync_log"}

And screenshot with containers for appflowy cloud for port config
Image

<!-- gh-comment-id:3126350898 --> @PaganMuffin commented on GitHub (Jul 28, 2025): I have identical issue with websockets. Appflowy Cloud 0.9.64 with external nginx After hitting `wss://sub.domain.tld/ws/v2/...` it's returning 404 without any logs in appflowy_cloud container Here is snippet from nginx config (based on [nginx conf](https://github.com/AppFlowy-IO/AppFlowy-Cloud/blob/main/external_proxy_config/nginx/appflowy.site.conf) ``` location /ws { proxy_pass http://127.0.0.1:28000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_read_timeout 86400s; } ``` Snippet from log sync (it's repeated many time) ``` {"msg":"establishing WebSocket connection to: wss://sub.domain.tld:443/ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1349059268&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4","time":"07-28 11:00:30","target":"sync_log"} {"msg":"establishing WebSocket failed to 69688f56-a219-4013-8854-d465f445f319","time":"07-28 11:00:30","target":"sync_log"} {"msg":"[1349059268] workspace 69688f56-a219-4013-8854-d465f445f319 failed to connect: code:UserUnAuthorized msg: Unauthorized websocket connection","time":"07-28 11:00:30","target":"sync_log"} {"msg":"set connection status: Disconnected { reason: Some(Unauthorized(\"Unauthorized websocket connection\")) }","time":"07-28 11:00:30","target":"sync_log"} {"msg":"set connection status: Connecting { cancel: CancellationToken { is_cancelled: false } }","time":"07-28 11:00:30","target":"sync_log"} ``` And screenshot with containers for appflowy cloud for port config <img width="1536" height="186" alt="Image" src="https://github.com/user-attachments/assets/ecdb24b3-6c3d-49b6-b838-e83254d2dbd8" />
Author
Owner

@casainho commented on GitHub (Jul 28, 2025):

Can this be related to something about gRPC Backend? at least ChatGPT pointed that to me.... it says Nginx does not support gRPC backend.

<!-- gh-comment-id:3126368716 --> @casainho commented on GitHub (Jul 28, 2025): Can this be related to something about gRPC Backend? at least ChatGPT pointed that to me.... it says Nginx does not support gRPC backend.
Author
Owner

@casainho commented on GitHub (Jul 28, 2025):

@casainho , is your VPN tunnel based?

No, I have no VPN. I am only using Nginx Proxy Manager and AppFlowy worked previously with it, as expected.

<!-- gh-comment-id:3126377460 --> @casainho commented on GitHub (Jul 28, 2025): > [@casainho](https://github.com/casainho) , is your VPN tunnel based? No, I have no VPN. I am only using Nginx Proxy Manager and AppFlowy worked previously with it, as expected.
Author
Owner

@casainho commented on GitHub (Jul 29, 2025):

I am geting this repeated from the GoTrue container:

2025-07-29T15:45:06Z INF action=login instance_id=00000000-0000-0000-0000-000000000000 login_method=token metering=true msg=Login user_id=xxxx-xxxx-xxxx-xxxx-xxxx

2025-07-29T15:45:06Z INF auth_event={"action":"token_revoked","actor_id":"xxxx-xxxx-xxxx-xxxx-xxxx","actor_name":"xxx","actor_username":"xxx@gmail.com","actor_via_sso":false,"log_type":"token"} component=api duration=19546790 method=POST msg=request completed path=/token referer=https://xxx.org/app/xxx remote_addr=xx.xx.xx.xx request_id=xxxx status=200
<!-- gh-comment-id:3133132323 --> @casainho commented on GitHub (Jul 29, 2025): I am geting this repeated from the GoTrue container: ``` 2025-07-29T15:45:06Z INF action=login instance_id=00000000-0000-0000-0000-000000000000 login_method=token metering=true msg=Login user_id=xxxx-xxxx-xxxx-xxxx-xxxx 2025-07-29T15:45:06Z INF auth_event={"action":"token_revoked","actor_id":"xxxx-xxxx-xxxx-xxxx-xxxx","actor_name":"xxx","actor_username":"xxx@gmail.com","actor_via_sso":false,"log_type":"token"} component=api duration=19546790 method=POST msg=request completed path=/token referer=https://xxx.org/app/xxx remote_addr=xx.xx.xx.xx request_id=xxxx status=200 ```
Author
Owner

@casainho commented on GitHub (Jul 30, 2025):

@appflowy Nathan, @annieappflowy Annie, can you please give a look? any quick workaround we can do on the code to solve this temporaly? I am available to test and debug. Thank you!!

<!-- gh-comment-id:3135110386 --> @casainho commented on GitHub (Jul 30, 2025): @appflowy Nathan, @annieappflowy Annie, can you please give a look? any quick workaround we can do on the code to solve this temporaly? I am available to test and debug. Thank you!!
Author
Owner

@appflowy commented on GitHub (Jul 30, 2025):

I have identical issue with websockets. Appflowy Cloud 0.9.64 with external nginx After hitting wss://sub.domain.tld/ws/v2/... it's returning 404 without any logs in appflowy_cloud container Here is snippet from nginx config (based on nginx conf

    location /ws {
        proxy_pass http://127.0.0.1:28000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400s;
    }

Snippet from log sync (it's repeated many time)

{"msg":"establishing WebSocket connection to: wss://sub.domain.tld:443/ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1349059268&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"establishing WebSocket failed to 69688f56-a219-4013-8854-d465f445f319","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"[1349059268] workspace 69688f56-a219-4013-8854-d465f445f319 failed to connect: code:UserUnAuthorized msg: Unauthorized websocket connection","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"set connection status: Disconnected { reason: Some(Unauthorized(\"Unauthorized websocket connection\")) }","time":"07-28 11:00:30","target":"sync_log"}
{"msg":"set connection status: Connecting { cancel: CancellationToken { is_cancelled: false } }","time":"07-28 11:00:30","target":"sync_log"}

And screenshot with containers for appflowy cloud for port config Image

The token may get revoked at some point, but we will start refreshing the token in the background, so it should be fine. Could you send me the latest log.sync.xxxx-xx-xx log file? Alternatively, you can paste more of the error message here.

<!-- gh-comment-id:3136434812 --> @appflowy commented on GitHub (Jul 30, 2025): > I have identical issue with websockets. Appflowy Cloud 0.9.64 with external nginx After hitting `wss://sub.domain.tld/ws/v2/...` it's returning 404 without any logs in appflowy_cloud container Here is snippet from nginx config (based on [nginx conf](https://github.com/AppFlowy-IO/AppFlowy-Cloud/blob/main/external_proxy_config/nginx/appflowy.site.conf) > > ``` > location /ws { > proxy_pass http://127.0.0.1:28000; > > proxy_http_version 1.1; > proxy_set_header Upgrade $http_upgrade; > proxy_set_header Connection "upgrade"; > proxy_set_header Host $host; > proxy_read_timeout 86400s; > } > ``` > > Snippet from log sync (it's repeated many time) > > ``` > {"msg":"establishing WebSocket connection to: wss://sub.domain.tld:443/ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1349059268&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4","time":"07-28 11:00:30","target":"sync_log"} > {"msg":"establishing WebSocket failed to 69688f56-a219-4013-8854-d465f445f319","time":"07-28 11:00:30","target":"sync_log"} > {"msg":"[1349059268] workspace 69688f56-a219-4013-8854-d465f445f319 failed to connect: code:UserUnAuthorized msg: Unauthorized websocket connection","time":"07-28 11:00:30","target":"sync_log"} > {"msg":"set connection status: Disconnected { reason: Some(Unauthorized(\"Unauthorized websocket connection\")) }","time":"07-28 11:00:30","target":"sync_log"} > {"msg":"set connection status: Connecting { cancel: CancellationToken { is_cancelled: false } }","time":"07-28 11:00:30","target":"sync_log"} > ``` > > And screenshot with containers for appflowy cloud for port config <img alt="Image" width="1536" height="186" src="https://private-user-images.githubusercontent.com/50595976/471425427-ecdb24b3-6c3d-49b6-b838-e83254d2dbd8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTM4ODMzNjQsIm5iZiI6MTc1Mzg4MzA2NCwicGF0aCI6Ii81MDU5NTk3Ni80NzE0MjU0MjctZWNkYjI0YjMtNmMzZC00OWI2LWI4MzgtZTgzMjU0ZDJkYmQ4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA3MzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNzMwVDEzNDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE1Y2Q3NWFlNjNiZjk4NGFiYjQyMTE1ZDIxODNkOGE2ZjQwODVlOGQ4NWE0YjA1ZmQ3ZDFlYzdhZTE1ZGVlNjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.j3ejMzIvxL9zu24bmWPPN6PBXCImUNN2BLfWgpSA8T8"> The token may get revoked at some point, but we will start refreshing the token in the background, so it should be fine. Could you send me the latest log.sync.xxxx-xx-xx log file? Alternatively, you can paste more of the error message here.
Author
Owner

@casainho commented on GitHub (Jul 30, 2025):

Here my logs: appflowy_logs.zip

<!-- gh-comment-id:3136606822 --> @casainho commented on GitHub (Jul 30, 2025): Here my logs: [appflowy_logs.zip](https://github.com/user-attachments/files/21511769/appflowy_logs.zip)
Author
Owner

@appflowy commented on GitHub (Jul 30, 2025):

@casainho Thanks. I saw lots of Unauthorized websocket connection error. Did you try logout and then login?

<!-- gh-comment-id:3136628176 --> @appflowy commented on GitHub (Jul 30, 2025): @casainho Thanks. I saw lots of `Unauthorized websocket connection` error. Did you try logout and then login?
Author
Owner

@PaganMuffin commented on GitHub (Jul 30, 2025):

Here is the whole log. From version 0.9.4 since 0.9.5 is unusable due to constantly refreshing.

log.sync.2025-07-30-14.txt

Backend was upgraded from 0.8.13 to 0.9.64 (updated after switching to branch 0.9.64 on git) and some data is missing (web and app are showing different data in board) in boards and calendar view is bugging app (infinity loading on every page). Changes done on web version aren't syncing at all on app and vice versa.

Left is web, right is app

Image
<!-- gh-comment-id:3136632181 --> @PaganMuffin commented on GitHub (Jul 30, 2025): Here is the whole log. From version 0.9.4 since 0.9.5 is unusable due to constantly refreshing. [log.sync.2025-07-30-14.txt](https://github.com/user-attachments/files/21511882/log.sync.2025-07-30-14.txt) Backend was upgraded from 0.8.13 to 0.9.64 (updated after switching to branch 0.9.64 on git) and some data is missing (web and app are showing different data in board) in boards and calendar view is bugging app (infinity loading on every page). Changes done on web version aren't syncing at all on app and vice versa. Left is web, right is app <img width="498" height="394" alt="Image" src="https://github.com/user-attachments/assets/a076cf64-5f0d-448b-8289-bc259ab36989" />
Author
Owner

@casainho commented on GitHub (Jul 30, 2025):

@casainho Thanks. I saw lots of Unauthorized websocket connection error. Did you try logout and then login?

I think Unauthorized websocket connection happens because the app is constantly switching between disconnected to connecting.

I also tried to logout and clear the cache and appflowy files, and after login, the data is clearly synched with the server data, but just like in an initial time, maybe at the very first login. If I close and open the app, there is no update at all, and app is constantly switching between disconnected to connecting.

<!-- gh-comment-id:3136650217 --> @casainho commented on GitHub (Jul 30, 2025): > [@casainho](https://github.com/casainho) Thanks. I saw lots of `Unauthorized websocket connection` error. Did you try logout and then login? I think Unauthorized websocket connection happens because the app is constantly switching between disconnected to connecting. I also tried to logout and clear the cache and appflowy files, and after login, the data is clearly synched with the server data, but just like in an initial time, maybe at the very first login. If I close and open the app, there is no update at all, and app is constantly switching between disconnected to connecting.
Author
Owner

@appflowy commented on GitHub (Jul 30, 2025):

Here is the whole log. From version 0.9.4 since 0.9.5 is unusable due to constantly refreshing.

log.sync.2025-07-30-14.txt

Backend was upgraded from 0.8.13 to 0.9.64 (updated after switching to branch 0.9.64 on git) and some data is missing (web and app are showing different data in board) in boards and calendar view is bugging app (infinity loading on every page). Changes done on web version aren't syncing at all on app and vice versa.

Left is web, right is app

Image

It looks like the same error—UserUnAuthorized. We use a WebSocket to pull data, which is why you always see a loading state.

<!-- gh-comment-id:3136650837 --> @appflowy commented on GitHub (Jul 30, 2025): > Here is the whole log. From version 0.9.4 since 0.9.5 is unusable due to constantly refreshing. > > [log.sync.2025-07-30-14.txt](https://github.com/user-attachments/files/21511882/log.sync.2025-07-30-14.txt) > > Backend was upgraded from 0.8.13 to 0.9.64 (updated after switching to branch 0.9.64 on git) and some data is missing (web and app are showing different data in board) in boards and calendar view is bugging app (infinity loading on every page). Changes done on web version aren't syncing at all on app and vice versa. > > Left is web, right is app > > <img alt="Image" width="498" height="394" src="https://private-user-images.githubusercontent.com/50595976/472541618-a076cf64-5f0d-448b-8289-bc259ab36989.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTM4ODYzMzksIm5iZiI6MTc1Mzg4NjAzOSwicGF0aCI6Ii81MDU5NTk3Ni80NzI1NDE2MTgtYTA3NmNmNjQtNWYwZC00NDhiLTgyODktYmMyNTlhYjM2OTg5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA3MzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNzMwVDE0MzM1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMzNTk4OGJjNjg0ZGI0NDEzNDQ5NDczOTYwZmUzYTU0Y2NhYTNkYjQyZDM2ZjJjODlhNmI5ZjJjM2M3YzU2NDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.AvtZjFMILh8t5yzzm7j6vEcbFR1y2R4mkLr0QHRhlS4"> It looks like the same error—UserUnAuthorized. We use a WebSocket to pull data, which is why you always see a loading state.
Author
Owner

@casainho commented on GitHub (Jul 30, 2025):

Can this issue be related to the #8004 ?

<!-- gh-comment-id:3136655544 --> @casainho commented on GitHub (Jul 30, 2025): Can this issue be related to the #8004 ?
Author
Owner

@PaganMuffin commented on GitHub (Jul 30, 2025):

It looks like the same error—UserUnAuthorized. We use a WebSocket to pull data, which is why you always see a loading state.

When checking NGINX logs its show logs like this one when searching by /ws/v2

188.XXX.XXX.XXX - - [30/Jul/2025:09:09:16 +0000] "GET /ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1908199668&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4&token=JWT&lastMessageId=0-0 HTTP/1.1" 404 0 "-" "-"

I tried reinstalling app few time, deleting com.appflowy.appflowy.flutter on MacOS but it never connecting correctly

<!-- gh-comment-id:3136734115 --> @PaganMuffin commented on GitHub (Jul 30, 2025): > It looks like the same error—UserUnAuthorized. We use a WebSocket to pull data, which is why you always see a loading state. When checking NGINX logs its show logs like this one when searching by `/ws/v2` ``` 188.XXX.XXX.XXX - - [30/Jul/2025:09:09:16 +0000] "GET /ws/v2/69688f56-a219-4013-8854-d465f445f319?clientId=1908199668&deviceId=4B76E208-36C5-5280-9D27-FB8C165B86B4&token=JWT&lastMessageId=0-0 HTTP/1.1" 404 0 "-" "-" ``` I tried reinstalling app few time, deleting `com.appflowy.appflowy.flutter` on MacOS but it never connecting correctly
Author
Owner

@khorshuheng commented on GitHub (Jul 31, 2025):

@PaganMuffin This might be caused by an older version of AppFlowy Cloud being used. For upgrading, switching git branch is not enough - did you also do a docker compose pull to get the latest docker image version for Appflowy cloud, or manually update the image tag?

<!-- gh-comment-id:3138360624 --> @khorshuheng commented on GitHub (Jul 31, 2025): @PaganMuffin This might be caused by an older version of AppFlowy Cloud being used. For upgrading, switching git branch is not enough - did you also do a docker compose pull to get the latest docker image version for Appflowy cloud, or manually update the image tag?
Author
Owner

@PaganMuffin commented on GitHub (Jul 31, 2025):

@PaganMuffin This might be caused by an older version of AppFlowy Cloud being used. For upgrading, switching git branch is not enough - did you also do a docker compose pull to get the latest docker image version for Appflowy cloud, or manually update the image tag?

At first I tried without pulling, but on Discord it was suggested to me, to do docker compose pull. I did it, but didn't worked.
Later I tried using specific version but it didn't worked too
GOTRUE_VERSION=0.9.64 APPFLOWY_CLOUD_VERSION=0.9.64 APPFLOWY_ADMIN_FRONTEND_VERSION=0.9.64 APPFLOWY_WORKER_VERSION=0.9.64

Here is docker compose I used to run it and command

GOTRUE_VERSION=0.9.64 APPFLOWY_CLOUD_VERSION=0.9.64 APPFLOWY_ADMIN_FRONTEND_VERSION=0.9.64 APPFLOWY_WORKER_VERSION=0.9.64 APPFLOWY_WEB_VERSION=0.1.19 docker compose -f docker-compose.custom.yml_2 --env-file .env.custom_2 up -d
# Essential services for AppFlowy Cloud

services:

  # You do not need this if you have configured to use your own s3 file storage
  minio:
    restart: on-failure
    image: minio/minio
    environment:
      - MINIO_BROWSER_REDIRECT_URL=${APPFLOWY_BASE_URL?:err}/minio
      - MINIO_ROOT_USER=${APPFLOWY_S3_ACCESS_KEY:-minioadmin}
      - MINIO_ROOT_PASSWORD=${APPFLOWY_S3_SECRET_KEY:-minioadmin}
    command: server /data --console-address ":9001"
    ports:
      - ${MINIO_PORT:-9000}:9000
      - ${MINIO_CONSOLE_PORT:-9001}:9001
    volumes:
      - minio_data:/data

  postgres:
    restart: on-failure
    image: pgvector/pgvector:pg16
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_DB=${POSTGRES_DB:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
      - POSTGRES_HOST=${POSTGRES_HOST:-postgres}
    healthcheck:
      test: [ "CMD", "pg_isready", "-U", "${POSTGRES_USER}", "-d", "${POSTGRES_DB}" ]
      interval: 5s
      timeout: 5s
      retries: 12
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    restart: on-failure
    image: redis

  gotrue:
    restart: on-failure
    build:
      context: docker/gotrue
      dockerfile: Dockerfile
    depends_on:
      postgres:
        condition: service_healthy
    ports:
      - ${GOTRUE_PORT:-9999}:9999
    # healthcheck:
    #   test: "curl --fail http://127.0.0.1:29999/health || exit 1"
    #   interval: 5s
    #   timeout: 5s
    #   retries: 12
    image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
    environment:
      # There are a lot of options to configure GoTrue. You can reference the example config:
      # https://github.com/supabase/auth/blob/master/example.env
      # The initial GoTrue Admin user to create, if not already exists.
      - GOTRUE_ADMIN_EMAIL=${GOTRUE_ADMIN_EMAIL}
      # The initial GoTrue Admin user password to create, if not already exists.
      # If the user already exists, the update will be skipped.
      - GOTRUE_ADMIN_PASSWORD=${GOTRUE_ADMIN_PASSWORD}
      - GOTRUE_DISABLE_SIGNUP=${GOTRUE_DISABLE_SIGNUP:-false}
      - GOTRUE_SITE_URL=appflowy-flutter://                           # redirected to AppFlowy application
      - GOTRUE_URI_ALLOW_LIST=** # adjust restrict if necessary
      - GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}                        # authentication secret
      - GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP}
      # Without this environment variable, the createuser command will create an admin
      # with the `admin` role as opposed to `supabase_admin`
      - GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin
      - GOTRUE_DB_DRIVER=postgres
      - API_EXTERNAL_URL=${API_EXTERNAL_URL}
      - DATABASE_URL=${GOTRUE_DATABASE_URL}
      - PORT=9999
      - GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST}                          # e.g. smtp.gmail.com
      - GOTRUE_SMTP_PORT=${GOTRUE_SMTP_PORT}                          # e.g. 465
      - GOTRUE_SMTP_USER=${GOTRUE_SMTP_USER}                          # email sender, e.g. noreply@appflowy.io
      - GOTRUE_SMTP_PASS=${GOTRUE_SMTP_PASS}                          # email password
      - GOTRUE_MAILER_URLPATHS_CONFIRMATION=/gotrue/verify
      - GOTRUE_MAILER_URLPATHS_INVITE=/gotrue/verify
      - GOTRUE_MAILER_URLPATHS_RECOVERY=/gotrue/verify
      - GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE=/gotrue/verify
      - GOTRUE_MAILER_TEMPLATES_MAGIC_LINK=${GOTRUE_MAILER_TEMPLATES_MAGIC_LINK}
      - GOTRUE_SMTP_ADMIN_EMAIL=${GOTRUE_SMTP_ADMIN_EMAIL}                # email with admin privileges e.g. internal@appflowy.io
      - GOTRUE_SMTP_MAX_FREQUENCY=${GOTRUE_SMTP_MAX_FREQUENCY:-1ns}       # set to 1ns for running tests
      - GOTRUE_RATE_LIMIT_EMAIL_SENT=${GOTRUE_RATE_LIMIT_EMAIL_SENT:-100} # number of email sendable per minute
      - GOTRUE_MAILER_AUTOCONFIRM=${GOTRUE_MAILER_AUTOCONFIRM:-false}     # change this to true to skip email confirmation
      # Google OAuth config
      - GOTRUE_EXTERNAL_GOOGLE_ENABLED=${GOTRUE_EXTERNAL_GOOGLE_ENABLED}
      - GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID}
      - GOTRUE_EXTERNAL_GOOGLE_SECRET=${GOTRUE_EXTERNAL_GOOGLE_SECRET}
      - GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI}
      # GITHUB OAuth config
      - GOTRUE_EXTERNAL_GITHUB_ENABLED=${GOTRUE_EXTERNAL_GITHUB_ENABLED}
      - GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=${GOTRUE_EXTERNAL_GITHUB_CLIENT_ID}
      - GOTRUE_EXTERNAL_GITHUB_SECRET=${GOTRUE_EXTERNAL_GITHUB_SECRET}
      - GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=${GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI}
      # Discord OAuth config
      - GOTRUE_EXTERNAL_DISCORD_ENABLED=${GOTRUE_EXTERNAL_DISCORD_ENABLED}
      - GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=${GOTRUE_EXTERNAL_DISCORD_CLIENT_ID}
      - GOTRUE_EXTERNAL_DISCORD_SECRET=${GOTRUE_EXTERNAL_DISCORD_SECRET}
      - GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=${GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI}
      # SAML 2.0 OAuth config
      - GOTRUE_SAML_ENABLED=${GOTRUE_SAML_ENABLED}
      - GOTRUE_SAML_PRIVATE_KEY=${GOTRUE_SAML_PRIVATE_KEY}

  appflowy_cloud:
    restart: on-failure
    environment:
      - RUST_LOG=${RUST_LOG:-info}
      - APPFLOWY_ENVIRONMENT=production
      - APPFLOWY_DATABASE_URL=${APPFLOWY_DATABASE_URL}
      - APPFLOWY_REDIS_URI=${APPFLOWY_REDIS_URI}
      - APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
      - APPFLOWY_GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP}
      - APPFLOWY_GOTRUE_BASE_URL=${APPFLOWY_GOTRUE_BASE_URL}
      - APPFLOWY_S3_CREATE_BUCKET=${APPFLOWY_S3_CREATE_BUCKET}
      - APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO}
      - APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
      - APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
      - APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
      - APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
      - APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
      - APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=${APPFLOWY_S3_PRESIGNED_URL_ENDPOINT}
      - APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
      - APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
      - APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
      - APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
      - APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
      - APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND}
      - APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL}
      - APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS}
      - AI_SERVER_HOST=${AI_SERVER_HOST}
      - AI_SERVER_PORT=${AI_SERVER_PORT}
      - AI_OPENAI_API_KEY=${AI_OPENAI_API_KEY}
      - APPFLOWY_WEB_URL=${APPFLOWY_WEB_URL}
    build:
      context: .
      dockerfile: Dockerfile
      args:
        FEATURES: ""
    image: appflowyinc/appflowy_cloud:${APPFLOWY_CLOUD_VERSION:-latest}
    depends_on:
      gotrue:
        condition: service_started
    ports:
      - ${APPFLOWY_CLOUD_PORT:-8000}:8000
    

  admin_frontend:
    restart: on-failure
    build:
      context: .
      dockerfile: ./admin_frontend/Dockerfile
    image: appflowyinc/admin_frontend:${APPFLOWY_ADMIN_FRONTEND_VERSION:-latest}
    ports:
      - ${ADMIN_FRONTEND_PORT:-3000}:3000
    environment:
      - RUST_LOG=${RUST_LOG:-info}
      - ADMIN_FRONTEND_REDIS_URL=${ADMIN_FRONTEND_REDIS_URL:-redis://redis:6379}
      - ADMIN_FRONTEND_GOTRUE_URL=${ADMIN_FRONTEND_GOTRUE_URL:-http://gotrue:9999}
      - ADMIN_FRONTEND_APPFLOWY_CLOUD_URL=${ADMIN_FRONTEND_APPFLOWY_CLOUD_URL:-http://appflowy_cloud:8000}
      - ADMIN_FRONTEND_PATH_PREFIX=${ADMIN_FRONTEND_PATH_PREFIX:-}
    depends_on:
      gotrue:
        condition: service_started
      appflowy_cloud:
        condition: service_started

  appflowy_worker:
    restart: on-failure
    image: appflowyinc/appflowy_worker:${APPFLOWY_WORKER_VERSION:-latest}
    build:
      context: .
      dockerfile: ./services/appflowy-worker/Dockerfile
    environment:
      - RUST_LOG=${RUST_LOG:-info}
      - APPFLOWY_ENVIRONMENT=production
      - APPFLOWY_WORKER_REDIS_URL=${APPFLOWY_WORKER_REDIS_URL:-redis://redis:6379}
      - APPFLOWY_WORKER_ENVIRONMENT=production
      - APPFLOWY_WORKER_DATABASE_URL=${APPFLOWY_WORKER_DATABASE_URL}
      - APPFLOWY_WORKER_DATABASE_NAME=${APPFLOWY_WORKER_DATABASE_NAME}
      - APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=30
      - APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO}
      - APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
      - APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
      - APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
      - APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
      - APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
      - APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
      - APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
      - APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
      - APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
      - APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
      - APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND}
    depends_on:
      postgres:
        condition: service_healthy

  appflowy_web:
    restart: on-failure
    image: appflowyinc/appflowy_web:${APPFLOWY_WEB_VERSION:-latest}
    depends_on:
      - appflowy_cloud
    ports:
      - ${APPFLOWY_WEB_PORT:-8080}:80

volumes:
  postgres_data:
  minio_data:
<!-- gh-comment-id:3138642943 --> @PaganMuffin commented on GitHub (Jul 31, 2025): > [@PaganMuffin](https://github.com/PaganMuffin) This might be caused by an older version of AppFlowy Cloud being used. For upgrading, switching git branch is not enough - did you also do a docker compose pull to get the latest docker image version for Appflowy cloud, or manually update the image tag? At first I tried without pulling, but on Discord it was suggested to me, to do docker compose pull. I did it, but didn't worked. Later I tried using specific version but it didn't worked too `GOTRUE_VERSION=0.9.64 APPFLOWY_CLOUD_VERSION=0.9.64 APPFLOWY_ADMIN_FRONTEND_VERSION=0.9.64 APPFLOWY_WORKER_VERSION=0.9.64` Here is docker compose I used to run it and command ``` GOTRUE_VERSION=0.9.64 APPFLOWY_CLOUD_VERSION=0.9.64 APPFLOWY_ADMIN_FRONTEND_VERSION=0.9.64 APPFLOWY_WORKER_VERSION=0.9.64 APPFLOWY_WEB_VERSION=0.1.19 docker compose -f docker-compose.custom.yml_2 --env-file .env.custom_2 up -d ``` ``` # Essential services for AppFlowy Cloud services: # You do not need this if you have configured to use your own s3 file storage minio: restart: on-failure image: minio/minio environment: - MINIO_BROWSER_REDIRECT_URL=${APPFLOWY_BASE_URL?:err}/minio - MINIO_ROOT_USER=${APPFLOWY_S3_ACCESS_KEY:-minioadmin} - MINIO_ROOT_PASSWORD=${APPFLOWY_S3_SECRET_KEY:-minioadmin} command: server /data --console-address ":9001" ports: - ${MINIO_PORT:-9000}:9000 - ${MINIO_CONSOLE_PORT:-9001}:9001 volumes: - minio_data:/data postgres: restart: on-failure image: pgvector/pgvector:pg16 environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_DB=${POSTGRES_DB:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - POSTGRES_HOST=${POSTGRES_HOST:-postgres} healthcheck: test: [ "CMD", "pg_isready", "-U", "${POSTGRES_USER}", "-d", "${POSTGRES_DB}" ] interval: 5s timeout: 5s retries: 12 volumes: - postgres_data:/var/lib/postgresql/data redis: restart: on-failure image: redis gotrue: restart: on-failure build: context: docker/gotrue dockerfile: Dockerfile depends_on: postgres: condition: service_healthy ports: - ${GOTRUE_PORT:-9999}:9999 # healthcheck: # test: "curl --fail http://127.0.0.1:29999/health || exit 1" # interval: 5s # timeout: 5s # retries: 12 image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest} environment: # There are a lot of options to configure GoTrue. You can reference the example config: # https://github.com/supabase/auth/blob/master/example.env # The initial GoTrue Admin user to create, if not already exists. - GOTRUE_ADMIN_EMAIL=${GOTRUE_ADMIN_EMAIL} # The initial GoTrue Admin user password to create, if not already exists. # If the user already exists, the update will be skipped. - GOTRUE_ADMIN_PASSWORD=${GOTRUE_ADMIN_PASSWORD} - GOTRUE_DISABLE_SIGNUP=${GOTRUE_DISABLE_SIGNUP:-false} - GOTRUE_SITE_URL=appflowy-flutter:// # redirected to AppFlowy application - GOTRUE_URI_ALLOW_LIST=** # adjust restrict if necessary - GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET} # authentication secret - GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP} # Without this environment variable, the createuser command will create an admin # with the `admin` role as opposed to `supabase_admin` - GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin - GOTRUE_DB_DRIVER=postgres - API_EXTERNAL_URL=${API_EXTERNAL_URL} - DATABASE_URL=${GOTRUE_DATABASE_URL} - PORT=9999 - GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST} # e.g. smtp.gmail.com - GOTRUE_SMTP_PORT=${GOTRUE_SMTP_PORT} # e.g. 465 - GOTRUE_SMTP_USER=${GOTRUE_SMTP_USER} # email sender, e.g. noreply@appflowy.io - GOTRUE_SMTP_PASS=${GOTRUE_SMTP_PASS} # email password - GOTRUE_MAILER_URLPATHS_CONFIRMATION=/gotrue/verify - GOTRUE_MAILER_URLPATHS_INVITE=/gotrue/verify - GOTRUE_MAILER_URLPATHS_RECOVERY=/gotrue/verify - GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE=/gotrue/verify - GOTRUE_MAILER_TEMPLATES_MAGIC_LINK=${GOTRUE_MAILER_TEMPLATES_MAGIC_LINK} - GOTRUE_SMTP_ADMIN_EMAIL=${GOTRUE_SMTP_ADMIN_EMAIL} # email with admin privileges e.g. internal@appflowy.io - GOTRUE_SMTP_MAX_FREQUENCY=${GOTRUE_SMTP_MAX_FREQUENCY:-1ns} # set to 1ns for running tests - GOTRUE_RATE_LIMIT_EMAIL_SENT=${GOTRUE_RATE_LIMIT_EMAIL_SENT:-100} # number of email sendable per minute - GOTRUE_MAILER_AUTOCONFIRM=${GOTRUE_MAILER_AUTOCONFIRM:-false} # change this to true to skip email confirmation # Google OAuth config - GOTRUE_EXTERNAL_GOOGLE_ENABLED=${GOTRUE_EXTERNAL_GOOGLE_ENABLED} - GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID} - GOTRUE_EXTERNAL_GOOGLE_SECRET=${GOTRUE_EXTERNAL_GOOGLE_SECRET} - GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI} # GITHUB OAuth config - GOTRUE_EXTERNAL_GITHUB_ENABLED=${GOTRUE_EXTERNAL_GITHUB_ENABLED} - GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=${GOTRUE_EXTERNAL_GITHUB_CLIENT_ID} - GOTRUE_EXTERNAL_GITHUB_SECRET=${GOTRUE_EXTERNAL_GITHUB_SECRET} - GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=${GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI} # Discord OAuth config - GOTRUE_EXTERNAL_DISCORD_ENABLED=${GOTRUE_EXTERNAL_DISCORD_ENABLED} - GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=${GOTRUE_EXTERNAL_DISCORD_CLIENT_ID} - GOTRUE_EXTERNAL_DISCORD_SECRET=${GOTRUE_EXTERNAL_DISCORD_SECRET} - GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=${GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI} # SAML 2.0 OAuth config - GOTRUE_SAML_ENABLED=${GOTRUE_SAML_ENABLED} - GOTRUE_SAML_PRIVATE_KEY=${GOTRUE_SAML_PRIVATE_KEY} appflowy_cloud: restart: on-failure environment: - RUST_LOG=${RUST_LOG:-info} - APPFLOWY_ENVIRONMENT=production - APPFLOWY_DATABASE_URL=${APPFLOWY_DATABASE_URL} - APPFLOWY_REDIS_URI=${APPFLOWY_REDIS_URI} - APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET} - APPFLOWY_GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP} - APPFLOWY_GOTRUE_BASE_URL=${APPFLOWY_GOTRUE_BASE_URL} - APPFLOWY_S3_CREATE_BUCKET=${APPFLOWY_S3_CREATE_BUCKET} - APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO} - APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL} - APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY} - APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY} - APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET} - APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION} - APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=${APPFLOWY_S3_PRESIGNED_URL_ENDPOINT} - APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST} - APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT} - APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME} - APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL} - APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD} - APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND} - APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL} - APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS} - AI_SERVER_HOST=${AI_SERVER_HOST} - AI_SERVER_PORT=${AI_SERVER_PORT} - AI_OPENAI_API_KEY=${AI_OPENAI_API_KEY} - APPFLOWY_WEB_URL=${APPFLOWY_WEB_URL} build: context: . dockerfile: Dockerfile args: FEATURES: "" image: appflowyinc/appflowy_cloud:${APPFLOWY_CLOUD_VERSION:-latest} depends_on: gotrue: condition: service_started ports: - ${APPFLOWY_CLOUD_PORT:-8000}:8000 admin_frontend: restart: on-failure build: context: . dockerfile: ./admin_frontend/Dockerfile image: appflowyinc/admin_frontend:${APPFLOWY_ADMIN_FRONTEND_VERSION:-latest} ports: - ${ADMIN_FRONTEND_PORT:-3000}:3000 environment: - RUST_LOG=${RUST_LOG:-info} - ADMIN_FRONTEND_REDIS_URL=${ADMIN_FRONTEND_REDIS_URL:-redis://redis:6379} - ADMIN_FRONTEND_GOTRUE_URL=${ADMIN_FRONTEND_GOTRUE_URL:-http://gotrue:9999} - ADMIN_FRONTEND_APPFLOWY_CLOUD_URL=${ADMIN_FRONTEND_APPFLOWY_CLOUD_URL:-http://appflowy_cloud:8000} - ADMIN_FRONTEND_PATH_PREFIX=${ADMIN_FRONTEND_PATH_PREFIX:-} depends_on: gotrue: condition: service_started appflowy_cloud: condition: service_started appflowy_worker: restart: on-failure image: appflowyinc/appflowy_worker:${APPFLOWY_WORKER_VERSION:-latest} build: context: . dockerfile: ./services/appflowy-worker/Dockerfile environment: - RUST_LOG=${RUST_LOG:-info} - APPFLOWY_ENVIRONMENT=production - APPFLOWY_WORKER_REDIS_URL=${APPFLOWY_WORKER_REDIS_URL:-redis://redis:6379} - APPFLOWY_WORKER_ENVIRONMENT=production - APPFLOWY_WORKER_DATABASE_URL=${APPFLOWY_WORKER_DATABASE_URL} - APPFLOWY_WORKER_DATABASE_NAME=${APPFLOWY_WORKER_DATABASE_NAME} - APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=30 - APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO} - APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL} - APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY} - APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY} - APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET} - APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION} - APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST} - APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT} - APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME} - APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL} - APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD} - APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND} depends_on: postgres: condition: service_healthy appflowy_web: restart: on-failure image: appflowyinc/appflowy_web:${APPFLOWY_WEB_VERSION:-latest} depends_on: - appflowy_cloud ports: - ${APPFLOWY_WEB_PORT:-8080}:80 volumes: postgres_data: minio_data: ```
Author
Owner

@PaganMuffin commented on GitHub (Aug 1, 2025):

After updating containers few time, restoring nginx configuration it started working and there is no more bar informing about reconnecting.

But...
Calendar is still putting app into unusable state and there are differences between web and app like I showed earlier.

<!-- gh-comment-id:3144242600 --> @PaganMuffin commented on GitHub (Aug 1, 2025): After updating containers few time, restoring nginx configuration it started working and there is no more bar informing about reconnecting. But... Calendar is still putting app into unusable state and there are differences between web and app like I showed earlier.
Author
Owner

@casainho commented on GitHub (Aug 8, 2025):

It is working now!! But I don't understand what was the issue.

How I did it: got the code from github, checked out the tag 0.9.64 and docker compose up -d. The appflowy worked on localhost. Then I added the codes for google oauth and I could login on localhost. Then I changed to my public host address and it worked as expected, and finally I changed the paths to the folders with the data, like the postgresql -- finally I had everything worked as before. Meanwhile, the Appflowy app had a new version where in the change log says improved sync.

So, just to clarify, I kept the original docker-compose.yml file and .env file. I just changed the passwords, keys and nginx ports. I didn't removed the nginx from the docker-compose.yml and I am also using nginx NPM, so, nignx is running twice... but it is working!!!

So I am closing this issue and sharing the information about what I did to get it working.

My nginx NPM configurations:

Image Image Image Image
<!-- gh-comment-id:3169490348 --> @casainho commented on GitHub (Aug 8, 2025): It is working now!! But I don't understand what was the issue. How I did it: got the code from github, checked out the tag 0.9.64 and _docker compose up -d_. The appflowy worked on localhost. Then I added the codes for google oauth and I could login on localhost. Then I changed to my public host address and it worked as expected, and finally I changed the paths to the folders with the data, like the postgresql -- finally I had everything worked as before. Meanwhile, the Appflowy app had a new version where in the change log says improved sync. So, just to clarify, I kept the original docker-compose.yml file and .env file. I just changed the passwords, keys and nginx ports. I didn't removed the nginx from the docker-compose.yml and I am also using nginx NPM, so, nignx is running twice... but it is working!!! So I am closing this issue and sharing the information about what I did to get it working. My nginx NPM configurations: <img width="807" height="865" alt="Image" src="https://github.com/user-attachments/assets/3b944ef5-b341-45f3-b5eb-74060390eb73" /> <img width="806" height="432" alt="Image" src="https://github.com/user-attachments/assets/c4936a92-e4cd-492c-8a9e-515d4e02d0b0" /> <img width="808" height="613" alt="Image" src="https://github.com/user-attachments/assets/56842221-135c-4815-be6d-44a1d826ccb8" /> <img width="808" height="963" alt="Image" src="https://github.com/user-attachments/assets/9c548f26-3810-4fc1-a41f-e60a2876a424" />
Author
Owner

@Gobral commented on GitHub (Sep 18, 2025):

Using:
docker compose pull
after checking out to newest tag solved this nginx error for me:
"GET /ws/v2/.... HTTP/1.1" 404 0 "-" "-"

<!-- gh-comment-id:3309880775 --> @Gobral commented on GitHub (Sep 18, 2025): Using: `docker compose pull` after checking out to newest tag solved this nginx error for me: `"GET /ws/v2/.... HTTP/1.1" 404 0 "-" "-"`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#3582
No description provided.