LIVEReading: Run AFFiNE Locally: Your Private Notion + Miro AlternativeTotal time: 8 minSteps: 6Worked first time: 72% LIVEReading: Run AFFiNE Locally: Your Private Notion + Miro AlternativeTotal time: 8 minSteps: 6Worked first time: 72%
CBW
Run AFFiNE Locally: Your Private Notion + Miro Alternative
Mediumgithub.com/toeverything/affine2026-06-17

Run AFFiNE Locally: Your Private Notion + Miro Alternative

AFFiNE is an open-source workspace that combines docs, whiteboards, and databases in one app. This guide gets the hosted cloud version running in minutes — no coding required.

// Build stats

  • Total time8 min
  • Number of steps6
  • DifficultyMedium
  • Worked first time72%
// Before you start

What you need

  • A modern web browser (Chrome or Edge recommended)
  • Optional: Docker Desktop installed if you want full self-hosting
  • Optional: 4 GB RAM free for the Docker route
  • A free AFFiNE account (sign up at affine.pro)
01
Step 1 of 6

Try AFFiNE instantly via the live cloud app

2 min

AFFiNE offers a fully hosted version at affine.pro. No install needed. Open the link, create a free account, and you have a working workspace immediately. This is the fastest path and the one most non-developers should start with. Your data is stored on AFFiNE's servers unless you self-host.

Terminal · mac
$ Open your browser and go to: https://app.affine.pro
What you should see
A sign-up / sign-in page loads. After creating an account you land on your personal workspace dashboard.
This might happen

Page does not load or shows a maintenance banner

Check https://affine.pro for status updates or try again in a few minutes.

02
Step 2 of 6

Install Docker Desktop (self-host route only)

5 min

If you want your data stored entirely on your own machine, you need Docker — software that runs AFFiNE in an isolated container. Skip this step if you are happy with the cloud version. Download Docker Desktop from the official site, run the installer, and start the app. You will see a whale icon in your taskbar when it is ready.

Terminal · mac
$ https://www.docker.com/products/docker-desktop — download and install for your OS, then launch Docker Desktop.
What you should see
Docker Desktop opens and shows 'Docker Desktop is running' or a green status indicator.
This might happen

Docker says 'WSL 2 installation is incomplete' on Windows

Follow the link Docker shows you to install the WSL 2 kernel update, then restart Docker Desktop.

03
Step 3 of 6

Pull and start AFFiNE with Docker Compose

5 min

Open a terminal (Terminal on Mac/Linux, PowerShell on Windows). The commands below download the official AFFiNE server image and start it. Docker Compose handles all the moving parts — the app server and its database — automatically. You only need to run these once.

Terminal · mac
$ mkdir affine-self-host && cd affine-self-host
$ curl -o docker-compose.yml https://raw.githubusercontent.com/toeverything/affine/canary/.github/deployment/self-host/docker-compose.yml
$ docker compose up -d
What you should see
Docker downloads several layers, then prints lines ending with 'Started'. The process returns you to a prompt.
This might happen

'docker compose' is not recognised as a command

Try 'docker-compose up -d' (with a hyphen). Older Docker versions use the hyphenated form.

04
Step 4 of 6

Open your self-hosted AFFiNE in the browser

1 min

Once the containers are running, AFFiNE is available on your computer at a local address. Open your browser and go to the address below. The first time it loads may take 20-30 seconds while the server finishes starting up.

Terminal · mac
$ Open your browser and go to: http://localhost:3010
What you should see
The AFFiNE welcome screen appears. You are prompted to create an admin account.
This might happen

Browser shows 'This site can't be reached'

Wait 30 more seconds and refresh. If it still fails, run 'docker compose logs' in your terminal to see error messages.

05
Step 5 of 6

Create your first workspace and page

3 min

Whether you used the cloud or self-hosted route, the interface is the same. Click 'New Workspace', give it a name, then click the '+' button in the left sidebar to create your first page. You can switch between document view (like Notion) and edgeless canvas view (like Miro) using the toggle at the top right of any page.

Terminal · mac
$ No command needed — use the AFFiNE interface in your browser.
What you should see
A blank page opens. You can type, add headings, insert images, or switch to the whiteboard canvas.
06
Step 6 of 6

Stop and restart the self-hosted server when needed

1 min

When you are done for the day, you can stop AFFiNE to free up memory. Navigate back to the folder you created in Step 3 and run the stop command. To start it again later, run the up command again. Your data is saved in a Docker volume and will still be there.

Terminal · mac
$ cd affine-self-host
$ docker compose down
What you should see
Docker prints 'Stopped' and 'Removed' lines for each container. AFFiNE is no longer accessible until you run 'docker compose up -d' again.
This might happen

You accidentally run 'docker compose down -v' and lose data

The '-v' flag deletes volumes (your data). Never add '-v' unless you want a full reset. Regular 'docker compose down' is safe.

// Status

cooked. baked. worked.

A fully working AFFiNE workspace where you can write documents, draw on an infinite whiteboard, manage tasks in kanban or table views, and link everything together — either privately on your own machine or via the free cloud account.

// the honest bit

The honest part

The cloud version at affine.pro is the easiest path but stores your data on AFFiNE's servers. The self-hosted Docker route keeps data local but requires Docker Desktop and a terminal — two things that can trip up first-timers. AFFiNE AI features (writing assistant, mind-map generation) require a paid plan on the cloud version and are not available in the basic self-hosted setup. The self-hosted image tracks the 'canary' (beta) channel, so occasional bugs are expected. For a production self-host with custom domains and HTTPS, you will need additional configuration that goes beyond this guide.