Skip to content

Self-host AppFlowy

updated Oct 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

A Notion-style workspace for docs, wikis, kanban boards and databases, with desktop and mobile clients built on Flutter and Rust. The clients are AGPL-3.0, but the self-hosted sync server (AppFlowy Cloud) is now a commercial, closed-source distribution with a free tier limited to one user seat and three guest editors; the open-source AppFlowy-Cloud repository is archived.

Key facts

CategoryNotes
LicenseAGPL-3.0 (client apps) + AppFlowy Self-Hosted Commercial License (server; free tier)
StackFlutter, Rust, PostgreSQL
Min RAM2048 MB
Official imageyes
Measured idle RAM483 MB
Difficulty
Our recommendation

Pick AppFlowy when you want a Notion-style workspace with fast native desktop and mobile clients and are happy to run a server for a single person. Read the licence before planning anything bigger: the self-hosted server is now AppFlowy's commercial distribution, free for one user seat, and the open-source server repository is archived. For a team on a fully open stack, AFFiNE or a wiki such as BookStack is the safer self-hosting bet.

What you need

  • Any VPS with at least 2048 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • About the better part of a day
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# AppFlowy Self-Hosted (commercial server, free tier) — official repo + .env template, image tags pinned to the 0.19.5 release set
# the server refuses to start on a non-loopback http:// URL, so this needs a domain pointing at the server, with ports 80 and 443 open
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d appflowy.example.com -m you@example.com --agree-tos -n
git clone https://github.com/AppFlowy-IO/AppFlowy-SelfHost-Commercial.git && cd AppFlowy-SelfHost-Commercial
git checkout 136f92396b551f10c144994d96cba45d9adfbae8
# nginx serves the Let's Encrypt certificate in place of the bundled development one (renew with certbot and re-copy)
sudo cp /etc/letsencrypt/live/appflowy.example.com/fullchain.pem docker/nginx/ssl/certificate.crt
sudo cp /etc/letsencrypt/live/appflowy.example.com/privkey.pem docker/nginx/ssl/private_key.key
cp deploy.env .env
# replace the template's example credentials (admin login is admin@example.com) and set the public address
sed -i "s|^FQDN=.*|FQDN=appflowy.example.com|; s|^SCHEME=.*|SCHEME=https|; s|^WS_SCHEME=.*|WS_SCHEME=wss|; s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$(openssl rand -hex 16)|; s|^GOTRUE_ADMIN_PASSWORD=.*|GOTRUE_ADMIN_PASSWORD=$(openssl rand -hex 16)|; s|^GOTRUE_JWT_SECRET=.*|GOTRUE_JWT_SECRET=$(openssl rand -hex 32)|; s|^AWS_SECRET=.*|AWS_SECRET=$(openssl rand -hex 16)|" .env
# the compose file floats its images on :latest; pin them to the published release tags
printf 'APPFLOWY_CLOUD_VERSION=0.19.5\nAPPFLOWY_WORKER_VERSION=0.19.5\nAPPFLOWY_SEARCH_VERSION=0.19.5\nAPPFLOWY_ADMIN_FRONTEND_VERSION=0.19.0\nAPPFLOWY_WEB_VERSION=0.19.10\nAPPFLOWY_AI_VERSION=0.17.7\nGOTRUE_VERSION=0.18.11\n' >> .env
grep ^GOTRUE_ADMIN_PASSWORD .env
docker compose up -d  #  →  https://appflowy.example.com  (sign in as admin@example.com with the password printed above; admin console at /console)
# nginx publishes 80 and 443 on all interfaces; Postgres, Redis and MinIO are not published

What you take on

AppFlowy's open-source story has changed, and that changes what "self-hosted" means here:

non-negotiableThe server is not open source any more. The AppFlowy-Cloud repository is archived and unmaintained; current self-hosting uses AppFlowy's commercial Docker Compose distribution under its own licence agreement, with a free tier of one user seat plus up to three guest editors. More seats need a paid plan. The Flutter client remains AGPL-3.0.
non-negotiableThe server refuses to start on a non-loopback http:// address (APPFLOWY_BASE_URL must use HTTPS outside loopback development), so a real install needs a domain, a TLS certificate and ports 80 and 443 open — a bare IP address over HTTP does not work.
non-negotiableThe template's .env ships example credentials: the admin account is admin@example.com, and the database, JWT and MinIO secrets are placeholders. The install here generates fresh ones; if you skip that, anyone who knows the template can sign in.
non-negotiableThe upstream compose file floats its images on latest. The install here pins the published release tags and a repository commit; upgrading is a deliberate bump of those, with a backup first.
non-negotiableNothing in our install check exercised real-time sync from a desktop or mobile client, email (SMTP is unconfigured) or the AI features, which need your own provider keys.

An alternative to

Head-to-head

More in Notes

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.