Deploy AppFlowy Cloud | (Just Updated) Notion Alternative Whose Admin Login Actually Works
Notion alternative whose admin login works and public signup is closed
appflowy
Just deployed
/data
postgres
Just deployed
/var/lib/postgresql
redis
Just deployed
/data
Deploy and Host AppFlowy Cloud on Railway
AppFlowy is the open-source Notion alternative: documents, wikis, databases, kanban boards, AI chat and real-time collaboration, synced across the web app and the AppFlowy desktop and mobile clients. This template runs the full self-hosted AppFlowy Cloud backend — API, realtime websocket, background worker, GoTrue authentication, object storage and the web client — with a working admin account already created for you.
About Hosting AppFlowy Cloud
Upstream ships AppFlowy Cloud as nine containers: nginx, appflowy_cloud,
appflowy_worker, appflowy_web, GoTrue, MinIO, an admin frontend, Postgres and
Redis. Railway bills per service, so this template folds everything that needs
neither its own disk nor its own database engine into one supervised container
behind a single nginx gateway — three billed services instead of eight. Postgres
(pgvector) and Redis keep their own volumes; the object store lives on the app
service's volume.
The deploy is claimed before it is reachable. The container refuses to boot without an
admin password, seeds the account before any process binds a port, and re-applies that
password on every boot, so a redeploy is a working password reset. Public sign-up is
closed by default — set APPFLOWY_ALLOW_SIGNUP=true if you want an open instance —
and no SMTP account is required anywhere: the deploy form has zero blank required
fields.
Two things a stock AppFlowy deployment gets wrong are fixed here. AppFlowy Cloud
refuses to create a user record, and therefore a workspace, for a GoTrue system
admin — which is exactly what GOTRUE_ADMIN_EMAIL produces — so on a stock deploy
signing in with the advertised admin credentials returns
{"code":1024,"message":"User not found"} and never recovers. This template seeds an
internal service account for AppFlowy's own admin API calls and gives you a normal
account that owns a real workspace. And APPFLOWY_S3_PRESIGNED_URL_ENDPOINT is derived
from your public domain, so presigned upload and download URLs point at an address a
browser can actually reach rather than at the internal object store.
Every upstream image is pinned, the healthcheck proxies AppFlowy Cloud's own
/api/health (a green deploy means a working API, not just a running nginx), and
sign-in is rate-limited per client address, keyed on the first X-Forwarded-For entry
because Railway's edge hop rotates per request.
Why Deploy AppFlowy Cloud on Railway?
Railway gives AppFlowy Cloud the pieces it needs — Postgres with pgvector, Redis, persistent volumes, TLS and a public domain — without any of them being a separate signup. Scaling memory or CPU is a slider, the database and object store are backed up by the volume, and the whole stack redeploys from one template. Self-hosting means your documents stay in your own Postgres instead of a vendor's, at a predictable monthly cost.
Common Use Cases
- A private Notion replacement for a team or family, with the AppFlowy desktop and mobile apps syncing to your own server.
- A company wiki or knowledge base whose data must stay on infrastructure you control.
- Project and task tracking with kanban boards, databases and shared documents.
Dependencies for AppFlowy Cloud
- Postgres with the
pgvectorextension (included). - Redis (included).
- A persistent volume for the object store (included).
Deployment Dependencies
- AppFlowy Cloud — the self-hosted backend.
- AppFlowy clients — point the desktop or mobile app at your deployment's URL.
- Wrapper image source.
Implementation Details
After deploying, open the service's APPFLOWY_ADMIN_EMAIL and
APPFLOWY_ADMIN_PASSWORD variables and sign in at your public URL with those
credentials. Changing APPFLOWY_ADMIN_PASSWORD and redeploying resets the password.
To invite other people, either turn on APPFLOWY_ALLOW_SIGNUP or invite them from
inside the workspace after configuring GOTRUE_SMTP_HOST and friends.
Template Content
postgres
pgvector/pgvector:pg16POSTGRES_DB
redis
redis:8.2.1-alpine