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.
Squarespace's design taste as a default — WordPress makes ugly possible again
Not thinking about PHP security advisories, ever
marketing site / blog · templates & theming · forms · SEO basics · commerce (via plugins)
* Percent of the subscription price. Your time is priced at the slider's rate — $0/h ("my homelab time is free and I love it") is a legitimate position. Every number is derived from the record, never hand-written. Price source, checked 2026-08-06.
Runs comfortably on a real VPS (2 GB+).



Nothing at boot — WordPress's risks arrive later, one plugin at a time
# 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.
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.