OpenSEO Deployment Options: Hosted SaaS, Docker, and Cloudflare Self-Hosting Compared

OpenSEO offers three deployment options—a managed SaaS at openseo.so, a simple Docker container for local testing, and a Cloudflare Workers self-hosted setup—each sharing the same core src/server codebase but differing in runtime environment and authentication layer.

The open-source SEO toolkit from Every App can be deployed to match your operational requirements, from zero-maintenance cloud hosting to fully controlled infrastructure. All deployment paths include the same MCP (Micro-Command-Processor) API that AI agents use to interact with the platform.

Hosted SaaS: Zero-Maintenance Cloud Deployment

The Hosted SaaS option runs on Every App's managed Cloudflare Workers and D1 infrastructure. You access the service at https://openseo.so without provisioning any infrastructure.

This option includes:

  • Managed backend services (MCP, database, authentication)
  • Automatic scaling and secret storage
  • Cloudflare Access for team authentication
  • Subscription pricing at approximately $10/month

Choose this when you need immediate availability without infrastructure overhead. The hosted version is documented in the README at README.md lines 13-18.

Docker Self-Hosting: Quick Local Deployment

The Docker deployment packages the entire OpenSEO stack into a single container. This is the fastest path to running the codebase yourself.

How Docker Deployment Works

The container runs a Node.js process using:

  • AUTH_MODE=local_noauth — authentication disabled by default
  • Local SQLite file for persistence
  • DataForSEO API key from a .env file

Docker Setup Steps


# Create .env with your DataForSEO key

echo "DATAFORSEO_API_KEY=your_key_here" > .env

# Build and run the container

docker run -p 3000:3000 \
  -v "$(pwd)/.env:/app/.env" \
  everyapp/open-seo:latest

Place the container behind a reverse proxy, tunnel, or private network for external access. The complete Docker guide is at docs/SELF_HOSTING_DOCKER.md.

This option suits personal testing, development environments, and existing Docker workflows.

Cloudflare Self-Hosting: Production-Grade Deployment

The Cloudflare Self-Host option is the recommended path for production deployments. It delivers SaaS-like reliability while maintaining full environmental control.

Cloudflare Architecture

This deployment provisions:

  • Cloudflare Workers — serverless compute runtime
  • D1 — SQLite-based managed database
  • KV — key-value storage for caching
  • Cloudflare Access — identity-aware proxy for authentication

The pnpm deploy:selfhost command handles one-command provisioning of all resources.

Cloudflare Deployment Steps


# Install dependencies

pnpm install

# Add your DataForSEO key to .env.selfhost

echo "DATAFORSEO_API_KEY=your_key_here" > .env.selfhost

# Deploy to Cloudflare (provisions Workers, Access, and secrets)

pnpm deploy:selfhost

The Cloudflare deployment runs on the free tier and provides automatic backups, multi-device access, and the same security posture as the hosted SaaS. See docs/SELF_HOSTING_CLOUDFLARE.md for the complete workflow.

Architecture Comparison

All three OpenSEO deployment options share identical business logic in src/server/** — the MCP API, auth middleware, and database adapters remain unchanged. Runtime differences are isolated to environment configuration:

Deployment Runtime Authentication Persistence Best For
Hosted SaaS Cloudflare Workers + D1 Cloudflare Access (managed) D1 managed database Zero-maintenance production use
Docker Node.js container local_noauth (none) Local SQLite file Local development, testing
Cloudflare Self-Host Cloudflare Workers + D1 Cloudflare Access (self-configured) D1 with backups Production self-hosting, team collaboration

Because the code is framework-agnostic, you can migrate between runtimes without modifying application logic.

Critical Configuration Files

File Purpose
README.md (lines 44-52) Deployment decision matrix and option overview
docs/SELF_HOSTING_DOCKER.md Docker environment variables and setup steps
docs/SELF_HOSTING_CLOUDFLARE.md pnpm deploy:selfhost workflow and secret handling
docs/DATAFORSEO_API_KEY.md API key placement for both self-hosted paths
src/server/** Core implementation shared across all deployments

The DATAFORSEO_API_KEY is required for all deployments—hosted and self-hosted alike—since OpenSEO proxies SEO data requests through this external service.

Using the Hosted SaaS API

When using the managed service, authenticate with an MCP API key:

import { createClient } from '@open-seo/mcp';

const client = createClient({
  baseUrl: 'https://api.openseo.so',
  apiKey: process.env.OPENSEO_MCP_KEY,
});

await client.project.create({ name: 'My Site' });

Self-hosted deployments use the same client library with your own base URL.

Summary

  • Hosted SaaS (openseo.so) provides managed Cloudflare infrastructure with no setup for ~$10/month
  • Docker enables single-container local deployment with local_noauth and SQLite persistence
  • Cloudflare Self-Host delivers production-grade, free-tier deployment via pnpm deploy:selfhost
  • All options share the src/server codebase and MCP API; only runtime environment and authentication differ
  • DataForSEO API key configuration is required regardless of deployment path

Frequently Asked Questions

Which OpenSEO deployment option is best for production?

The Cloudflare Self-Host deployment is recommended for production. It runs on Cloudflare's free tier with automatic D1 backups, Cloudflare Access authentication, and the same reliability as the hosted SaaS—while keeping you in control of your environment.

Can I run OpenSEO without authentication?

Yes, but only with the Docker deployment. Set AUTH_MODE=local_noauth in your environment to disable authentication entirely. The hosted SaaS and Cloudflare self-hosted options both require Cloudflare Access for security.

Is the DataForSEO API key required for all OpenSEO deployments?

Yes. Every deployment path—hosted SaaS, Docker, and Cloudflare self-host—requires a valid DATAFORSEO_API_KEY because OpenSEO proxies SEO data requests through this external service. See docs/DATAFORSEO_API_KEY.md for placement instructions specific to your deployment method.

Can I switch between OpenSEO deployment options later?

Yes. Since all deployments use the same core src/server codebase, you can migrate from Docker to Cloudflare self-host or to the hosted SaaS without changing business logic. Only environment-specific configuration (secrets, auth mode, base URLs) needs adjustment.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →