rtabby-web-api icon indicating copy to clipboard operation
rtabby-web-api copied to clipboard

Enabling auto-sync corrupts encrypted config

Open parasiteoflife opened this issue 11 months ago • 9 comments

I'm using tabby 1.0.220, if I enable the "Sync automatically" option I start getting:

Could not decrypt config

TypeError: Cannot read properties of undefined (reading 'version')

If I retry it asks for the vault passphrase but it keeps showing the same error. My config is encrypted.

parasiteoflife avatar Jan 17 '25 17:01 parasiteoflife

Hey @parasiteoflife

Thank's for reporting this issue. Sadly, i'm unable to reproduce. Do you have any error on rtabby-web-api side ?

Clem-Fern avatar Jan 18 '25 18:01 Clem-Fern

I see this

rtabby  | [2025-01-15T02:53:59Z ERROR rtabby_web_api] Encountered error on database connection: Invalid connection url for multiconnection
rtabby  | Error: DbConnection(BadConnection("Invalid connection url for multiconnection"))
rtabby-db  | 2025-01-19  7:42:13 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
rtabby-db  | 2025-01-19  7:42:13 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF

I thought maybe it was the db password so nuked the db folder, set a new password without special chars but the problem still occurs and now I only get the db error from above, haven't seen the web api error again.

When the problem occurs all the config file has is:

encrypted: true
configSync:
  parts:
    hotkeys: false
    appearance: false
    vault: false
  host: https://tabby.domain.com
  token: xxxxxxxxxxxx-xxxxxxx-xxxxxxxxxxxx-xxxxxx-xxxxxxxxxxxx
  configID: 1000
  auto: true

parasiteoflife avatar Jan 19 '25 07:01 parasiteoflife

Could you pls send your docker compose file ?

Clem-Fern avatar Jan 19 '25 20:01 Clem-Fern

here it is, I'm using an env file:

services:
  rtabby:
    image: ghcr.io/clem-fern/rtabby-web-api:latest
    container_name: rtabby
    # Minimal image without third party login
    #image: ghcr.io/clem-fern/rtabby-web-api:latest-minimal

    # Build image from local rtabby repository
    #build:
    #  context: .
    #  args:
    #    - GIT_COMMIT=${GIT_COMMIT}
    # Optional: Minimal image without third party login
    #    - FEATURE_FLAGS=-F|mysql-bundle

    # If running as root, setup your user/volume owner UID and GID
    #user: "1000:1000"
    cap_add:
      - CAP_DAC_OVERRIDE
    cap_drop: ["ALL"]
    read_only: true
    ports:
      - 30080:8080
    env_file:
      - .env
    volumes:
      - type: bind
        source: /data/rtabby/config
        target: /config
        read_only: false
    depends_on:
      rtabby-db:
        condition: service_healthy
    dns:
      - 192.168.11.1
      - 192.168.11.3
    networks:
      rtabby:
      proxy:
    restart: unless-stopped

  rtabby-db:
    image: mariadb:latest
    container_name: rtabby-db
    cap_add:
      - CAP_CHOWN
      - CAP_DAC_OVERRIDE
      - CAP_SETGID
      - CAP_SETUID
    cap_drop: ["ALL"]
    read_only: true
    tmpfs:
      - /run/mysqld/
      - /tmp
    volumes:
      - type: bind
        source: /data/rtabby/db
        target: /var/lib/mysql
        read_only: false
    env_file:
      - .env
    healthcheck:
      test:
        [
          "CMD",
          "/usr/local/bin/healthcheck.sh",
          "--su-mysql",
          "--innodb_initialized",
        ]
      interval: 5s
      timeout: 5s
      retries: 20
      start_period: 6s
    dns:
      - 192.168.11.1
      - 192.168.11.3
    networks:
      rtabby:
    restart: unless-stopped

networks:
  rtabby:
    name: rtabby
  proxy:
    name: proxy
    external: true
DATABASE_URL=mysql://tabby:xxxxxxxxxxxxxxxxxxxxx@rtabby-db/tabby
GITHUB_APP_CLIENT_ID=xxxxxxxxxxxxxxxxxxx
GITHUB_APP_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# GITLAB_APP_CLIENT_ID=
# GITLAB_APP_CLIENT_SECRET=
# GOOGLE_APP_CLIENT_ID=
# GOOGLE_APP_CLIENT_SECRET=
# MICROSOFT_APP_CLIENT_ID=
# MICROSOFT_APP_CLIENT_SECRET=
HTTPS_CALLBACK=true
MARIADB_MYSQL_LOCALHOST_USER=true
MARIADB_RANDOM_ROOT_PASSWORD=yes
MARIADB_DATABASE=tabby
MARIADB_USER=tabby
MARIADB_PASSWORD='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

parasiteoflife avatar Jan 19 '25 23:01 parasiteoflife

Sorry for the delay, I just tested with your docker compose and database password test123test.. Vault and auto sync enabled on tabby side. Everything working fine.

Clem-Fern avatar Jan 24 '25 20:01 Clem-Fern

Maybe it's the tabby client OS? I'm using Windows 10.

I've tried uploading the config, making a backup and then downloading the config from the sync window. I compared the two files (downloaded config and backup) and they are different, is this normal?

The contents, iv and keySalt are different which I'm guessing is why I can't unlock the vault with my password

parasiteoflife avatar Jan 25 '25 06:01 parasiteoflife

  • similar issues
  tabby:
    image: ghcr.io/clem-fern/rtabby-web-api
    container_name: tabby
    hostname: tabby
    restart: always
    network_mode: bridge
    ports:
      - "6550:8080"
    volumes:
      - /root/docker/public/tabby/config:/config
    environment:
      TZ: "Asia/Shanghai"
      DATABASE_URL: "sqlite:///config/tabby.sqlite"
[2025-08-04T11:05:22Z ERROR rtabby_web_api] Encountered error on database connection: Invalid connection url for multiconnection
Error: DbConnection(BadConnection("Invalid connection url for multiconnection"))

It works fine with the Docker image ghcr.io/clem-fern/rtabby-web-api:0.4.3-sqlite

niliovo avatar Aug 04 '25 11:08 niliovo

  • similar issues

    tabby: image: ghcr.io/clem-fern/rtabby-web-api container_name: tabby hostname: tabby restart: always network_mode: bridge ports: - "6550:8080" volumes: - /root/docker/public/tabby/config:/config environment: TZ: "Asia/Shanghai" DATABASE_URL: "sqlite:///config/tabby.sqlite"

[2025-08-04T11:05:22Z ERROR rtabby_web_api] Encountered error on database connection: Invalid connection url for multiconnection
Error: DbConnection(BadConnection("Invalid connection url for multiconnection"))

It works fine with the Docker image ghcr.io/clem-fern/rtabby-web-api:0.4.3-sqlite

Hey @niliovo, by default, latest tag use mysql as database. If you want to sqlite database, use ghcr.io/clem-fern/rtabby-web-api:latest-sqlite or ghcr.io/clem-fern/rtabby-web-api:sqlite

Clem-Fern avatar Aug 05 '25 20:08 Clem-Fern

  • similar issues tabby: image: ghcr.io/clem-fern/rtabby-web-api container_name: tabby hostname: tabby restart: always network_mode: bridge ports:
    • "6550:8080" volumes:
    • /root/docker/public/tabby/config:/config environment: TZ: "Asia/Shanghai" DATABASE_URL: "sqlite:///config/tabby.sqlite"
[2025-08-04T11:05:22Z ERROR rtabby_web_api] Encountered error on database connection: Invalid connection url for multiconnection
Error: DbConnection(BadConnection("Invalid connection url for multiconnection"))

It works fine with the Docker image ghcr.io/clem-fern/rtabby-web-api:0.4.3-sqlite

Hey @niliovo, by default, latest tag use mysql as database. If you want to sqlite database, use ghcr.io/clem-fern/rtabby-web-api:latest-sqlite or ghcr.io/clem-fern/rtabby-web-api:sqlite

Thank you, I almost forgot about this.

niliovo avatar Aug 10 '25 15:08 niliovo