Files
2026-04-23 23:58:59 -05:00

2.8 KiB

Provisioning Firestore Enterprise Native Mode

Manual Initialization

Initialize the following firebase configuration files manually. Do not use npx -y firebase-tools@latest init, as it expects interactive inputs.

  1. Create a Firestore Enterprise Database: Create a Firestore Enterprise database using the Firebase CLI.
  2. Create firebase.json: This file contains database configuration for the Firebase CLI.
  3. Create firestore.rules: This file contains your security rules.
  4. Create firestore.indexes.json: This file contains your index definitions.

1. Create a Firestore Enterprise Database

Use the following command to create a Firestore Enterprise database:

firebase firestore:databases:create my-database-id \
  --location="nam5" \
  --edition="enterprise" \
  --firestore-data-access="ENABLED" \
  --mongodb-compatible-data-access="DISABLED"

This will create an enterprise database in nam5 with native mode enabled. A database id is required to create an enterprise database and the database id must not be (default). To enable realtime-updates feature, use --realtime-updates flag.

firebase firestore:databases:create my-database-id \
  --location="nam5" \
  --edition="enterprise" \
  --firestore-data-access="ENABLED" \
  --mongodb-compatible-data-access="DISABLED" \
  --realtime-updates="ENABLED"

2. Create firebase.json

Create a file named firebase.json in your project root with the following content. If this file already exists, instead append to the existing JSON:

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json",
    "edition": "enterprise",
    "database": "my-database-id",
    "location": "nam5"
  }
}

2. Create firestore.rules

Create a file named firestore.rules. A good starting point (locking down the database) is:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

See security_rules.md for how to write actual rules.

3. Create firestore.indexes.json

Create a file named firestore.indexes.json with an empty configuration to start:

{
  "indexes": [],
  "fieldOverrides": []
}

See indexes.md for how to configure indexes.

Deploy rules and indexes

# To deploy all rules and indexes
firebase deploy --only firestore

# To deploy just rules
firebase deploy --only firestore:rules

# To deploy just indexes
firebase deploy --only firestore:indexes

Local Emulation

To run Firestore locally for development and testing:

firebase emulators:start --only firestore

This starts the Firestore emulator, typically on port 8080. You can interact with it using the Emulator UI (usually at http://localhost:4000/firestore).