
Deploy OpenSEO
Pay-as-you-go Semrush and Ahrefs alternative with MCP
OpenSEO
Just deployed
/app/.wrangler
Gateway
Just deployed
Deploy and Host self hosted OpenSEO (Open-Source SEO Tool) on Railway
This template deploys OpenSEO v0.1.13 behind a password gateway, with the app itself off the public internet and data on a Railway volume. Bring your own DataForSEO key and pay per request. For indie SEOs done with pricey suites but still needing rank tracking, backlinks, and AI visibility.
About Hosting OpenSEO open-source software on Railway (self hosted OpenSEO template)
This template runs OpenSEO v0.1.13 behind a password-protected Caddy gateway. Your keyword research, rank tracking, backlinks, and site audit data stay on your Railway volume, not in a vendor's cloud. You bring a DataForSEO API key and pay only for the lookups you make.
Why Deploy OpenSEO, the Semrush and Ahrefs alternative on Railway (Railway Free Trial)
Semrush locks you into a monthly subscription even when you only check a few keywords. Railway's $5 trial is enough to test the workflow before you commit.
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying OpenSEO on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Railway vs Other Hosting Providers and VPS for OpenSEO self hosting
This template pairs OpenSEO with a password-protected Caddy gateway and a persistent volume, so you can compare it directly against raw VPS options.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | Gateway, volume, private network, one-click deploy | Droplet with Docker, you add auth proxy and volume |
| AWS | Managed platform, built-in secrets, no IAM sprawl | ECS or EC2, config and networking on you |
| Hetzner | Simple UI, free trial, no server setup | Cheap dedicated or cloud server, manual everything |
For OpenSEO's private app plus gateway pattern, Railway removes the proxy and storage work most VPS guides leave to you.
Common Use Cases for hosted OpenSEO
- Agency rank tracking: Run weekly keyword position checks for a dozen client sites without a per-seat subscription. The built-in scheduler checks for due tracking jobs every five minutes, and you pay DataForSEO only for the lookups you actually request.
- Competitor backlink snapshots: Pull backlink profiles for a handful of competitors before a content refresh, then leave the app idle for weeks. No monthly fee makes sporadic research cheap.
- Private MCP research for AI agents: Give Claude Code or Codex read access to keyword and competitor data over the MCP endpoint. Agents can pull SERP context during content drafts without leaving your private gateway.
- AI visibility checks: Track how often your brand appears in AI answers. The scheduler logs mentions over time, so you can spot drops after algorithm shifts.
- Client-shareable reports: Generate a report for a stakeholder and share the URL through the gateway. The app stays off the public internet, so only people with the basic auth password can view it.
Dependencies for OpenSEO Docker hosted on Railway
OpenSEO runs as two Railway services: the app itself and a Caddy gateway that keeps it off the public internet. You only bring a DataForSEO account; storage and auth come from the template.
Deployment Dependencies for Managed OpenSEO Service (SEO Research Tool)
OpenSEO uses ghcr.io/every-app/open-seo:v0.1.13, port 3001, health check /api/health, and a Railway volume at /app/.wrangler for the D1/SQLite database, KV, R2, and agent state. DATAFORSEO_API_KEY can be empty at deploy. Gateway runs caddy:2.11.7-alpine on public port 8080.
Implementation Details for OpenSEO (Using the official OpenSEO v0.1.13 image)
The OpenSEO image has no start command; it builds the app at boot, taking one to two minutes. Caddy asks for basic auth with OPENSEO_USERNAME and generated OPENSEO_PASSWORD, and its config comes from CADDYFILE_B64. It proxies to OPENSEO_UPSTREAM, the private OpenSEO domain and port, leaving /healthz and /api/health open.
How does OpenSEO compare against other SEO tools
OpenSEO vs Semrush (Semrush Alternative)
- Data source: OpenSEO pays DataForSEO per request, while Semrush bundles its own data into a monthly plan.
- Feature breadth: Semrush wins on PPC, social and content extras. OpenSEO covers keywords, ranks, backlinks and audits.
- Agent access: OpenSEO exposes an MCP endpoint for Claude Code and similar tools. Semrush is built around its own web UI and API.
OpenSEO vs Ahrefs (Ahrefs Alternative)
- License and hosting: OpenSEO is MIT licensed and runs on your own Railway volume. Ahrefs is closed SaaS.
- Index size: Ahrefs has a larger backlink and keyword index. OpenSEO depends on DataForSEO for those datasets.
- Pricing model: OpenSEO costs only Railway usage plus per-request DataForSEO charges. Ahrefs expects a recurring subscription.
OpenSEO vs SE Ranking (SE Ranking Alternative)
- Deployment: OpenSEO runs behind a password-protected gateway in your project. SE Ranking is SaaS only.
- Polish: SE Ranking feels more polished for client reports. OpenSEO is early-stage and still rough in places.
- Automation: OpenSEO's MCP server lets AI agents run lookups directly. SE Ranking is driven from its own UI and API.
OpenSEO vs Google Search Console (Google Search Console Alternative)
- Data type: Search Console gives real impressions and clicks for your own verified sites, free. OpenSEO adds competitor research and backlinks.
- Accuracy: Search Console wins on actual Google query and position data. OpenSEO estimates rankings through third-party requests.
- Setup: OpenSEO only needs a DataForSEO key after deploy. Search Console requires site ownership verification.
How to use OpenSEO (the OSS SEO tool)?
- Wait ~2 minutes for the boot build, then copy OPENSEO_PASSWORD from the Gateway Variables tab and sign in as admin.
- Create a DataForSEO account, then set DATAFORSEO_API_KEY on OpenSEO to base64 of login:API password (e.g., printf 'you@example.com:API_PASSWORD' | base64). Not the dashboard key.
- Hit your-domain/api/health and confirm dataforseo status reads ok. The endpoint is open, so you can check without logging in.
- Run a keyword lookup or site audit from the left nav. The built-in scheduler checks for due rank-tracking and AI visibility jobs every 5 minutes.
- Optional: add your-domain/mcp to Claude Code or Codex with the same admin credentials to let an agent dig through reports.
How to self host OpenSEO on other VPS Services (OpenSEO self hosting guide)
Clone the Repository
Clone the repo with git clone https://github.com/every-app/open-seo, cd into it, then copy the example environment file with cp .env.example .env.
Install Dependencies
OpenSEO runs in Docker, so you only need Docker and Docker Compose. No local Node setup is required. The container builds the app at first boot, which takes about two minutes before it serves requests.
Configure Environment Variables
Edit .env and set DATAFORSEO_API_KEY to the base64 of your DataForSEO login and API password. Also set ALLOWED_HOST to your-domain. Docker mode disables app auth, so protect the app with your own reverse proxy or private network.
Start the OpenSEO Application
Run docker compose up -d and open port 3001. Expose it only through an auth-protected gateway or Cloudflare tunnel.
Official Pricing of OpenSEO (OpenSEO pricing)
OpenSEO is MIT-licensed and free to self host, including the Railway template. There is no subscription or seat fee. The hosted version at openseo.so is $10/month and adds 28% to every DataForSEO request; self hosting skips that markup.
OpenSEO cloud vs self hosted comparison (Pricing, features, costs, and more)
Self hosting OpenSEO on Railway costs about $5-15/mo for the two services at light use, plus your DataForSEO spend. The core workflows are the same, but self hosting means you own the gateway, the key, and the MCP endpoint.
Monthly cost of self hosting OpenSEO on Railway
Expect roughly $5-15/mo on Railway for OpenSEO and the password gateway at light traffic, before DataForSEO. DataForSEO is pay-as-you-go with a $1 free credit and a $50 minimum top-up.
System Requirements for Hosting OpenSEO on a VPS
The OpenSEO container builds at boot with Node 22 and workerd, peaking around 4 GB of memory during that first build, then idling near 0.7 GB. The Caddy gateway uses only a few MB. A volume holds all D1, KV, R2, and agent state.
Frequently Asked Questions (FAQs)
Do I need a DataForSEO account?
Yes, OpenSEO does not ship its own keyword database. You bring a DataForSEO key and pay DataForSEO directly per request, so you only spend when a lookup actually runs.
What does a keyword lookup cost?
It depends on the endpoint DataForSEO charges, but new accounts get one dollar of free credit. After that, the minimum top-up is fifty dollars, and self hosting means no subscription markup on top.
How do I log in?
Open the public gateway URL and enter the username and password from the Gateway service variables. The default username is admin and the password is the generated OPENSEO_PASSWORD value.
Can Claude Code use it?
Yes. Point the agent at the MCP endpoint with basic auth, for example claude mcp add with the http transport and your admin credentials. Claude Code, Codex, ChatGPT, OpenClaw, and Hermes all work.
Where is my data stored?
Everything lives on the Railway volume attached to the OpenSEO service. The SQLite database, KV store, R2 objects, and agent state stay inside your project, and the app is not on the public internet.
Template Content
Gateway
caddy:2.11.7-alpine