Based on our investigation, I've identified two separate issues that need to be addressed:
The error "permission denied for schema public" indicates that your 'admin' user doesn't have sufficient permissions to create tables in the public schema of the 'ceramic' database.
-
Grant the necessary permissions to the 'admin' user:
-- Connect to PostgreSQL as superuser (usually 'postgres') psql -U postgres -- Connect to the ceramic database \c ceramic -- Grant usage on schema GRANT USAGE ON SCHEMA public TO admin; -- Grant create on schema GRANT CREATE ON SCHEMA public TO admin; -- Grant all privileges on all tables GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin; -- Make privileges apply to future tables ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO admin; -- Make admin the owner of the database (optional but recommended) ALTER DATABASE ceramic OWNER TO admin;
The application is trying to connect to https://localhost:7007/ but your Ceramic node is configured to run on http://127.0.0.1:7007 (note the protocol and hostname differences).
-
Update the Ceramic node URL in orbisdb-settings.json:
Change this line in orbisdb-settings.json:
"node": "https://localhost:7007/"
To:
"node": "http://127.0.0.1:7007/"
This change addresses two issues:
- Changes from HTTPS to HTTP (your Ceramic node is using HTTP)
- Changes from localhost to 127.0.0.1 (for consistency with your Ceramic configuration)
-
Fix PostgreSQL permissions using the SQL commands above
-
Update the Ceramic node URL in orbisdb-settings.json:
{ "configuration": { "admins": [ "did:pkh:eip155:1:0xab16eb371d25001f19da5da238d5e3c01bb198da" ], "ceramic": { "node": "http://127.0.0.1:7007/", "seed": "[142,127,169,4,157,165,54,187,122,132,30,238,26,221,181,145,0,196,178,34,159,28,144,137,139,210,3,54,208,212,124,151]" }, "db": { "user": "admin", "database": "ceramic", "password": "admin", "host": "127.0.0.1", "port": 5432 } }, "models_mapping": { "kh4q0ozorrgaq2mezktnrmdwleo1d": "models_indexed" } } -
Ensure the Ceramic node is running:
- Check if the Ceramic daemon is running with:
ps aux | grep ceramic - If not running, start it with:
cd server/ceramic-mcp && npx @ceramicnetwork/cli daemon
- Check if the Ceramic daemon is running with:
-
Restart your application:
NODE_ENV=production node index.js
flowchart TD
A[Start] --> B1[Fix PostgreSQL Permissions]
A --> B2[Fix Ceramic Connection]
B1 --> C1[Connect as PostgreSQL superuser]
C1 --> D1[Grant schema permissions to admin user]
D1 --> E1[Set default privileges]
B2 --> C2[Update orbisdb-settings.json]
C2 --> D2[Change https to http]
D2 --> E2[Change localhost to 127.0.0.1]
E1 --> F[Ensure Ceramic node is running]
E2 --> F
F --> G[Restart application]
G --> H{Issues resolved?}
H -->|Yes| I[Done]
H -->|No| J[Additional troubleshooting]
By addressing both the PostgreSQL permissions and the Ceramic connection issues, your application should be able to create tables and connect to the Ceramic node successfully.