External database connectors: create a limited key
For each connector, where to create the key, the smallest scope to give it, where it runs, and what it can do.
On this page
Help sections
A sync with an external database needs a key: give it the smallest possible scope. The key stays in your profile's encrypted keychain (desktop, web), bound to the source's host, or in your gate when the gate runs the sync. Filarr never keeps it.
The connectors
The Feed from an external database… screen offers eight connectors.
| connector | the key, and its smallest scope | where it runs |
|---|---|---|
| D1 (Cloudflare) | a custom Cloudflare API token, limited to your account and to D1: read for an import or an incoming mirror, edit to publish or sync both ways | desktop, web, gate |
| PostgreSQL | the password of a dedicated role (optional if your server accepts a connection without one): SELECT on the tables you need; INSERT, UPDATE, DELETE as well to write | desktop, gate |
| MySQL (and MariaDB) | the password of a user limited to the tables you need, same rights | desktop, gate |
| Supabase | a project key. The "service" key opens the whole project and bypasses RLS rules: prefer a key bound by limited rules | desktop, web, gate |
| Airtable | a personal token limited to the base, with data.records:read (and data.records:write to write) | desktop, web, gate |
| Google Sheets | the JSON file of a service account; share the sheet with that account's address, and nothing else. No Google sign-in window for now | desktop, web, gate |
| Notion | the token of an internal integration; invite the integration to the one database to read | desktop, web, gate |
| CSV or JSON published | an https address, and if needed an optional key | desktop, web, gate; read only |
PostgreSQL and MySQL: the desktop app or a gate
These two connectors open a direct connection to the database. Their drivers ship with the desktop app: nothing to install. A browser cannot open such connections: on the web, they are not offered to run in the app, and their card says "Not from the web". Run the sync from the desktop app, or hand it to a gate, which also reaches a database on your local network.
What each one can do
- D1, PostgreSQL, MySQL, Supabase write "only if the value has not changed": a value changed in the source during the run is never overwritten.
- Airtable, Google Sheets, Notion read again just before writing: a window of less than a second remains.
- Google Sheets is read in full at each run (no change marker).
- Notion: its API version is pinned by the connector; deleting a row moves the page to Notion's trash. A Notion relation column, or Airtable linked records, cannot be imported yet.
- CSV or JSON: read only (Once, Incoming mirror).
- D1, PostgreSQL, MySQL also accept a read-only SQL query (a single
SELECTstatement), for an import or an incoming mirror.
TLS for PostgreSQL and MySQL
- verified (default): encrypted, certificate checked against the host name;
- encrypted, certificate not checked: encrypted, but a machine in the middle could pose as the server;
- off (local network only): only allowed for a private address or a name ending in
.lan,.local,.internal,.home.arpa.
Learn more
- The connector reference on the gate's side: github.com/filarr-work/filarr-gate.