Many hours later, I figured it out. I needed to delete the MySQL database altogether and let ghost start a new one; I’m guessing it was corrupt. Thankfully I had a backup of the blog prior to deleting and simply reimported the JSON to get my posts/users back.
Here’s the steps to delete the DB (make sure you have a backup first!)
- mysql -u root -p (assuming you set up the root user on install; it’ll prompt you for the password)
- drop database ghost_prod;
- \q (get out of mysql)
After that, “ghost start” worked beautifully. I initially received a 502 Bad Gateway error, but that went away with time (guessing nginx was still loading?)
“Unexpected end of JSON input” is not the most helpful error in retrospect. Something pointing to the database would’ve lead me much quicker to the above solution.
Hope this helps others! I tried nearly everything else (including reinstalling Ghost from scratch).