playsonmac
playsonmac
Explore posts from servers
DTDrizzle Team
Created by playsonmac on 11/7/2024 in #help
Supabase SSL - ENAMETOOLONG when adding sslrootcert to dbCredentials url
I'm trying to connect to my supabase with ssl-enabled using drizzle-kit but I keep on getting ENAMETOOLONG. I'm encoding the certificate into the connection url, but it seems like I'm reaching the limits of path length. My code is literally the same as was posted by budivoogt: https://github.com/orgs/supabase/discussions/18710#discussioncomment-10614735 "I got this working with Drizzle as follows:"
drizzle.config.ts:

import { defineConfig } from 'drizzle-kit'
import * as fs from 'fs'

const caString = fs.readFileSync('./.supabase/certificates/prod-ca-2021.crt').toString()
// URL encode the certificate
const caStringEncoded = encodeURIComponent(caString)

// Construct the database URL with SSL parameters
const dbUrl = new URL(process.env.DEV_DATABASE_URL as string)
dbUrl.searchParams.append('sslmode', 'require')
dbUrl.searchParams.append('sslrootcert', caStringEncoded)

export default defineConfig({
schema: './src/lib/database/schema.ts',
out: './.drizzle/migrations',
dialect: 'postgresql',
dbCredentials: {
url: dbUrl.toString()
}
})
drizzle.config.ts:

import { defineConfig } from 'drizzle-kit'
import * as fs from 'fs'

const caString = fs.readFileSync('./.supabase/certificates/prod-ca-2021.crt').toString()
// URL encode the certificate
const caStringEncoded = encodeURIComponent(caString)

// Construct the database URL with SSL parameters
const dbUrl = new URL(process.env.DEV_DATABASE_URL as string)
dbUrl.searchParams.append('sslmode', 'require')
dbUrl.searchParams.append('sslrootcert', caStringEncoded)

export default defineConfig({
schema: './src/lib/database/schema.ts',
out: './.drizzle/migrations',
dialect: 'postgresql',
dbCredentials: {
url: dbUrl.toString()
}
})
src/lib/database/db.ts:

import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
import * as fs from 'fs'

const client = postgres(process.env.DEV_DATABASE_URL as string, {
ssl: {
rejectUnauthorized: true,
// Apply SSL certificate
ca: fs.readFileSync('./.supabase/certificates/prod-ca-2021.crt').toString()
}
})
export const db = drizzle(client)
src/lib/database/db.ts:

import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
import * as fs from 'fs'

const client = postgres(process.env.DEV_DATABASE_URL as string, {
ssl: {
rejectUnauthorized: true,
// Apply SSL certificate
ca: fs.readFileSync('./.supabase/certificates/prod-ca-2021.crt').toString()
}
})
export const db = drizzle(client)
Ideally, I'd like to be able to have the certificate as an env (yeah, tired that, still the same length issue) so that a cloudflare worker which doesn't have acccess to the fs can connect. Any ideas on how to go around this?
1 replies
CDCloudflare Developers
Created by playsonmac on 11/1/2024 in #pages-help
Nextjs multi-zone deployment?
Do pages support nextjs' multi-zone routing? If so, is there an article or a repo showcasing how one can host both an app (and a blog for example) on the same domain using cf pages and two different instances of nextjs?
1 replies