0

I have the following code for Payload CMS that tries to connect to DocumentDB using TLS and a certificate:

import express from 'express'
import nodemailerSendgrid from 'nodemailer-sendgrid'
import payload from 'payload'

import 'dotenv/config'

// eslint-disable-next-line
require('dotenv').config()

const app = express()

// Redirect root to Admin panel
app.get('/', (_, res) => {
  res.redirect('/admin')
})

const sendGridAPIKey = process.env.SENDGRID_API_KEY

const sendgridConfig = {
  transportOptions: nodemailerSendgrid({
    apiKey: sendGridAPIKey,
  }),
}

const start = async (): Promise<void> => {
  const sslCertPath = `${process.env.RDS_CA_LOCATION}`
  // Initialize Payload
  await payload.init({
    secret: process.env.PAYLOAD_SECRET,
    mongoURL: `mongodb://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${
      process.env.MONGODB_HOST
    }:${process.env.MONGODB_PORT}?retryWrites=true&w=majority&tls=${
      process.env.MONGODB_USE_SSL ? 'true' : 'false'
    }`,
    express: app,
    email: {
      fromName: 'Payload CMS',
      fromAddress: 'info@payloadcms.org',
      ...sendgridConfig,
    },
    mongoOptions:
      process.env.MONGODB_USE_SSL === 'true'
        ? {
            tls: true,
            tlsCAFile: sslCertPath,
          }
        : {},
    onInit: () => {
      payload.logger.info(`Payload Admin URL: ${payload.getAdminURL()}`)
    },
  })

  // Add your own express routes here

  app.listen(process.env.PORT, async () => {
    payload.logger.info(`Server listening on port ${process.env.PORT}`)
  })
}

start()

What is the right way to connect mongodb using TLS CA in Payload CMS?

Any advise is much appreciated.

khinester
  • 3,398
  • 9
  • 45
  • 88
  • DocumentDB doesn't support retryWrites, you may want to set retryWrites=false explicitly. Regarding SSL, I see that PayloadCMS documentation says that mongoOptions can be extended to include all the options available to mongoose. See if this helps: https://mongoosejs.com/docs/tutorials/ssl.html – Mihai A Apr 03 '23 at 16:15

0 Answers0