[{"data":1,"prerenderedAt":134},["ShallowReactive",2],{"seo-verification":3,"blog-self-hosting-grist-on-a-vps-open-source-airtable-alternative-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":75,"ctaBody":76,"ctaButton":77,"ctaUrl":78,"relatedPosts":79},218,"self-hosting-grist-on-a-vps-open-source-airtable-alternative",{"fr":10,"en":8,"ar":11},"self-host-grist-vps","استضافة-grist-على-vps-بديل-airtable-مفتوح-المصدر","Self-Hosting Grist on a VPS: Open-Source Airtable Alternative","Deploy Grist on a ServOrbit VPS: an open-source Airtable with Python formulas, an automatic REST API and real-time collaboration, all in one Docker container.",3,1,false,"2026-08-04T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-grist-vps-poster.svg",{"categorySlug":30,"appSlug":31},"development","grist","Google Sheets stores lists. Airtable adds relations between tables but charges $20 per user per month. Grist does both, open-source, on your own server: typed columns, references between tables, Python formulas running server-side, and a REST API generated automatically on every document. The result is a complete data modelling tool — no subscription, no vendor lock-in.",[34,38,47,50,72],{"type":35,"title":36,"body":37},"h2","Why Grist instead of Google Sheets or Airtable","Google Sheets is a spreadsheet: it stores data flat, calculations are limited to sheet functions, and relations between sheets rely on fragile VLOOKUPs. Airtable solves this with relational bases but at $20 per user per month, the bill adds up fast for an agency or technical team.\n\nGrist combines both worlds: a familiar spreadsheet interface over a real relational database. Each document contains tables with typed columns (text, numeric, date, reference, attachment), explicit relations between tables via reference columns, and Python formulas that run server-side — not in the browser. On your VPS, Grist costs $0 extra per month.",{"type":39,"title":40,"items":41},"ul","What Grist does that Google Sheets cannot",[42,43,44,45,46],"**Relations between tables**: a reference column in `Orders` points to `Customers` — not a breakable VLOOKUP, a real foreign key with autocomplete.","**Server-side Python formulas**: `import datetime`, `import re`, `import uuid` — and any pure-Python library. Formulas execute in a server sandbox, not the browser.","**Automatic REST API**: every document exposes `\u002Fapi\u002Fdocs\u002F\u003Cid>\u002Ftables\u002F\u003Ctable>\u002Frecords` without configuration. Integrate Grist with n8n, Make or any HTTP client.","**Multiple views on the same data**: grid, card, chart, calendar, custom widget — each view is filtered and configured independently without duplicating data.","**Per-row, per-column access rules**: restrict read or write access to a row based on user attributes — granular enough for multi-tenant documents.",{"type":35,"title":48,"body":49},"Single-container Docker architecture","Grist deploys as a single `gristlabs\u002Fgrist:latest` container that bundles Node.js (server), Python (formula sandbox) and SQLite (document storage). A named volume `\u002Fpersist` stores `.grist` files — one file per document. No external service required: no PostgreSQL, no Redis, no Celery.\n\nOne environment variable drives initial authentication: `GRIST_DEFAULT_EMAIL=admin@localhost.local` automatically logs in the user without SMTP or email verification. For multi-user deployments with real authentication, Grist supports OIDC (`GRIST_OIDC_*`) — Google Workspace, Authentik, Keycloak.",{"type":51,"title":52,"steps":53},"steps","Deploy Grist on a VPS in 4 steps",[54,57,60,63,66,69],{"title":55,"body":56},"Prepare the VPS and Docker","A 1 GB RAM VPS is sufficient. SSH in, install Docker (`curl -fsSL https:\u002F\u002Fget.docker.com | sh`), create the stack folder: `mkdir -p \u002Fopt\u002Fstacks\u002Fgrist && cd \u002Fopt\u002Fstacks\u002Fgrist`.",{"title":58,"body":59},"Create the docker-compose.yml","Define the service from the `gristlabs\u002Fgrist:latest` image, mount the `\u002Fpersist` volume, expose port 8484, and set a random `GRIST_SESSION_SECRET` (`openssl rand -hex 32`). Add `GRIST_DEFAULT_EMAIL=admin@localhost.local` for automatic access without SMTP.",{"title":61,"body":62},"Launch and verify","Start with `docker compose up -d` and wait for the Node.js boot (~10 s). Check with `curl -sI http:\u002F\u002Flocalhost:8484\u002F` — you should get HTTP 200 or a 302 redirect to home. Grist is running.",{"title":64,"body":65},"Create your first document","Open `http:\u002F\u002Fyour-vps-ip:8484` — Grist connects you directly. Click '+ Add document', define your tables and columns, then explore Python formulas by typing `=` in a cell. To import existing data: File → Import from file (CSV, Excel, .grist).",{"title":67,"body":68},"Add a reverse proxy and HTTPS","Put Caddy in front of Grist: `grist.yourdomain.com { reverse_proxy grist:8484 }`. Caddy obtains and renews the Let's Encrypt certificate automatically. Update `GRIST_ALLOWED_HOSTS=grist.yourdomain.com` and restart the container.",{"title":70,"body":71},"Logging in for the first time","Grist redirects you to a \"boot\" login screen that asks for an installation key — enter the key provided. You then go through a quick configuration wizard, after which you reach your documents as the administrator (admin@localhost.local).",{"type":73,"body":74},"tip","To automate Grist document backups, mount the `\u002Fpersist\u002Fdocs\u002F` volume into a Backrest job (also in the ServOrbit catalogue): Backrest snapshots the folder via restic and pushes encrypted increments to S3, Backblaze B2 or SFTP — without stopping Grist. Grist itself keeps a per-document snapshot history (Document menu → History), handy for restoring a previous version without leaving the interface.","Your Airtable, on your own server","Deploy Grist on a ServOrbit VPS and model your data without a subscription, without vendor lock-in — REST API, Python formulas, real-time collaboration.","Deploy Grist","\u002Fmarketplace\u002Fdevelopment\u002Fgrist",[80,97,114],{"id":81,"slug":82,"slugs":83,"title":86,"excerpt":87,"readTime":88,"views":89,"isPinned":16,"publishedAt":90,"category":91,"categories":92,"featuredImage":26,"bgImage":27,"posterImage":94,"relatedSolution":95},188,"self-host-nocobase-on-a-vps-no-code-platform-for-internal-tools",{"fr":84,"en":82,"ar":85},"self-host-nocobase-vps","استضافة-nocobase-على-vps-منصة-بلا-كود-لأدواتك-الداخلية","Self-Host NocoBase on a VPS: No-Code Platform for Internal Tools","Deploy NocoBase on your VPS — the no-code\u002Flow-code platform to build internal tools, CRM and approval workflows. Apache-2.0, 23 k+ stars, v2.1.26.",4,0,"2026-07-22T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[93],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fself-host-nocobase-vps-poster.svg",{"categorySlug":30,"appSlug":96},"nocobase",{"id":98,"slug":99,"slugs":100,"title":103,"excerpt":104,"readTime":105,"views":89,"isPinned":16,"publishedAt":106,"category":107,"categories":108,"featuredImage":26,"bgImage":27,"posterImage":110,"relatedSolution":111},157,"how-to-self-host-nocodb-on-a-vps",{"fr":101,"en":99,"ar":102},"self-host-nocodb-vps","كيفية-استضافة-nocodb-ذاتيا-على-خادم-vps","How to Self-Host NocoDB on a VPS","Deploy NocoDB on your VPS for a self-hosted, open-source Airtable alternative. Turn any database into a smart spreadsheet with REST and GraphQL APIs, via Docker Compose.",2,"2026-01-20T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[109],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fself-host-nocodb-vps-poster.svg",{"categorySlug":112,"appSlug":113},"databases","nocodb",{"id":115,"slug":116,"slugs":117,"title":120,"excerpt":121,"readTime":88,"views":89,"isPinned":16,"publishedAt":122,"category":123,"categories":129,"featuredImage":26,"bgImage":27,"posterImage":131,"relatedSolution":132},67,"hosting-meilisearch-on-a-vps",{"fr":118,"en":116,"ar":119},"heberger-meilisearch-vps","استضافة-meilisearch-على-خادم-vps","Hosting Meilisearch on a VPS","Host Meilisearch on your VPS: an instant, fault-tolerant and typo-tolerant search engine. A Docker, master key and SSL guide.","2026-04-14T00:00:00+00:00",{"id":124,"name":125,"slug":126,"color":127,"icon":128},6,"Databases","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[130],{"id":124,"name":125,"slug":126,"color":127,"icon":128},"\u002Fblog\u002Fcovers\u002Fheberger-meilisearch-vps-poster.svg",{"categorySlug":112,"appSlug":133},"meilisearch",1787581015321]