Self-host AFFiNE

Install the self-host version of AFFiNE

Deploy with Sealos


1 / Docker

We provide a quick way to start Docker, so you need to install Docker first. For installation instructions on different versions of Docker, you can try visiting the Docker installation documentation.

You must have docker as well as docker composeinstalled and available on your machine.

2 / Git clone the latest AFFiNE repo

git clone --branch stable

You can also download just the compose.yaml file directly from the AFFiNE repository at this path: ./.github/deployment/self-host/compose.yaml.

Quick start

All your need for self-host version of AFFiNE:

AFFINE_ADMIN_EMAIL=[email protected] AFFINE_ADMIN_PASSWORD="affine" docker compose -f ./.github/deployment/self-host/compose.yaml up

As you can see:

  • AFFINE_ADMIN_EMAIL: the default email for you login your self-host cloud.
  • AFFINE_ADMIN_PASSWORD: the default password for you login your self-host cloud.
  • ./.github/deployment/self-host/compose.yaml : is the path to the compose file within the AFFiNE repository. Should you opt to download only the compose.yml, make sure to adjust the file path accordingly to match the location of your downloaded file.
  • In your compose.yaml , you can choose your target deploy version with image: , it is suggested to deploy the stable version, but beta and canary are also available.

Tips: To make your AFFiNE run on a domain/ip other than localhost, please set AFFINE_SERVER_HOST and AFFINE_SERVER_PORT, refer to Run AFFiNE with Custom Options

Sign in and Sync with self-host AFFiNE

After your Docker has started, you will see the following message:


To access your AFFiNE on the web, open Chrome and enter the URL: http://localhost:3010. To ensure data security, sign in to your self-hosted AFFiNE Cloud account by following these steps:

  1. Open the workspace list view, and click Sign up / Sign in Button.


  1. Type the default email ( the AFFINE_ADMIN_EMAIL value, if you just copy the command, it should be [email protected]), and click the Continue with Email button
  1. type the password ( AFFINE_ADMIN_PASSWORD ‘s value ), and click the Sign in button


  1. Switch to the Cloud sync Workspace


Data Persistance

When everything is up and running, you should be able to see three instance related to AFFiNE:

  • Postgre
  • Redis
  • AFFiNE self-host As you can see, the selfhost version of AFFiNE contains everything it takes to self-host the AFFiNE Cloud. Keep in mind that, you must login to your self-hosted AFFiNE Cloud to store your data into the database. Otherwise, your data in the default local-workspace will be stored as cache in the browser and is risky of losing. Make sure that you have turned them into cloud workspaces to enable syncing to postgre.

Connect AFFiNE Client to selfhost AFFiNE Cloud isn’t avaiable yet. You can use the web version while we are working on it.

More custom options

For more information about configuring custom domains, email servers, databases, etc. please refer to Run AFFiNE with Custom Options.


Setting up your databases

By default, a redis as well as postgre instance will be download and composed ready out of the box. If you prefer to use your own redis or postgre instance, you can make sure AFFiNE is properly pointed by the section given below:

  - DATABASE_URL=postgres://affine:affine@postgres:5432/affine

Redis and Postgre is used for your database. Your data will be kept in the path given in the volumnsection within the YAML file. Please keep these directory safe to provent from losing your data.

  # custom configurations
  - ~/.affine/self-host/config:/root/.affine/config
  # blob storage
  - ~/.affine/self-host/storage:/root/.affine/storage

Upgrade Your Self-Hosted AFFiNE

Upgrading your self-hosted Affine system is a straightforward process that can be accomplished in a few steps. Follow this guide to ensure a smooth and error-free upgrade process.

Before starting, back up yourcompose.yamlfile and all important data to prevent any loss in case the upgrade encounters issues.

Download the Newcompose.yamlFile

Download the latest compose.yaml file from here, replacing the existing file on your server.

Important Note: If you have previously modified configurations in thecompose.yamlfile, remember to migrate those changes to the new file. This may include, but is not limited to, environment variables, port numbers, volume configurations, etc.

Pull the New Docker Image

Execute the following command to pull the new Docker image:

docker compose -f compose.yaml pull

This step will download the latest version of the AFFiNE image based on the updatedcompose.yamlfile.

Restart the Service

use the following command to stop the currently running service (if any) and start the service with the new version:

docker compose -f compose.yaml up

This command stops all related containers based on thecompose.yamlfile configuration and restarts them with the latest version.

Upgrade Complete

You have successfully upgraded your self-hosted Affine system.


Want more self-hosting options? You can contribute code to the AFFiNE repository.