Deployment guide

Migrating from undb to Teable on a ServOrbit VPS

Deploy on a VPS Cloud →

Tutorial

Migrating from undb to Teable on a ServOrbit VPS

Databases11 min read14 steps

NoCode databases have changed how technical teams manage data without writing raw SQL. undb was one of the first serious open source tools in this space: clean interface, simple Docker deployment, permissive license. For two years it held its ground. By late 2025, the signals shifted. The GitHub repository had not seen a new release in over sixty days. Issues were piling up — import bugs, crashes on larger datasets, incompatibilities with recent Node.js versions — without any maintainer response. Community pull requests sat without review. This is not yet formally abandoned, but a JavaScript project that stops moving eventually breaks. Teable emerged as the natural alternative: a NoCode database written in Rust, AGPL-3.0 licensed, with documented Airtable-compatible API, over 12,000 GitHub stars by autumn 2026, and a consistent release cadence. Its Rust architecture gives it a significantly lower memory footprint than undb for equivalent workloads — relevant on an entry-level VPS. This guide covers the complete migration: exporting from undb, installing Teable on a ServOrbit VPS via Docker Compose, importing your data, and verifying integrity. The procedure is tested on a 1 vCPU / 2 GB RAM VPS — the ServOrbit entry-level plan at €3.99/month is sufficient for a team of fewer than ten people.

Contents· The problem with undb in 2025–20261/11
  1. 01The problem with undb in 2025–2026
  2. 02Why migrate now rather than in six months
  3. 03Teable: the actively maintained Rust NoCode database
  4. 04undb vs Teable: technical comparison
  5. 05Preparing the migration: exporting from undb
  6. 06Exporting your data from undb
  7. 07Installing Teable on a ServOrbit VPS
  8. 08Install Teable via Docker Compose
  9. 09Importing your undb data into Teable
  10. 10Import and verify your data
  11. 11Test on a non-critical database first

The problem with undb in 2025–2026

An open source project is not condemned simply because it slows down. Some reach stable maturity and no longer need much change. undb does not fit that profile: it is a young tool in a fast-moving category, with short-lived JavaScript dependencies.

The warning signs that accumulated by late 2025 are specific. The last published tag was more than sixty days old by year end. The number of open issues without a maintainer comment exceeded thirty. Several reported regressions on core features — formulas, filtered views, CSV import — without acknowledgment. The last npm dependency update was months old, leaving known CVEs unpatched in the dependency chain.

The concern is not only technical. A database tool holds operational data. When maintenance weakens, the question shifts from 'does it work today' to 'will it work in six months, and will my data be accessible if it does not.' With undb in its current state, that answer is uncertain.

Why migrate now rather than in six months

  • Active security risk: unmaintained npm dependencies accumulate known CVEs; an undb instance exposed to the internet without a hardened reverse proxy is an expanding attack surface.
  • Unpatched production bugs: regressions in CSV import and formulas reported in late 2025 have no fix; if your usage touches these features, the situation only worsens.
  • Frozen dependencies: Node.js LTS advances, Docker base images change; a project without maintenance eventually fails to build, blocking host security updates.
  • Community moving on: discussions in self-hosted forums (Reddit r/selfhosted, awesome-selfhosted) show a clear migration trend toward Teable, NocoDB, and Grist; staying on undb means losing access to active integrations and community scripts.
  • Orphaned data: the longer you wait, the higher the probability of an undocumented internal schema change; exporting now, while the output format is known and stable, is safer than waiting for a future incompatibility.
  • A clean migration window: your data is fresh and consistent now; a forced migration — because the instance fails to start after a Docker update — always happens under worse conditions.

Teable: the actively maintained Rust NoCode database

Teable positions itself as a self-hosted Airtable alternative, but the technical positioning is more precise. The backend is written in Rust with NestJS for the API layer, and the frontend is a React application. This yields a backend binary consuming roughly 150–200 MB of RAM at idle, compared to 400–600 MB for undb on a comparable instance.

The REST API is documented and designed to be compatible with Airtable patterns: same core concepts (tables, views, fields, records), same HTTP verbs, similar JSON structures. If you have scripts that queried undb via its API, adapting them to Teable amounts to a handful of route and field name adjustments.

The AGPL-3.0 license restricts redistribution of modified Teable builds, but imposes no restrictions on internal use or deploying Teable for your own clients on your own infrastructure — the standard regime for serious self-hosted tools.

The release cadence is the most important factor for a production tool: weekly to biweekly releases with detailed changelogs, critical bugs addressed within 72 hours, and a public roadmap that is kept current. This is the level of maintenance expected of a tool trusted with operational data.

undb vs Teable: technical comparison

Scroll the table

CriterionundbTeable
Backend languageTypeScript (Node.js)Rust + NestJS
LicenseAGPL-3.0AGPL-3.0
RAM at idle (Docker)~400–600 MB~150–200 MB
Airtable-compatible APIPartial, undocumentedYes, documented
CSV/JSON importYes (regressions reported late 2025)Yes, stable
GitHub stars (autumn 2026)~3,500~12,000+
Maintenance activityStalled (>60 days without release, late 2025)Active (weekly releases)

Preparing the migration: exporting from undb

Before installing anything, export your undb data from a still-functioning instance. Do not defer this until after Teable is installed: if something goes wrong between the two steps, you want your data already in hand.

Exporting your data from undb

  1. Access the export interface

    In undb, open each table you want to migrate. The table context menu (the '…' icon or right-click on the tab) exposes an 'Export' option. undb offers two formats: CSV and JSON. Choose JSON for tables with relation or formula fields — CSV flattens relations into strings, complicating remapping. For simple tables (no relations), CSV is sufficient.

  2. Export table by table

    undb does not offer a global database export at this version. Each table must be exported separately. Organize your files in a folder named after the database: for example export-undb-crm/ or export-undb-projects/. Note the import order for later: tables referenced by others must be imported into Teable first.

  3. Verify export integrity

    For each exported JSON file, verify it is not truncated: open it in an editor or run python3 -m json.tool my-export.json > /dev/null — no output means valid JSON. For CSV files, count lines with wc -l export.csv and compare against the record count displayed in undb. A discrepancy of more than a few lines (headers, trailing blank line) warrants investigation before proceeding.

  4. Keep an archive copy

    Before continuing, archive everything: tar czf undb-export-$(date +%Y%m%d).tar.gz export-undb-*/. Keep this archive for thirty days after the migration. If Teable reveals a data inconsistency two weeks after import, the original undb export is your ground truth.

Installing Teable on a ServOrbit VPS

ServOrbit offers a Teable template in its marketplace at /marketplace/bases-de-donnees/teable. The template automatically configures Docker Compose, base environment variables, and the reverse proxy. For a fully manual install that keeps you in control, the steps below cover the complete procedure on Debian 12 or Ubuntu 22.04.

Install Teable via Docker Compose

  1. Create the working directory

    Connect via SSH to your VPS. Create a dedicated directory and navigate into it:

    mkdir -p /opt/teable && cd /opt/teable

    Download the official Compose file from the Teable repository:

    curl -O https://raw.githubusercontent.com/teableio/teable/main/dockers/docker-compose.yml
  2. Configure environment variables

    Create a .env file in /opt/teable/. The minimum required variables are:

    POSTGRES_PASSWORD=change-me-strong
    TEABLE_SECRET_KEY=a-random-32-character-string
    PUBLIC_ORIGIN=https://teable.your-domain.tld

    Generate the secret key with openssl rand -hex 16. Do not reuse the PostgreSQL password from another instance.

  3. Start the services

    Start the stack in the background:

    docker compose up -d

    Wait thirty seconds, then verify all containers are healthy:

    docker compose ps

    The teable service must show healthy. If teable-db is not ready yet, wait a few more seconds — PostgreSQL takes longer on the first start (schema initialization).

  4. Configure the reverse proxy

    Teable listens on port 3000 by default. Configure your reverse proxy (nginx or Caddy) to route HTTPS traffic to localhost:3000. Minimal nginx example:

    server {
        listen 443 ssl;
        server_name teable.your-domain.tld;
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    If using the ServOrbit template, this configuration is generated automatically.

  5. First access and admin account creation

    Open https://teable.your-domain.tld in a browser. On first login, Teable prompts you to create an admin account. This account is local to your instance — there is no external registration. Choose a strong password and store it in your secrets manager.

  6. Create a workspace

    After login, create a workspace (equivalent to an organization in Airtable) that will hold your bases migrated from undb. Give it a descriptive name — undb Migration for example — to distinguish imported data from new bases you will create directly in Teable.

Importing your undb data into Teable

Teable offers two import paths: CSV for simple tables, and structured JSON for tables with complex field types. The import interface is accessible from the '+' menu of a workspace or from the 'Import table' button inside an existing base.

Import and verify your data

  1. Create the target base in Teable

    In your workspace, click 'New base' and give it the same name as the original database in undb. This naming consistency makes cross-verification easier during migration. If you are migrating multiple databases, process them one at a time.

  2. Import tables from CSV or JSON

    Inside the target base, click '+ Add table' then 'Import from file'. Select your CSV or JSON export. For CSV, Teable auto-detects column types — verify that date columns are interpreted as Date rather than Text. For JSON, the mapping is more direct if the undb export format is standard.

    Import tables without relations first (the leaf tables in your data graph), then those that reference them.

  3. Map and adjust field types

    After import, review each column in Teable and verify its type. Common issues when migrating from undb:
    - undb formula fields have no direct import equivalent — they arrive as frozen computed values. Recreate formulas in Teable manually.
    - attachment fields do not migrate via CSV; if undb stored files, handle them separately.
    - Boolean fields exported as the string true/false need to be converted to Checkbox type in Teable.

  4. Verify relationships and data integrity

    If your undb tables had relationships (link-type fields), these arrive flattened in the CSV export. Recreate link fields in Teable once all tables are imported, then use the filter view to verify that record counts match the originals. A persistent discrepancy indicates an encoding issue in the export (special characters, Windows line endings) — re-export using JSON in that case.

Test on a non-critical database first

Before migrating your production data, run the complete procedure on a secondary database — test data, an archived project, or an anonymized copy. This surfaces field type mapping issues and edge cases specific to your usage without risking operational data integrity.

Keep the undb export archive for at least thirty days after migration. If a data inconsistency surfaces two weeks after import — a missing field, a corrupted value — the original export is your only source of truth. Once that period has passed and the migration is fully validated, you can shut down the undb instance with confidence.

Deploy Teable on ServOrbit in minutes

The ServOrbit Teable marketplace template automatically configures Docker Compose, PostgreSQL, the reverse proxy, and TLS certificate. Entry-level VPS at €3.99/month, sufficient for a team of fewer than ten people. Your data stays on your infrastructure.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab