alswl / excalidraw-collaboration

excalidraw with collaboration feature, self-hosting, and only one-click deploy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Couldn't save to backend database, backend storage cant be accessed

Anilo1990 opened this issue · comments

I always get this Error in collab mode. This is my docker-compose which I deploy in Portainer

services:
  frontend:
    image: alswl/excalidraw:v0.17.0-fork-b1
    environment:
      - PORT=8081
      - VITE_APP_BACKEND_V2_GET_URL=https://test.com/api/v2/
      - VITE_APP_BACKEND_V2_POST_URL=https://test.com/api/v2/post/
      - VITE_APP_WS_SERVER_URL=http://127.0.0.1:8082
      - VITE_APP_FIREBASE_CONFIG={}
      # alswl'fork env
      # forked excalidraw can use env https://github.com/alswl/excalidraw/pull/5
      - VITE_APP_HTTP_STORAGE_BACKEND_URL=http://127.0.0.1:8081/api/v2
      - VITE_APP_STORAGE_BACKEND=http
    ports:
      - 18912:80
    networks:
     - excalidraw

  storage:
    image: alswl/excalidraw-storage-backend:v2023.11.11
    restart: always
    environment: # docs https://github.com/alswl/excalidraw-storage-backend#environement-variables
      - PORT=8081
    ports:
      - 8081:8081
    networks:
     - excalidraw

  room:
    image: excalidraw/excalidraw-room:sha-49bf529
    ports:
     - 8082:80
    networks:
     - excalidraw

networks:
 excalidraw:
  name: excalidraw
  external: true

When I check the log for StorageBackend there is a warning

WARN [StorageService] STORAGE_URI is undefined, will use non persistant in memory storage

I tried serveral things to integrate the STORAGE_URI into the docker-compose but it's not working. Here someone had the same issue and he has redis in his docker-compose. I tried this but it's not working for me or I did something wrong.

Any idea how I can solve this?

services:
  frontend:
    image: alswl/excalidraw:v0.17.0-fork-b1
    environment:
      - PORT=8081
      - VITE_APP_BACKEND_V2_GET_URL=https://test.com/api/v2/
      - VITE_APP_BACKEND_V2_POST_URL=https://test.com/api/v2/post/
      - VITE_APP_WS_SERVER_URL=http://127.0.0.1:8082
      - VITE_APP_FIREBASE_CONFIG={}
      # alswl'fork env
      # forked excalidraw can use env https://github.com/alswl/excalidraw/pull/5
      - VITE_APP_HTTP_STORAGE_BACKEND_URL=http://127.0.0.1:8081/api/v2
      - VITE_APP_STORAGE_BACKEND=http
    ports:
      - 18912:80

  storage:
    image: alswl/excalidraw-storage-backend:v2023.11.11
    restart: always
    environment: # docs https://github.com/alswl/excalidraw-storage-backend#environement-variables
      - PORT=8081
    ports:
      - 8081:8081

  room:
    image: excalidraw/excalidraw-room:sha-49bf529
    ports:
     - 8082:80

This configurations works, maybe you should check your network policy.

@alswl
nope the standard configuration doesn't work for me either :-(
I've no special network policy. All other containers are running fine without any issue.

Any idea what I could check further?

`> excalidraw-storage-backend@0.0.1 start:prod

node dist/main
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [NestFactory] Starting Nest application...
[Nest] 17 - 11/23/2023, 2:12:05 PM WARN [StorageService] STORAGE_URI is undefined, will use non persistant in memory storage
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [InstanceLoader] AppModule dependencies initialized +6ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RoutesResolver] ScenesController {/api/v2/scenes}: +12ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/scenes/:id, GET} route +4ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/scenes, POST} route +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RoutesResolver] RoomsController {/api/v2/rooms}: +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/rooms/:id, GET} route +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/rooms/:id, PUT} route +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RoutesResolver] FilesController {/api/v2/files}: +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/files/:id, GET} route +1ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [RouterExplorer] Mapped {/api/v2/files/:id, PUT} route +0ms
[Nest] 17 - 11/23/2023, 2:12:05 PM LOG [NestApplication] Nest application successfully started +4ms`

@alswl
DSM 720+
DSM 7.2.1-69057 Update 2

Docker Version (Container Manager) 20.10.23-1437
Docker Compose version 20.10.23, build 876964a

@Anilo1990 try to upgrade to latest docker / docker-compose version.

My version:

Docker version 24.0.6, build ed223bc
Docker Compose version v2.23.0-desktop.1

@alswl
I think thats not possible. I followed this guide https://www.smarthomebeginner.com/synology-docker-media-server/ but it's not possible to update to 2.23.3 because Synology is using a application called "Container Manager" to run Docker. I executed the command but it still stays on Docker version 20.10.23

Which URL did you open?

If you not run containers in your current desktop, you cannot access the "127.0.0.1" website.

So the VITE_APP_WS_SERVER_URL and VITE_APP_HTTP_STORAGE_BACKEND_URL in your configuration is wrong.

You can check your Web Dev Tools, I think the HTTP request is failed, and even you change the two env by the intranet IP, you will still get error. Because the two url is not HTTPS protocol.

You must register a HTTP SSL cert or sign by you self (with CA cert install).

@alswl
I have a signed certificate with Let‘s Encrypt.
It looks like this https://excalidraw.mydomain.de

@Anilo1990 you should three domains (frontend / room / storage) or sign one domain but use a Load Balancer(like nginx).

@alswl
I can assign subdomains for frontend / room / storage.
Can you tell me how I need to modify the docker-compose for that?

modify the docker-compose

It will be a little complicated, user need known the basis of infrastructure management(A.K.A. DevOps).

Maybe I will provide a guide later.

@alswl
I thought I only had to add the subdomains somewhere in the docker-compose. I did not know that it is so complicated that I need an extra guide for it

@alswl
you had time to write down a guide for my issue so I can solve it?

@Anilo1990
Is the port that you set for the storage service open (8081)? I get the same error in collab mode on a local VM with docker when the port is not open.
However the storage log also tells me: WARN [StorageService] STORAGE_URI is undefined, will use non persistant in memory storage

@kschimpanski
I have already tried the following:

  • enabled port 8081 in my disc station
  • Firewall completely deactivated
  • Restarted Excalibur services in Portainer after I made a change

The warning message still appears in collab mode.

grafik

any idea for a solution @alswl @kschimpanski