Skip to content
Go back

AppFlowy vs Notion: Self-Host Your Notes

By KingPin 12 min read
AppFlowy vs Notion: Self-Host Your Notes
Contents

Your notes live in someone else’s database. AppFlowy wants to change that. Mostly.

You already know the pitch. Notion is great until the day it isn’t: a price hike, an outage during a client meeting, or just the slow dread of knowing every task, journal entry, and half-finished project plan sits on servers you don’t control. AppFlowy shows up in every “self-hosted Notion alternative” list with an open-source badge and a promise that you can run the whole thing on your own box.

I looked at it closely: the license files, the Docker Compose stack, the env file, and the pricing tables. The short version: AppFlowy the app is open source and good. The server you self-host moved to a proprietary license, and most of those list posts haven’t noticed. That licensing change matters more than which markdown editor renders faster.

If you’re one person who wants your notes on your own box and you’re fine working in a browser tab, AppFlowy self-hosted is free and usable. If you want the desktop app, the phone app, or a second person on your server, read the pricing section before you sink a weekend into migrating, because “free” stops being accurate at the first app install or the second seat, and “open source” no longer describes the server at any tier.

What AppFlowy actually is

AppFlowy ships two separate things, and conflating them is where most comparison posts go wrong.

The client (AppFlowy-IO/AppFlowy) is a Flutter and Rust desktop and mobile app, licensed AGPL-3.0. As of this writing the latest tagged release is v0.14.5, published September 22, 2026. It runs on macOS, Windows, and Linux (also distributed through Flathub, Snapcraft, and Sourceforge), plus iOS through the App Store and Android 10 and above through the Play Store (ARMv7 devices are not supported). This part is unambiguously open source, and you can build it from source if you want to audit every line.

The server is where the story changes. For years, self-hosters pointed their AppFlowy client at AppFlowy-IO/AppFlowy-Cloud, an AGPL-3.0 licensed backend you could run entirely for free with no seat limits. That repo is now archived. Its README redirects you to a new repository, AppFlowy-IO/AppFlowy-SelfHost-Commercial, with a blunt warning: don’t build the server from the old repo, the actively maintained images live elsewhere now.

The new repo’s own description says it plainly: “The commercial fork is distributed solely under AppFlowy self-hosted commercial license.” The license file is SELF_HOST_LICENSE_AGREEMENT.md, a proprietary agreement from AppFlowy Pte. Ltd. AppFlowy itself describes the model as “open-core”: the client stays open source, the server is “a closed-source fork of this legacy open source codebase combined with proprietary features,” per their own self-hosted pricing docs (checked September 2026). That’s a legitimate business model. It’s also not what “self-hosted, no strings attached” usually means to someone reading a blog post, so I’m flagging it up front instead of three thousand words in.

The seat limit nobody puts in the headline

This detail changes how you plan a deployment. AppFlowy’s official self-hosted pricing table (appflowy.com/docs/Self-hosted-Plans-and-Pricing, checked September 2026) lists four tiers:

Read that Free row again. The desktop and mobile apps aren’t on it. On the free self-hosted tier you get the web app in a browser, and nothing past that. Want to open your self-hosted workspace in the actual AppFlowy desktop app or the phone app? That’s the $6/month One tier. Want more than one human on the instance? That’s the Team tier, priced per seat like Notion, not a flat server fee.

None of this makes AppFlowy a scam. AppFlowy self-hosted is a free single-user web tool with a real subscription for anything beyond that, the same model a lot of open-core products use. If you planned to swap Notion for AppFlowy and pay nothing forever, adjust the plan: solo users get a small bill (or none, in the browser), and teams pay per seat at roughly Notion Plus prices in exchange for owning the database.

Standing up AppFlowy Cloud with Docker Compose

The self-host repo ships a real deploy.env and docker-compose.yml, and its Docker Compose doc (docs/docker-compose.md) boils the setup down to two commands, run from a clone of the repo. Clone it and copy the env template first:

Terminal window
git clone https://github.com/AppFlowy-IO/AppFlowy-SelfHost-Commercial
cd AppFlowy-SelfHost-Commercial
cp deploy.env .env

Before you run docker compose up -d, open .env and change at least these:

.env
# Your real domain, not localhost, once you're past local testing
FQDN=notes.example.com
SCHEME=https
# The websocket URL is built from WS_SCHEME, which defaults to ws
WS_SCHEME=wss
# Postgres credentials (default is "password")
POSTGRES_PASSWORD=change-me
# MinIO (S3-compatible) storage credentials, default is minioadmin/minioadmin
AWS_ACCESS_KEY=change-me
AWS_SECRET=change-me
# GoTrue is the auth service (the same one Supabase uses). This creates
# your admin login on first boot.
GOTRUE_ADMIN_EMAIL=[email protected]
GOTRUE_ADMIN_PASSWORD=change-me
# The deploy.env default is literally "hello456". Change it before
# anything touches the public internet.
GOTRUE_JWT_SECRET=change-me

For real HTTPS, also swap the bundled development certificate in docker/nginx/ssl/ for your own. Then:

Terminal window
docker compose up -d

The compose file defines 11 services: nginx (ports 80 and 443), Postgres (the pgvector/pgvector:pg16 image, because embeddings need a vector column), Redis, MinIO for file storage, GoTrue for auth, appflowy_cloud, appflowy_worker, appflowy_search, ai, admin_frontend, and appflowy_web. SMTP settings and OAuth providers (Google, GitHub, Discord, Apple, plus SAML 2.0) live further down the same .env file. Out of the box, GOTRUE_MAILER_AUTOCONFIRM=true auto-confirms local accounts, so SMTP only matters once you want real email. Eleven containers puts this closer to an Immich install than a single-container Gitea.

Migrating your Notion workspace

Import support exists and it’s a manual, file-based process with no live sync. In Notion, go to Settings > Workspace Settings > Export all workspace content and export a zip of the whole workspace. Notion’s own docs note this can take a while for large workspaces; setting Include content to No files or images speeds it up if you don’t need every attachment.

Then open the AppFlowy desktop app, click the workspace menu in the sidebar, choose Import from Notion, and drop in the zip. The client uploads it to whichever server it’s connected to, and the server does the conversion. AppFlowy’s older docs point at a web uploader on appflowy.io, but that URL now redirects to a marketing comparison page. Two self-hosting gotchas: the in-app importer needs the desktop app (so the One tier or above), and the “your import is done” email only arrives if you configured SMTP.

The import is a one-time copy. Budget an evening to check that your databases, nested pages, and image-heavy pages all landed the way you expect, because Notion’s own export format is not designed for perfect round-tripping into a different app.

AI features: pick your provider

AppFlowy’s AI is not baked in and free at every tier. On the managed cloud side, AppFlowy’s own pricing page (checked September 2026) lists AppFlowy AI MAX at $8 per user per month billed monthly, giving access to “GPT-5, Gemini 2.5 Pro, and Claude 3.7 Sonnet” (the page’s wording, older model names included), and a Vault Workspace plan at $6 per user per month billed annually that runs AI locally on your own hardware, with unlimited AI chat responses.

On the self-hosted stack, deploy.env seeds an OpenAI key (AI_OPENAI_API_KEY) or the Azure trio (AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_VERSION). The env comments name text-embedding-3-small and gpt-4o-mini, but you pick the actual models after boot in the Admin console under Settings > AI Settings. That page takes OpenAI, Azure OpenAI, Anthropic, DeepSeek, Qwen, Google Gemini, or a custom OpenAI-compatible URL, and AppFlowy’s own model-config doc uses an Ollama box at http://<ollama-host>:11434/v1 as its embeddings example. There’s also a real-time transcription integration via ASSEMBLYAI_API_KEY if you want meeting notes transcribed.

Separately, the desktop app has AppFlowy Local AI, which runs chat and writing features against an Ollama install on your own machine (defaults: gemma3:4b for chat and Qwen3-Embedding-4B for embeddings). On self-hosted, that needs the desktop app, which again means the One tier or above.

Offline behavior, databases, and what’s actually missing

The desktop and mobile clients store your workspace locally and sync to whichever server you point them at, self-hosted or managed, so you can keep working through a flaky connection and they catch up after. That local-first design is why a Rust core sits underneath a Flutter UI: sync is a layer on top of local storage, so the app opens without a network. On a self-hosted instance, the desktop and mobile clients (and this offline design) start at the One tier. The Free tier gets only the browser app.

The database side covers the ground you’d expect: Grid (spreadsheet-style tables), Kanban Board, Calendar, and Timeline views, plus Formula fields for calculated columns, added per the self-hosted server’s own v0.18.9 release notes. Confluence exports (CSV zip in v0.18.9, HTML zip in v0.18.8) import with page hierarchy and attachments intact, alongside the Notion import path.

AppFlowy covers more of the integration basics than its reputation suggests. There’s a documented REST API (OpenAPI spec covering workspaces, databases, and rows), an official Zapier integration, and Google Drive and Google Calendar connections documented in the self-host repo. Where Notion still wins is breadth: a much larger template gallery, a longer list of native integrations, and a public API and webhook system that third-party tools have targeted for years. If some SaaS tool you depend on has a “Connect to Notion” button, check whether it has an AppFlowy one before you move.

The pricing scoreboard

All prices below are as of September 2026, quoted from each vendor’s own pricing page.

Notion (notion.com/pricing): Free for individuals, Plus at $10 per member per month and Business at $20 per member per month, both billed annually (Notion says yearly billing saves up to 20% over monthly), and Enterprise at custom pricing. Notion AI (Notion Agent, AI Meeting Notes) comes with Business and Enterprise; Free and Plus get a limited trial. Custom Agents on Business and Enterprise are free to try, then $10 per 1,000 monthly Notion credits.

AppFlowy managed cloud: Free (one workspace, up to 2 members, 5 GB storage, 10 AI responses, 2 AI images), Pro at $10/user/month billed annually ($12.50 billed monthly, unlimited storage, unlimited AI responses, up to 50 workspace members, up to 100 guest editors), plus the AI MAX and Vault Workspace add-ons above.

AppFlowy self-hosted (annual billing only; AppFlowy doesn’t sell monthly self-host subscriptions): Free for one seat in the browser, $6/month for one seat with desktop, mobile, and AI unlocked, $10/seat/month for a real team, custom for enterprise.

Put side by side, AppFlowy self-hosted Free undercuts everything if you’re one person who’s fine living in a browser tab. The moment you add teammates, AppFlowy’s Team tier costs the same $10 per seat as Notion Plus and half of Notion Business, and you’re also paying for the box it runs on. You’re not choosing cheap versus expensive here. You’re choosing who holds the database.

Who should actually switch

Switch if you’re a solo user who wants your notes on your own NAS or VPS and doesn’t mind the browser-only free tier (or $6 a month for the apps and local AI), or if you’re a small team that’s fine paying Notion Plus money per seat in exchange for data control. Don’t switch if your workflow leans on Notion’s template gallery or on third-party tools that only integrate with Notion, or if you were expecting “self-hosted” to mean “free for my whole team forever.” Read the license file before you migrate a single workspace, not after.

Common Questions

Can AppFlowy import my whole Notion workspace?

Yes, through a manual zip export. Export the workspace from Notion’s Settings > Workspace Settings > Export all workspace content, then use Import from Notion in the AppFlowy desktop app’s sidebar workspace menu. AppFlowy converts the zip on the server into a new workspace. The import is a one-time copy with no ongoing sync, so check nested pages afterward.

Is AppFlowy’s self-hosted server actually open source?

No, not anymore for the server piece. The AppFlowy desktop and mobile client is AGPL-3.0 and fully open source. The current self-host repository, AppFlowy-SelfHost-Commercial, ships under a proprietary commercial license from AppFlowy Pte. Ltd. The older, fully AGPL AppFlowy-Cloud repository is archived and no longer maintained.

How many users can I run for free on self-hosted AppFlowy?

One. AppFlowy’s official self-hosted Free tier is capped at one user seat per instance, with up to 3 guest editors on specific pages. The paid One tier ($6/month billed annually) is still one seat. A second full user seat requires the Team tier at $10 per seat per month, billed annually.

What hardware do I need to self-host AppFlowy Cloud?

AppFlowy publishes no official minimum. The AppFlowy self-host Docker Compose stack runs 11 containers, including Postgres with pgvector, Redis, MinIO, GoTrue, nginx, an AI service, and two web frontends. Treat 4 GB of RAM and 2 CPU cores as a rough floor estimate, and give it more if other services share the box.

Does AppFlowy support local AI models like Ollama?

Yes. The AppFlowy desktop app has a Local AI mode that runs AI chat and writing tools against an Ollama install on your own computer. The self-hosted AppFlowy server’s Admin console also accepts any OpenAI-compatible endpoint, including Ollama, for chat and embeddings. On self-hosted AppFlowy, desktop access and Local AI start at the $6/month One tier.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Next Post
Prompt Injection vs Your Coding Agent

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts