LogoLogo
  • AppFlowy
    • ⭐Start here
      • Welcome to AppFlowy Docs
      • How to get help
      • Install AppFlowy
    • 🛠️Installation
      • 🖥️System Requirements
      • 💿Installation methods
        • Mac / Windows / Linux Packages
          • Installing on Linux
            • Installing & Setting up Flutter on Linux from Source
        • Docker
    • 🌱Community
      • 🤙Get in contact
      • 📔AppFlowy Mentorship Program
        • Program Guidance
        • Proposal Template
        • Pull Request Template
        • Mentorship 2023
          • Mentee Projects
            • Calendar View for AppFlowy Database
            • Custom Themes
            • Shortcuts and Customized Hotkeys for AppFlowy
            • Table
            • ⭐Favorites
            • Code Block
            • Outlines
            • Importers
            • AI Writers
            • Templates
          • Project Ideas
      • ✍️Write for AppFlowy
        • 📃Drafts
          • [Draft] Use Case: Software Engineer
          • [Draft] Use Case: High School Students
          • [Draft] How to add a new property to appflowy database
      • 🍂Hacktoberfest
    • 🛣️Roadmap
    • 🌋Product
      • 💽Data Storage
      • 🎨Customize and Style Content
      • ⏮️Duplicate, Delete, and Restore
      • 💎Databases
        • 🔢Database Properties
        • 🗃️Manage Properties
      • Ⓜ️Markdown
      • ⌨️Shortcuts
      • 🪄AppFlowy AI
      • 🦙AppFlowy Local AI - Ollama
      • 🎨Themes
      • ☁️AppFlowy Cloud
      • 🧩AppFlowy Plugins
        • Table-view Databases
        • Kanban Board
        • Calendar
        • Auto Generator
        • Smart Edit
        • Code Blocks
        • Math Equations
        • Cover
        • Emoji
  • Documentation
    • 💎Software Contributions
      • 🟢Get started
      • 💀Architecture
        • Frontend
          • Tauri
            • 🗺️CodeMap
          • Web
            • 🌟Design Philosophy
          • Flutter
            • 🗺️Project Structure: CodeMap
            • 🧮Grid
            • ⚙️Setting
          • Inter-Process Communication
          • User
            • User Data
            • Events & Notifications
          • Folder
            • Events & Notifications
          • Document
          • Database View
            • Events & Notifications
            • Grid
            • Calendar
            • Kanban Board
        • Backend
          • Initialize
          • Events
          • Delta(WIP)
          • Profiling
          • Database
        • Domain Driven Design
        • Proposals
      • 🏗️Conventions
        • 🔤Naming Conventions
        • ⌨️Code Conventions
          • 🐦Flutter
        • 🐙Git Conventions
      • 💛Submitting Code
        • 🏦Setting Up Your Repositories
        • ⤴️Submitting your first Pull Request
      • 🤟Coding Standards and Practices
        • 👽Rust Backend
    • 🚀AppFlowy
      • 👾How to contribute to AppFlowy
      • 🏗️Building from Source
        • 🌳Flutter Setup
          • 🐧Building on Linux
          • 🍎Building on macOS
          • 🪟Building on Windows
        • 🌐Web Setup
        • 📡Tauri Setup
      • ☁️Debugging with AppFlowy Cloud
      • 🔁Debugging in VS Code
      • ☎️Translate AppFlowy
      • ❓Troubleshooting
      • 👮‍♀️Licenses
    • 🏍️AppFlowy Editor
      • ⌨️How to Implement Markdown Syntax To Style Text In AppFlowy Editor
      • 🧩How to Create a Plugin for AppFlowy Editor
      • 👮‍♀️Licenses
    • ☁️AppFlowy Cloud
      • 🌈Architecture
      • ☀️Deployment
  • Guides
    • Sync Desktop and Mobile
    • Self-Hosting AppFlowy
      • ☁️Self-hosting AppFlowy with AppFlowy Cloud
      • 🆓Self-hosting AppFlowy for free Using Supabase
    • Import From Notion
  • Blog Highlights
    • 🔮Demystifying AppFlowy Editor's Codebase
  • Handbook
    • Core values
Powered by GitBook
On this page
  • Step 1: Get the source code
  • Step 2: Install your build environment
  • Step 3: Build AppFlowy (Flutter GUI application)
  • Step 4: Run the application
  • Miscellaneous: Running the application without building (using VS Code)

Was this helpful?

Edit on GitHub
  1. Documentation
  2. AppFlowy
  3. Building from Source
  4. Flutter Setup

Building on Linux

PreviousFlutter SetupNextBuilding on macOS

Last updated 2 months ago

Was this helpful?

Notes:

  • The following steps are verified on

  • You may need to disable hardware 3D acceleration if you are running AppFlowy in a VM. Otherwise, certain GL failures will prevent the app from launching.

  • This guide assumes that you are using the bash shell on Linux. You can however, replicate these steps on zsh or other alternative Linux terminal shells, with minor alterations.

If you encounter any issues, have a look at first. If your issue is not included in the page, please create an or ask on .

Attention: There is an issue affecting Ubuntu 22.04, Fedora 37, and PopOS 22.04:

Failed to load dynamic library 'libdart_ffi.so': libssl.so.1.1: cannot open shared object file: No such file or directory. The issue can be fixed by installing the required missing libraries:

For Fedora Workstation:

sudo dnf install openssl-devel

For Fedora Silverblue:

rpm-ostree upgrade
rpm-ostree install openssl1.1.x86_64

For Silverblue, it is necessary to perform both the upgrade and the installation.

For Ubuntu & PopOS:

  1. Download the required package by executing the following command:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
  1. Install the downloaded package using the following command:

sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

If the provided link for Ubuntu & PopOS is expired or returns an error 404, you can search for "libssl1.1_1.1.1" on the .

Step 1: Get the source code

Clone the source code from our Github project.

git clone https://github.com/AppFlowy-IO/AppFlowy.git

Ensure that git is installed in your system!! Use your package manager to install git if your distribution doesn't ship with git.

# Ubuntu
sudo apt install git
# Fedora
sudo dnf install git
# Arch
sudo pacman -S git

Step 2: Install your build environment

Install system prerequisites:

sudo apt-get install curl build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev unzip libkeybinder-3.0-dev libnotify-dev
sudo dnf install sqlite-devel keybinder3-devel clang cmake ninja-build openssl-devel
sudo pacman -S curl base-devel sqlite openssl clang cmake ninja pkg-config gtk3 unzip libkeybinder3 xdg-user-dirs

Install flutter (three different methods):

Flutter version 3.27.4 is the recent supported stable release used for building AppFlowy. Building with the latest stable Flutter release is not tested and might throw errors while building.

  • Method 2: You can use the code below to install flutter manually on your linux system.

git clone https://github.com/flutter/flutter.git --branch 3.27.4
cd flutter
echo -e "\nexport PATH=\$PATH:"`pwd`"/bin" >> ~/.bashrc
source ~/.bashrc
flutter
cd ..
  1. Clone asdf.

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.1
  1. Add the path to asdf and enable asdf auto-completion in your shell.

echo -e '\n# asdf configuration \n. "$HOME/.asdf/asdf.sh"\n. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
source ~/.bashrc
  1. Install flutter via asdf and set it as your local runtime at the AppFlowy source directory (xx/AppFlowy/).

cd AppFlowy
asdf plugin-add flutter
asdf install flutter 3.27.4-stable
rm -rf .tool-versions
asdf local flutter 3.27.4-stable
cd ..

Some distributions might miss certain packages essential for asdf, such as jq, curl, or wget. Please make sure they are installed via your package manager. 👉 Ubuntu 22.04 does not come with the package jq installed by default, you will have to install by doing:

sudo apt install jq

Setting up your development environment:

Run the setup script from the base directory. (Note: You can skip this step if you installed rust using asdf and set it as the local runtime inside thexx/AppFlowy/ source.)

cd AppFlowy
./frontend/scripts/install_dev_env/install_linux.sh
source ~/.bashrc

If you get this warning:


Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path. You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):

export PATH="$PATH":"$HOME/.pub-cache/bin" Then run the following command to add the path inside your shell configuration dotfile (.bashrc, .zshrc, etc.). For bash users:

echo -e '\nexport PATH="$PATH":"$HOME/.pub-cache/bin"' >> ~/.bashrc
source ~/.bashrc

OR, alternatively run this in your shell every time you build AppFlowy:

export PATH="$PATH":"$HOME/.pub-cache/bin

Step 3: Build AppFlowy (Flutter GUI application)

Change your path to the frontend directory.

cd frontend

Building the AppFlowy binary:

cargo make --profile production-linux-x86_64 appflowy
cargo make --profile development-linux-x86_64 appflowy-dev

You will find the binary in frontend/appflowy_flutter/product/[version in x.x.x]/linux/[Binary type (Release/ Debug)]/AppFlowy/.

Step 4: Run the application

For running the release binary:

cd appflowy_flutter/product/[version number in x.x.x]/linux/Release/AppFlowy
./app_flowy

For running the debug binary:

cd appflowy_flutter/product/[version number in x.x.x]/linux/Debug/AppFlowy
./app_flowy

If you do not know the version number for the AppFlowy binary that you have built, please use your terminal shells' tab completion, or type and enter thels(list) command to reveal the name of folder which is the version number you are building.

The current version of AppFlowy is 0.1.0.

A new window as shown below will show up after you run the application:

If using a virtual machine, run the Linux GUI application through x11 on windows (use MobaXterm) for instance:

export DISPLAY=localhost:10

Miscellaneous: Running the application without building (using VS Code)

Do not use the flatpak distribution of VS Code! ****The flatpak VS Code is sandboxed and uses an isolated shell environment, and cannot access any binaries or libraries installed in your system, including your default system shell.

  1. Open the frontend folder located at xx/AppFlowy/ with VS Code.

  2. Go to the Run and Debug tab and then click AF-desktop: Clean + Rebuild All for the first time running.

You should fork the code instead if you wish to submit code to AppFlowy. You will find information on that in .

Method 1: Install flutter according to . Make sure to install flutter in a directory that is appropriate for you.

Image: Installing flutter manually.

Method 3: You can also use a runtime version manager like or a flutter-specific version manager to install flutter on your system. Assuming you are using the bash shell, follow these steps:

If you are not using bash, check the official to learn how to set up asdf for your shell.

🚀
🏗️
🌳
🐧
Troubleshooting
issue
Discord
page
Setting Up Your Repositories
https://docs.flutter.dev/get-started/install/linux
asdf
asdf guide
Image: Cloning the source from the Github repository.
Image: Installing prerequisites on Ubuntu.
Image: Installing flutter using asdf
Image: Running script install_linux.sh inside xx/AppFlowy/frontend/scripts/install_dev_env/.
Image: "Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path."
Image: Building AppFlowy
Image: AppFlowy window
Image: Running the application using VS Code