
Should I self-host Squarespace?
WordPress + a good theme does the Squarespace job for $25/mo less, and it's the most documented software on earth. Keep auto-updates on and the plugin count low — the maintenance minutes assume discipline.
The math (nothing hidden, including your time)
| Squarespace (Basic) | $25.00/mo |
| VPS share + storage | −$1.50/mo |
| Your maintenance: 30 min/mo at $20/h | −$10.00/mo |
| Net saving | $13.50/mo |
| Setup: 60 min measured (one-time) | $20.00 |
| Break-even | 1.5 months |
| Markup Index (price ÷ real self-host cost) | 2.2× |
Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Squarespace's design taste as a default — WordPress makes ugly possible again
- Not thinking about PHP security advisories, ever
What you're paying Squarespace for
- marketing site / blog
- templates & theming
- forms
- SEO basics
- commerce (via plugins)

Ranked alternatives
The CMS most of the web already runs, on a box you rent, with the themes, plugins and media library intact.
The same publishing platform Ghost(Pro) hosts, on your own box, with the editor, the themes and the members list intact.
Hardware
Runs comfortably on a real VPS (2 GB+).
The tested compose file (our evidence, CI-booted)
# WordPress — the site builder that runs half the web (replaces Squarespace).
# Keep auto-updates on and the plugin count low; the maintenance minutes in the verdict
# math assume you do.
services:
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
depends_on:
wordpress-db:
condition: service_healthy
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
ports:
- "8086:80"
volumes:
- wp-data:/var/www/html
healthcheck:
test: ["CMD-SHELL", "curl -sfL http://localhost/wp-admin/install.php >/dev/null || exit 1"]
interval: 5s
timeout: 10s
retries: 36
start_period: 30s
wordpress-db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_USER: wordpress
MARIADB_PASSWORD: wordpress
MARIADB_DATABASE: wordpress
MARIADB_ROOT_PASSWORD: root-changeme # throwaway test value
volumes:
- wp-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 24
start_period: 20s
volumes:
wp-data:
wp-db:
Want a guided install instead? caniselfhostit.com/squarespace has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
Verification
Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 60 min · AI assistant: claude-code (allowed & stated)
What broke
- Nothing at boot — WordPress's risks arrive later, one plugin at a time
Full timed log
# Timed setup log: Squarespace → wordpress **Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10 **Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 / Compose v5.1 ## Timeline | Step | Time | |---|---| | Read upstream docs, draft compose with healthcheck | ~20 min | | **Boot: all services healthy in 50 s (measured, `compose up --wait`)** | — | | Endpoint-level workflow check (login/health/API serve) + re-run from clean volumes | ~20 min | | **Total: ~60 min** | | Boot and endpoint checks are machine-verified; `setup_min` is the wall-clock total for this session including authoring, diagnosis and re-runs. Endpoint-level ≠ full human UI workflow — dispute anything that doesn't reproduce (CONTRIBUTING.md). ## What broke - Nothing at boot — WordPress's risks arrive later, one plugin at a time ## Verdict-relevant notes - MariaDB's healthcheck.sh script makes the DB gate clean.
Verdict history
- 2026-08-10: unscored → YES — Initial verdict: WordPress + a good theme does the Squarespace job for $25/mo less, and it's the most documented software on earth. Keep auto-updates on and the plugin count low.
