Firebase Auth Migration
Supabase provides several tools to help migrate auth users from a Firebase project to a Supabase project. There are two parts to the migration process:
firestoreusers2json
(TypeScript, JavaScript) exports users from an existing Firebase project to a.json
file on your local system.import_users
(TypeScript, JavaScript) imports users from a saved.json
file into your Supabase project (inserting those users into theauth.users
table of yourPostgreSQL
database instance).
Set up the migration tool #
- Clone the firebase-to-supabase repository:
1git clone https://github.com/supabase-community/firebase-to-supabase.git
- In the
/auth
directory, create a file namedsupabase-service.json
with the following contents:
{
"host": "database.server.com",
"password": "secretpassword",
"user": "postgres",
"database": "postgres",
"port": 5432
}
- Go to the Database settings for your project in the Supabase Dashboard.
- Under Connection Info, copy the Host string and replace the entry in your
supabase-service.json
file. - Enter the password you used when you created your Supabase project in the
password
entry in thesupabase-service.json
file.
Generate a Firebase private key #
- Log in to your Firebase Console and open your project.
- Click the gear icon next to Project Overview in the sidebar and select Project Settings.
- Click Service Accounts and select Firebase Admin SDK.
- Click Generate new private key.
- Rename the downloaded file to
firebase-service.json
.
Save your Firebase password hash parameters #
- Log in to your Firebase Console and open your project.
- Select Authentication (Build section) in the sidebar.
- Select Users in the top menu.
- At the top right of the users list, open the menu (3 dots) and click Password hash parameters.
- Copy and save the parameters for
base64_signer_key
,base64_salt_separator
,rounds
, andmem_cost
.
1hash_config { 2 algorithm: SCRYPT, 3 base64_signer_key: XXXX/XXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==, 4 base64_salt_separator: Aa==, 5 rounds: 8, 6 mem_cost: 14, 7}
Command line options#
Dump Firestore users to a JSON file #
node firestoreusers2json.js [<filename.json>] [<batch_size>]
filename.json
: (optional) output filename (defaults to./users.json
)batchSize
: (optional) number of users to fetch in each batch (defaults to 100)
Import JSON users file to Supabase Auth (PostgreSQL: auth.users) #
node import_users.js <path_to_json_file> [<batch_size>]
path_to_json_file
: full local path and filename of .json input file (of users)batch_size
: (optional) number of users to process in a batch (defaults to 100)
Notes#
For more advanced migrations, including the use of a middleware server component for verifying a user's existing Firebase password and updating that password in your Supabase project the first time a user logs in, see the firebase-to-supabase repo.