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.
- Create a Firestore Enterprise Database: Create a Firestore Enterprise database using the Firebase CLI.
- Create
firebase.json: This file contains database configuration for the Firebase CLI. - Create
firestore.rules: This file contains your security rules. - 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).