Pricing Docs Blog Apps Tools Support Start Free
Productivity

Install AFFiNE in 60 Seconds

AFFiNE is the open-source workspace that folds docs, whiteboards, and databases into one canvas, so it can replace Notion, Miro, and Monday at once. The catch is that self-hosting it means wiring up Postgres, Redis, and a reverse proxy by hand. We do all of that for you and hand you a live URL.

Install AFFiNE $15/mo - $10 credit when you add a card

The usual way to self-host AFFiNE

  1. Spin up a VPS, install Node, and then realize AFFiNE will not even boot until you also stand up a PostgreSQL database and a Redis instance for it to talk to.
  2. Pull the image and run something like `docker run -p 3010:3010 -e DATABASE_URL=... -e REDIS_SERVER_HOST=... -v ./storage:/root/.affine/storage ghcr.io/toeverything/affine:stable`, then chase down every env var the self-host predeploy script demands.
  3. Run `node ./scripts/self-host-predeploy.js` to migrate the Postgres schema before first launch, and re-run it correctly on every version bump or the app silently fails to start.
  4. Put Nginx or Caddy in front of port 3010, issue and auto-renew a Let's Encrypt cert, and add WebSocket upgrade headers or the real-time collaborative editing just hangs.
  5. Babysit backups of both the Postgres database and the blob storage volume, because AFFiNE keeps your doc structure in Postgres and your uploads on disk - lose either and the workspace is corrupt.

That is a full afternoon of database wiring and proxy config before you have written a single note. We turn it into one command.

Or install it in one click

$ instapods pods create my-affine --app affine
-> Provisioning server...
-> Provisioning PostgreSQL + Redis...
-> Installing AFFiNE...
-> Running self-host migration...
✓ Live at https://my-affine.instapods.app

What you get

Recommended plan for AFFiNE

Grow Plan
$15/mo
  • 2 vCPU
  • 4 GB RAM
  • 50 GB storage
  • HTTPS included
  • Custom domain support
  • SSH & web terminal access
Install AFFiNE

AFFiNE requirements

Needs the Grow plan

AFFiNE is heavier than a single-binary tool: it runs a Node server, its own PostgreSQL database, and Redis side by side, and the editor itself is memory-hungry once you load whiteboards with images. That is why it starts on the Grow plan rather than the cheaper tiers - the smaller plans do not give the database and the app enough headroom to stay responsive.

Config is handled for you

Self-hosting AFFiNE normally means hand-editing its env file (at /opt/affine/.env on the server) with a DATABASE_URL, Redis host, and a server origin. There are no API keys or secrets you have to supply up front - we generate the database connection, point AFFiNE at it, set the public URL to your pod domain, and run the predeploy migration so the workspace is ready on first load. Create your admin account in the browser the moment it boots.

Your data persists, with a custom domain option

Your docs and database tables live in PostgreSQL and your uploaded files live on the pod's disk, both on a persistent volume that survives restarts and updates - we never wipe storage on a redeploy. AFFiNE serves on port 3010 internally; we map that to HTTPS automatically. Point your own domain (docs.yourteam.com) at the pod whenever you are ready.

AFFiNE install FAQ

Do I need to set up a database to self-host AFFiNE?

Normally yes - AFFiNE will not start without a PostgreSQL database and a Redis instance, and you have to run its self-host migration script against Postgres before first launch. On InstaPods you do not touch any of that. We provision Postgres and Redis alongside the app, wire the connection strings into AFFiNE's env file, and run the migration for you. You just open the URL and create your admin account.

Can AFFiNE really replace Notion, Miro, and Monday?

It covers the overlap well. AFFiNE puts block-based docs (the Notion part), an infinite whiteboard canvas (the Miro part), and database/table views (the Monday part) in a single workspace, and you can switch any page between doc mode and edgeless whiteboard mode. It is not a feature-for-feature clone of all three, but for a small team that wants notes, planning boards, and visual brainstorming in one self-hosted place, it consolidates what would otherwise be three separate subscriptions.

Is my data safe when AFFiNE updates?

Yes. Your documents and database tables live in PostgreSQL and your uploaded files live on the pod's persistent disk. When a new AFFiNE version ships we pull the new server files and re-run the schema migration, but your storage volume and database are never wiped. Your workspace comes back exactly as you left it. We still recommend keeping your own export for anything mission-critical.

What does collaborative editing need to work?

AFFiNE's real-time collaboration runs over WebSockets, and a common self-hosting trap is a reverse proxy that drops the WebSocket upgrade, which makes live editing silently hang. Our proxy is configured with the right upgrade headers out of the box, so multiple people editing the same doc or whiteboard just works over your HTTPS pod URL with no extra config.

Why does AFFiNE need the Grow plan instead of a cheaper one?

Because it is genuinely a multi-service app. You are running a Node server, a PostgreSQL database, and Redis on the same pod, and the editor gets memory-hungry once whiteboards fill up with images and embeds. The Grow plan gives all three pieces enough CPU and RAM to stay snappy. The lighter plans are fine for single-binary tools, but they would leave AFFiNE and its database starved.

Install AFFiNE in 60 seconds

One click. Real server. HTTPS included. No Docker, no nginx, no DevOps degree required.

Install AFFiNE