This guide installs:
- Node.js (LTS, 22.x)
- MongoDB Community Edition (8.0)
- A new Payload app
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg build-essentialsudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | \
sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install -y nodejs
node -v
npm -vAs of this writing, MongoDB's Debian install doc targets Debian 12 ("bookworm"). On Debian 13, many users run MongoDB 8.0 using the bookworm repo below.
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl enable --now mongod
sudo systemctl status mongod --no-pagerTest MongoDB:
mongosh --eval 'db.runCommand({ ping: 1 })'If mongodb-org does not install cleanly on your Debian 13 machine, use Docker:
sudo apt-get install -y docker.io
sudo systemctl enable --now docker
sudo docker run -d \
--name mongodb \
-p 27017:27017 \
-v mongo-data:/data/db \
mongo:8Mongo URL:
mongodb://127.0.0.1:27017/payload-app
npx create-payload-app@latest -n payload-app -t blank --use-npm
cd payload-appWhen prompted for a database, choose MongoDB.
Create .env:
cat > .env << 'EOF'
DATABASE_URI=mongodb://127.0.0.1:27017/payload-app
PAYLOAD_SECRET=replace-with-a-long-random-string
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
EOFTip: generate a secret quickly:
openssl rand -base64 32Start the app:
npm run devThen open:
- App:
http://localhost:3000 - Admin:
http://localhost:3000/admin
Install adapter:
npm install @payloadcms/db-mongodbIn your Payload config, use:
import { mongooseAdapter } from '@payloadcms/db-mongodb'
db: mongooseAdapter({
url: process.env.DATABASE_URI || '',
})