/ is that account’s page.
If you would rather not run a server, posy.page hosts the same app. Pages move both
ways with Settings, Download page.json and Import page.json.
Docker
http://localhost:3000 for both URLs while trying it out. Open the URL and sign up.
Docker Compose
Editdocker-compose.yml: set the two URLs and a long random BETTER_AUTH_SECRET
(openssl rand -base64 32), then:
Vercel (Turso + Blob)
Vercel has no persistent disk, so use a hosted database and file store.- Create a database at turso.tech. Note its URL (
libsql://...) and create an auth token. - Press the Deploy button in the README, or import the repo in Vercel.
- In the project, add a Blob store (Storage tab, Blob). That creates
BLOB_READ_WRITE_TOKEN. - Set the environment variables below:
DATABASE_URL,DATABASE_AUTH_TOKEN,BETTER_AUTH_SECRET,NEXT_PUBLIC_SITE_URLandBETTER_AUTH_URL(both your final URL, for examplehttps://links.example.com). - Deploy, open the URL and sign up. Migrations run on start.
Any Node host
NEXT_PUBLIC_SITE_URL before npm run build, since it is baked into the build.
Environment
Posy checks its environment when the server starts. In production it refuses to boot, and tells you what to fix, if a required variable is missing, ifBETTER_AUTH_SECRET is shorter than 32 characters, the built-in development
secret or the placeholder from docker-compose.yml (change-me-to-a-long-random-string), or if the two URLs
disagree. In development everything has a default. .env.example has every variable with comments.
Your own domain
There is nothing to enable in Posy. Point your domain’s DNS at your server (or at Vercel, after adding the domain to the project), make sure it serves HTTPS, and setNEXT_PUBLIC_SITE_URL and BETTER_AUTH_URL
to that address. Your page is the home page of the domain.
On a plain server, put a reverse proxy in front for HTTPS. With Caddy that is two lines:
Backups
Everything lives in the data directory (/data in Docker): posy.db and your uploads. Copy that
folder and you have a backup.
npm run posy -- export page.json).