How to Manage 10 Client Websites from One CMS (Without Losing Your Mind)

Stop juggling multiple CMS installations. Learn how agencies and freelancers manage 10+ client websites from a single headless CMS dashboard. Real workflow examples included.

R
Raşit Apalak
8 min read

The agency workflow that saves hours every week

You just landed your tenth client. Great news for revenue. Terrible news for your infrastructure.

Now you're maintaining 10 separate CMS installations. 10 servers to update. 10 databases to backup. 10 admin panels to remember passwords for. And when a security patch drops? You get to repeat the update process 10 times.

There's a better way.


Table of Contents


The Multi-Installation Problem

Let's do the math on managing 10 clients with traditional CMS setups:

With separate Strapi installations:

  • 10 VPS instances at $10-20/month each = $100-200/month
  • 10 database servers (or shared instances)
  • 10 deployment pipelines to maintain
  • 10 sets of credentials to manage
  • Update time: 10 × 30 minutes = 5 hours per major update

Annual infrastructure cost: $1,200 - $2,400+

And that's just the financial cost. The mental overhead of context-switching between 10 different installations, remembering which client has which configuration, and troubleshooting issues across different server environments is exhausting.


What Multi-Project CMS Actually Means

A multi-project CMS runs on a single installation but isolates each client's data completely. Think of it like a well-designed apartment building: one building, many units, but your neighbor can't walk into your living room.

How it works:

  1. One installation - You maintain a single CMS instance
  2. Isolated projects - Each client gets their own project with separate collections, API keys, and users
  3. Shared resources - The underlying infrastructure is shared, reducing costs
  4. Independent access - Clients can have their own login without seeing other projects

The result:

  • One server to maintain
  • One database to backup
  • One update process
  • 10 completely isolated client projects

Real Workflow: Managing 10 Clients

Here's how a typical day looks when you're managing multiple clients from a single CMS:

Morning: Quick Status Check

Log into your CMS once. From your dashboard, you can see all 10 projects. Check if any clients have reached out about content issues. All in one place.

Content Updates

Client A needs a new blog post section. Client B wants to update their team page. Client C needs a product added.

Instead of:

  1. Open browser tab for Client A's CMS
  2. Remember Client A's password
  3. Wait for it to load
  4. Make changes
  5. Repeat 10 times...

You:

  1. Click "Client A" in your project switcher
  2. Add the blog collection
  3. Click "Client B" in the same dashboard
  4. Update the team entry
  5. Click "Client C" in the same dashboard
  6. Add the product

Time saved: 20+ minutes just on login and context-switching.

API Key Management

A developer on Client D's frontend team needs API access. Instead of logging into a separate installation, you:

  1. Switch to Client D's project
  2. Generate a read-only API key
  3. Send it over

The key only works for Client D's content. No risk of cross-project access.

Security Update Day

A critical PHP or framework update is released.

Old way: Block out 3-4 hours. Update 10 servers. Test 10 installations. Handle 2-3 unexpected issues across different environments.

Multi-project way: Update once. Test once. Done in 30 minutes.


Cost Comparison: Multi-Project vs Separate Installations

Let's compare real costs for managing 10 client websites:

Option 1: Separate Strapi Installations

ItemMonthly Cost
10 VPS instances (2GB RAM each)$100-200
Database hosting$0-50
Backup storage$10-20
Monitoring/alerts$20-50
Total$130-320/month

Annual: $1,560 - $3,840

Plus your time for maintenance across 10 servers.

Option 2: Strapi Cloud

ItemMonthly Cost
10 projects × $18/month$180
Total$180/month

Annual: $2,160

Managed, but adds up quickly with each new client.

Option 3: ElmapiCMS Multi-Project

ItemCost
ElmapiCMS license$149 (one-time)
1 VPS (4GB RAM)$20-40/month
Database$0-10/month
Backup storage$5/month
Monthly$25-55/month

Annual: $300-660 (plus one-time $149)

Year 1 savings vs separate installations: $900 - $3,000+

The math gets even better with more clients. Your 11th client costs $0 in additional CMS fees. Your 20th client costs $0. Your 50th client costs $0.


Setting Up Your Multi-Client CMS

Here's how to set up ElmapiCMS for multi-client management:

Step 1: Initial Installation

# Clone ElmapiCMS
cd ~/projects
git clone your-elmapicms-repo Elmapi3

# Install dependencies
cd Elmapi3
composer install
cp .env.example .env
php artisan key:generate

# Start with Docker
php artisan sail:install
./vendor/bin/sail up -d

# Run migrations
./vendor/bin/sail artisan migrate --seed

Step 2: Create Your First Client Project

  1. Log in to http://localhost:8000
  2. Click "Create Project"
  3. Name it after your client (e.g., "Acme Corp Website")
  4. The project is now isolated and ready for configuration

Step 3: Configure Client-Specific Collections

Each client project can have completely different content structures:

Client A (Restaurant):

  • Menu Items
  • Locations
  • Events
  • Reviews

Client B (Law Firm):

  • Practice Areas
  • Team Members
  • Case Studies
  • Blog Posts

Client C (E-commerce):

  • Products
  • Categories
  • FAQs
  • Promotions

All managed from one dashboard, but completely isolated in the API.

Step 4: Generate Client API Keys

For each client's frontend:

// Client A's Next.js site
import { createClient } from '@elmapicms/js-sdk';

const client = createClient(
  process.env.ELMAPI_URL!,
  process.env.ELMAPI_KEY_CLIENT_A!,
  'client-a-project-id'
);

// This only returns Client A's menu items
const menuItems = await client.getEntries('menu-items');

Each API key is scoped to one project. A key for Client A cannot access Client B's data.


Best Practices for Client Organization

1. Naming Conventions

Use consistent project names:

  • acme-corp-website
  • acme-corp-blog
  • lawfirm-jones-main

Avoid generic names like "client1" or "project-new".

2. Template Collections

Create reusable collection templates for common structures:

Blog Template:

  • Title (text, required)
  • Slug (text, unique)
  • Content (rich text)
  • Featured Image (media)
  • Published Date (date)
  • Author (relation to Team)
  • Categories (relation to Categories)

Save this as a template and apply it to new blog collections in seconds.

3. Role-Based Access

Set up user roles per project:

  • Admin: Full access to all collections and settings
  • Editor: Can create/edit content, but not delete or change settings
  • Contributor: Can create drafts, but needs approval for publishing

Give clients Editor or Contributor access so they can manage content without breaking configurations.

4. Separate Production and Staging

Create two projects per client:

  • acme-corp-production
  • acme-corp-staging

Point the staging frontend to the staging project for content testing before going live.

5. Documentation Per Client

Keep notes in each project's settings:

  • Frontend repository URL
  • Deployment pipeline location
  • Primary contact at client
  • Any custom configurations

Common Concerns Addressed

"What if one client's traffic spikes affect others?"

For most content API use cases, this isn't an issue. Headless CMS APIs serve JSON payloads efficiently. A spike in one client's traffic rarely impacts others unless you're serving thousands of requests per second.

For high-traffic clients, you can always implement caching at the frontend level (ISR in Next.js, for example) to reduce API load.

"What about data isolation? Is it truly secure?"

Yes. Each project has:

  • Separate API keys (no cross-project access)
  • Separate user permissions (Client A's users can't see Client B)
  • Separate database tables/schemas for content

It's architectural isolation, not just UI separation.

"What if I need to migrate a client to their own installation?"

You can export any project's data and import it into a standalone installation. The content structure and media files are portable.

"Does this scale to 50+ clients?"

Yes. The limiting factor is server resources, not the software. A well-configured server with 8GB RAM can comfortably handle 50+ projects with moderate traffic each.

For very large agencies, consider:

  • Multiple servers with load balancing
  • Dedicated database servers
  • CDN for media assets

Conclusion

Managing multiple clients doesn't have to mean managing multiple headaches. A multi-project CMS architecture consolidates your infrastructure, reduces costs, and gives you back hours every week.

Key takeaways:

  1. One installation = one update process - Security patches take minutes, not hours
  2. Isolated projects = secure clients - Each client's data is separate and protected
  3. Shared infrastructure = lower costs - Pay for one server, serve 10+ clients
  4. Unified dashboard = better workflow - Switch between clients in one click

If you're an agency or freelancer juggling multiple websites, this approach pays for itself quickly. The $149 you spend on ElmapiCMS saves $1,000+ annually compared to running separate installations.

Ready to simplify your client management? Try ElmapiCMS or grab the full version and start consolidating your client projects today.


Related Posts:

Share this post:

Related posts