DEV Community

Apoorv Darshan
Apoorv Darshan

Posted on

Deploy your own crossposter to a VPS or Render and keep the scheduler alive

Local-first doesn't mean stuck on your laptop. Because Crossposter is just a Node/Next.js process with file-based state, you can self-host it anywhere and reach it from a browser.

The one thing that actually matters for scheduling: the scheduler only fires while the server process is running. So the deployment question is really "how do I keep the process up?"

Three paths I use and document:

  • Local Mac: a macOS auto-start service keeps http://localhost:2004 alive after login.
  • Small VPS: run the Node service under your usual process manager, with a persistent disk so poster.config.local.json, uploads, and sessions survive restarts.
  • Render: same idea, a long-running Node service with persistent disk.

The persistent-disk point is the gotcha. Since there's no database, your config, scheduled queue, media, and login sessions all live on disk. Ephemeral filesystems will wipe your sessions and you'll be re-logging into X/Instagram. Mount a disk and you're fine.

If the server is offline when a scheduled post is due, it publishes the next time the process starts and the tick runs. No cloud worker compensates for downtime, by design.

It's the self-hosted alternative to a Buffer/Hootsuite-style stack, minus the stack.

This post published through Crossposter.

https://crossposter.apoorvdarshan.com/

Top comments (0)