Locksmith is a backend service that provides some services in the context of Unlock. None of these services are required to use the core-protocol. Among these services, locksmith provides the following:
- NFT metadata hosting
- membership metadata hosting
- Unlock accounts
The locksmith application has several entry points. By default it provides an API server, but could also be run for our worker
worker. For the latter, prefix all commands with worker:
(for example: yarn run worker:dev
)
Locksmith uses postgres under the hood.
To start, you can spin up a local instance of postgres using docker by running docker run --name locksmith-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -d postgres
or go with a traditional install or hosting provider.
Configure environment variables (Locksmith will recognize these placed in
an .env.dev.local
file at the root of the monorepo)
If you used the docker command above, add:
DATABASE_URL=postgresql://postgres:[email protected]:5432/postgres
(you may need to replace the IP)
Alternatively, you could set these variables:
DB_USERNAME
- Database UserDB_PASSWORD
- Password of UserDB_NAME
- Database NameDB_HOSTNAME
- Database Host
Locksmith uses S3 to store various files. To configure this, you will need to set the following environment variables:
STORAGE_ENDPOINT
- The endpoint for your S3 storage.STORAGE_ACCESS_KEY_ID
- The access key for your S3 storage.STORAGE_SECRET_ACCESS_KEY
- The secret access key for your S3 storage.STORAGE_PUBLIC_HOST
- The host which is used to access the S3 storage. This is used to generate URLs for the files stored in S3. This will be a subdomain on your locksmith host such asstorage.host.com
We use cloudflare r2 for our storage, but any S3 compatible storage should work.
Once the database has been configured (per above), make sure to migrate by calling yarn run db:migrate
and then call yarn run test:run
.
For running in production, use yarn start
otherwise yarn dev
which will restart the server on file changes. This requires using 1password locally and having access to the Unlock Labs vault.
You can start a worker with yarn worker:start
.
You can also run scripts with yarn run runner ./src/scripts/script.ts
(check the sample file for an example).
This product uses GeoLite2 data created by MaxMind, available from https://www.maxmind.com.