Deployment guide

Teable

Overview

Teable is an open source, no-code database and a self-hosted alternative to Airtable. It turns a real PostgreSQL database into a friendly, spreadsheet-like interface. You organise data into spaces, bases and tables, and edit it in grid, kanban, gallery, form and calendar views, with formulas, links, rollups, filtering, grouping and a full REST API.

This SecureAnyCloud image runs Teable the officially supported way: the upstream container alongside a bundled PostgreSQL and Redis, orchestrated by Docker Compose under systemd and fronted by nginx. Every image is pinned by digest and captured into the VM, so your instance starts in seconds.

Teable is a trademark of its respective owner. SecureAnyCloud produces this image, and it is not affiliated with, endorsed by or sponsored by Teable. It ships the free and open source AGPL 3.0 self-hosted core, unmodified.

What you get:

  • Teable (the AGPL 3.0 self-hosted open source core), pinned by image digest
  • A bundled PostgreSQL database and a bundled Redis, both pinned by image digest and reachable only inside a private Docker network, never published to a host port
  • Docker Engine (Docker CE) with Teable published to the loopback interface only, fronted by nginx on port 80
  • teable.service, teable-firstboot.service and nginx.service as systemd units, enabled and active on boot
  • A unique JWT secret, session signing secret, access token encryption key and initialisation vector, database password, cache password and pre-seeded owner administrator, generated for each VM on first boot and never baked into the image
  • A unique owner administrator pre-seeded before the port is reachable, so nobody can claim the admin role before you sign in
  • Public sign-up disabled in the application and blocked at the reverse proxy, so no one can self-register on your instance
  • A clean, empty database on first boot: no default account, no shipped secret, no prior data
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.

Standard_B2s (2 vCPU / 4 GiB RAM) is a sensible starting size. Choose a larger size for bigger workspaces and heavier usage.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the web interface. Also allow 443/tcp once you add TLS. Teable serves plain HTTP on port 80, so for production, put it behind TLS with your own domain (see the final section).

Step 1 - Deploy from the Azure Marketplace

  • In the Azure portal, choose Create a resource and search the Marketplace for the SecureAnyCloud Teable offer.
  • Select the plan, then Create.
  • On the Basics tab, pick your subscription, resource group and region, name the VM, and select Standard_B2s or larger.
  • Choose SSH public key authentication with the admin username azureuser, and provide your public key.
  • On the Networking tab, allow inbound 22/tcp from your management network and 80/tcp for the web interface.
  • Review and create the VM. When it is running, note its public IP address.

Step 2 - Deploy from the Azure CLI

You can also deploy the image from the Azure CLI. These commands accept the Marketplace terms, create the VM and open the web port:

az vm image terms accept --urn sac1647283583153:teable:default:latest
az vm create \
  --resource-group my-teable-rg \
  --name teable \
  --image sac1647283583153:teable:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard
az vm open-port --resource-group my-teable-rg --name teable --port 80 --priority 900

Step 3 - Connect to your VM

Connect over SSH as azureuser. Replace <vm-ip> with your VM's public IP address:

ssh azureuser@<vm-ip>

Step 4 - Confirm the services are running

Teable, its bundled PostgreSQL and Redis, and nginx all start automatically on first boot. Confirm that they are active:

sudo systemctl is-active docker teable nginx

Expected output:

active active active

The stack runs as three containers on a private Docker network. PostgreSQL and Redis are never published to a host port. Only Teable is published, and only to the loopback interface, with nginx in front on port 80.

Step 5 - Secure by default: the admin is pre-seeded and sign-up is disabled

In self-hosted Teable, the first account that signs up becomes the administrator. On a public server that is a risk, because whoever registers first would own your instance. This image closes the gap.

On first boot, before the port is reachable, the image creates a unique owner administrator with a per-VM password, so the administrator role is already claimed. Public sign-up is then disabled in the application and, as a second layer, blocked at the reverse proxy. The JWT and session secrets are unique per VM, so sessions cannot be forged.

The resulting posture is simple. Public sign-up is refused, a blank or wrong password is rejected, and only the per-VM administrator is accepted.

Read your unique credentials from the root-only file where the image writes them:

sudo cat /root/teable-credentials.txt

The file holds the application URL, the administrator email and the per-VM administrator password. Keep it safe.

Step 6 - Sign in to Teable

Open http://<vm-ip>/ in your browser to reach the Teable sign-in page. Enter the TEABLE_ADMIN_EMAIL and TEABLE_ADMIN_PASSWORD values from the credentials file.

Step 7 - Explore your spaces and bases

After you sign in, you land on the home view. Teable organises everything into spaces, each a place for a team or a project, that hold bases (databases). From here you can create a base, invite collaborators and manage settings.

Step 8 - Work with tables in the grid

Open a base to work with its tables. The grid view is the heart of Teable: a fast, spreadsheet-like editor where each column is a typed field and each row is a record. Field types include single line text, number, single select, date, link, formula and more.

Add records, filter, sort and group your data, and switch between views without changing the underlying data.

Step 9 - Collect data with a form view

Every table can also be presented as a form. Add a form view, and Teable turns your fields into a shareable form that writes straight back into the table. Forms suit intake, requests and surveys.

Teable also exposes a full REST API for every table, so once you are signed in you can read and write records programmatically.

Step 10 - Check the stack health from the command line

Teable exposes an unauthenticated liveness endpoint that reports whether the application and its meta database are ready. It is handy for monitoring. Query it from the VM:

curl -s http://127.0.0.1/health

A healthy stack returns:

{"status":"ok","info":{"metaDatabase":{"status":"up"}},"error":{},"details":{"metaDatabase":{"status":"up"}}}

Step 11 - Adding more people (optional)

This appliance ships with public sign-up disabled, so only you can reach the application. The recommended way to add people is to sign in as the administrator and invite them to a space or a base. This keeps sign-up closed.

If you want to open self-service sign-up instead, re-enable it in the admin panel under Settings. Then remove the location = /api/auth/signup block from /etc/nginx/sites-available/teable and reload nginx:

sudo nginx -t && sudo systemctl reload nginx

Once everyone has an account, disable sign-up again. Restore the block and turn the setting off.

Step 12 - Production: your own domain with TLS

Teable serves plain HTTP on port 80. For production, point a DNS record at the VM and put Teable behind TLS, so links and sessions use an https origin. A common approach is to add a certificate to nginx with Certbot and set PUBLIC_ORIGIN to your https URL:

sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d teable.example.com
sudo sed -i 's#^PUBLIC_ORIGIN=.*#PUBLIC_ORIGIN=https://teable.example.com#' /etc/teable/teable.env
sudo systemctl restart teable

Then restrict the network security group to the sources that need access. See the Teable documentation for the full production checklist.

Support

Every SecureAnyCloud image includes 24/7 support. For questions about deploying or operating Teable on Azure, contact the SecureAnyCloud team through the Azure Marketplace listing or at secureanycloud.com.

Deploy on Azure

Launch Teable on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure