Prerequisites
Before deploying Serverless CMS, ensure your development environment has all required software and accounts configured.
On This Page
Required Software
Node.js 22.x LTS
Node.js is required for building the Admin Tool React application and packaging Lambda functions.
Installation
macOS (using Homebrew):
brew install node@22
Linux (using nvm):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 22
nvm use 22
Windows:
Download the installer from nodejs.org and run it.
Verification
node --version
# Should output: v22.x.x
npm --version
# Should output: 10.x.x or higher
Maven 3.9+
Maven orchestrates the build process and invokes the Serverless Maven Plugin for deployment.
Installation
macOS (using Homebrew):
brew install maven
Linux (Ubuntu/Debian):
sudo apt update
sudo apt install maven
Windows:
- Download Maven from maven.apache.org
- Extract to
C:\Program Files\Apache\maven - Add
C:\Program Files\Apache\maven\binto your PATH
Verification
mvn --version
# Should output: Apache Maven 3.9.x or higher
AWS CLI 2.x
The AWS Command Line Interface is required for configuring credentials and verifying deployments.
Installation
macOS:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Linux:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Windows:
Download and run the MSI installer from aws.amazon.com/cli
Verification
aws --version
# Should output: aws-cli/2.x.x or higher
Git (Optional but Recommended)
Git is recommended for version control of your CMS configuration and custom components.
Installation
macOS:
brew install git
Linux:
sudo apt install git
Windows:
Download from git-scm.com
AWS Account Requirements
Active AWS Account
You need an AWS account with:
- Billing enabled - Credit card on file for pay-as-you-go services
- Administrator access - Ability to create IAM users and policies
- Service limits - Default limits are sufficient for most deployments
If you don't have an AWS account, create one at aws.amazon.com.
Required AWS Services
The deployment uses the following AWS services (all available in eu-west-2):
| Service | Purpose | Free Tier |
|---|---|---|
| S3 | Static hosting, storage | 5 GB storage, 20k GET requests/month |
| DynamoDB | Content database | 25 GB storage, 25 RCU/WCU |
| Lambda | Backend functions | 1M requests, 400k GB-seconds/month |
| API Gateway | REST APIs | 1M requests/month (12 months) |
| Cognito | User authentication | 50,000 MAUs |
| CloudFront | CDN distribution | 1 TB data transfer out/month (12 months) |
| Route 53 | DNS management | No free tier ($0.50/hosted zone) |
| ACM | SSL/TLS certificates | Free for public certificates |
Billing Alerts
Set up billing alerts to monitor costs:
- Go to AWS Console → Billing Dashboard
- Click Budgets in the left sidebar
- Click Create budget
- Select Cost budget
- Set monthly budget (e.g., $50)
- Configure email alerts at 80% and 100% thresholds
Domain Name Requirements
Registered Domain
You need a registered domain name for the CMS. The domain can be:
- Registered with Route 53 (simplest option)
- Registered with another registrar but using Route 53 for DNS
- A subdomain of an existing domain
Domain Structure
The CMS uses subdomains of your root domain:
| Subdomain | Purpose | Example |
|---|---|---|
admin.{rootDomain} |
Admin Tool interface | admin.example.com |
cms-api.{rootDomain} |
CMS API endpoints | cms-api.example.com |
api.{rootDomain} |
Public API endpoints | api.example.com |
{siteName}.{rootDomain} |
Published websites | blog.example.com |
SSL/TLS Certificates
The deployment automatically provisions SSL/TLS certificates via AWS Certificate Manager (ACM) for all subdomains. This requires:
- Route 53 hosted zone for your domain
- Ability to create DNS validation records (automatic with Route 53)
- Certificates are free when using ACM
Installation Verification
Verify All Prerequisites
Run these commands to verify your environment is ready:
# Check Node.js
node --version
npm --version
# Check Maven
mvn --version
# Check AWS CLI
aws --version
# Check Git (optional)
git --version
# Verify AWS credentials (after AWS setup)
aws sts get-caller-identity
Expected Output
You should see version numbers for all tools:
$ node --version
v22.11.0
$ npm --version
10.9.0
$ mvn --version
Apache Maven 3.9.6
$ aws --version
aws-cli/2.15.0