AppFlowy

Open-source Notion alternative in one container. Notes, docs, wikis and projects that you own.

  • ghcr.io/hsinghhira/appflowy:latest
  • port 6101
  • Productivity
AppFlowy screenshot 1

Web App

/
http://localhost:6101/

Admin Console

/console
http://localhost:6101/console

Mail Viewer

/mail
http://localhost:6101/mail

AppFlowy is an open-source workspace for notes, docs, wikis and projects. This is the self-hosted AppFlowy Cloud in a single container, with one port and one data folder. Secret keys are made for you on first start.

Features

  • Docs, databases, boards, calendars and wikis in one workspace
  • Real-time sync and teamwork across web, desktop and mobile apps
  • Workspaces, members, guests and sharing with access control
  • Publish pages to the web
  • Built-in keyword search
  • PostgreSQL with pgvector, Redis and Silo file storage inside
  • Admin console to manage users and workspaces
  • Bundled Mailpit catches all email, such as invites and password resets, or use your own email server
  • Sign in with Google, GitHub or Discord
  • Change sign-up rules, email and more by adding a setting in the app settings

How to use

  1. Open AppFlowy from your dashboard.
  2. Sign up with your email and password.
  3. Create your first workspace and page.
  4. To use the AppFlowy desktop or mobile app, choose the self-hosted server option and enter your address with port 6101.
  5. Manage users at /console. Sign in with the admin email and password.
  6. Read the email AppFlowy sends at /mail. Sign in as admin with the password in /DATA/AppData/appflowy/data/mail-password.txt (open it with the Files app; it is also in the app log), unless you typed your own login in MP_UI_AUTH.

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
PUBLIC_URLhttp://localhost:6101The address you type in your browser. It starts as localhost, which only works on this device. For other devices, change localhost to your ZimaOS IP. Keep the port at 6101.
MP_UI_AUTH—The login for the mail viewer at /mail. Leave it blank and the app makes one on first start: username admin and a random password, saved in /DATA/AppData/appflowy/data/mail-password.txt (open it with the Files app) and shown in the app log. Or type your own as username:password.

Sign-up and accounts

VariableDefault valueDescription
GOTRUE_DISABLE_SIGNUPfalseSet to true so only people you invite can join. Default: anyone who can open the page can sign up.
GOTRUE_MAILER_AUTOCONFIRMtrueSet to false to make new users click a link in an email before they can sign in. Needs a real email server (SMTP_HOST). Default: no email check.
GOTRUE_JWT_EXP604800How long people stay signed in, in seconds. Default: 7 days.

Email (SMTP)

VariableDefault valueDescription
SMTP_HOST—Your email server, like smtp.gmail.com. AppFlowy uses email for sign-in links, invites and password resets. Leave it out and emails go to the built-in mail viewer at /mail and never leave your server.
SMTP_PORT465Your email server port, usually 465 or 587.
SMTP_USER—The username for your email server.
SMTP_PASS—The password for your email server. For Gmail, use an app password.
SMTP_EMAIL—The "from" address on emails. Leave it out to use SMTP_USER.
SMTP_TLS—How AppFlowy talks to your email server: wrapper (port 465), required (STARTTLS, port 587), opportunistic or none. Leave it out to use wrapper on port 465 and required on any other port.
APPFLOWY_NOTIFICATION_ENABLE_EMAILfalseSet to true to send people email notifications (mentions, invites). Needs SMTP_HOST.

Sign in with Google, GitHub or Discord

VariableDefault valueDescription
GOTRUE_EXTERNAL_GOOGLE_ENABLEDfalseSet to true to turn on "Sign in with Google". In Google Cloud, set the redirect URL to your PUBLIC_URL followed by /gotrue/callback.
GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID—Client ID for Google sign-in.
GOTRUE_EXTERNAL_GOOGLE_SECRET—Client secret for Google sign-in.
GOTRUE_EXTERNAL_GITHUB_ENABLEDfalseSet to true to turn on "Sign in with GitHub". In GitHub, set the callback URL to your PUBLIC_URL followed by /gotrue/callback.
GOTRUE_EXTERNAL_GITHUB_CLIENT_ID—Client ID for GitHub sign-in.
GOTRUE_EXTERNAL_GITHUB_SECRET—Client secret for GitHub sign-in.
GOTRUE_EXTERNAL_DISCORD_ENABLEDfalseSet to true to turn on "Sign in with Discord". In Discord, set the redirect URL to your PUBLIC_URL followed by /gotrue/callback.
GOTRUE_EXTERNAL_DISCORD_CLIENT_ID—Client ID for Discord sign-in.
GOTRUE_EXTERNAL_DISCORD_SECRET—Client secret for Discord sign-in.

Logs

VariableDefault valueDescription
RUST_LOGinfoHow much the app writes to its log: error, warn, info or debug.
docker-compose.yml
name: appflowy

services:
  appflowy:
    image: ghcr.io/hsinghhira/appflowy:latest
    container_name: appflowy
    restart: unless-stopped
    stop_grace_period: 90s
    privileged: true
    environment:
      - TZ=$TZ
      - PUBLIC_URL=http://localhost:6101
      - MP_UI_AUTH=
    ports:
      - target: 8080
        published: "6101"
        protocol: tcp
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID/data
        target: /data
        bind:
          create_host_path: true
    healthcheck:
      test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8080/api/health"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 240s
    deploy:
      resources:
        limits:
          cpus: "4.00"
          memory: 3072M
        reservations:
          cpus: "0.00"
          memory: 512M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/appflowy/icon.png
    x-casaos:
      id: com.icestore.appflowy
      envs:
        - container: TZ
          description:
            en_US: >-
              Your time zone. It is filled in from your ZimaOS time zone.
              Leave it unless you need another.
        - container: PUBLIC_URL
          description:
            en_US: >-
              The address you type in your browser. It starts as localhost,
              which only works on this device. For other devices, change
              `localhost` to your ZimaOS IP. Keep the port at 6101.
        - container: MP_UI_AUTH
          description:
            en_US: >-
              The login for the mail viewer at /mail. Leave it blank and the
              app makes one on first start: username admin and a random
              password, saved in /DATA/AppData/appflowy/data/mail-password.txt
              (open it with the Files app) and shown in the app log. Or type
              your own as `username:password`.
      ports:
        - container: "8080"
          description:
            en_US: AppFlowy web app, API, sign-in, admin console (/console) and mail viewer (/mail), published on host as 6101
      volumes:
        - container: /data
          description:
            en_US: The database, files, search index, secret keys and settings.

x-casaos:
  id: com.icestore.appflowy
  architectures:
    - amd64
    - arm64
  main: appflowy
  author: HSinghHira
  category: Productivity
  developer: AppFlowy-IO
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/appflowy/icon.png
  title:
    en_US: AppFlowy
  tagline:
    en_US: Open-source Notion alternative in one container. Notes, docs, wikis and projects that you own.
  description:
    en_US: >-
      Visit: [https://icestore.hsinghhira.me/app/appflowy/](https://icestore.hsinghhira.me/app/appflowy/) for full details


      AppFlowy is an open-source workspace for notes, docs, wikis and
      projects. This is the self-hosted AppFlowy Cloud in a single
      container, with one port and one data folder. Secret keys are made
      for you on first start.


      **Features**


      - Docs, databases, boards, calendars and wikis in one workspace

      - Real-time sync and teamwork across web, desktop and mobile apps

      - Workspaces, members, guests and sharing with access control

      - Publish pages to the web

      - Built-in keyword search

      - PostgreSQL with pgvector, Redis and Silo file storage inside

      - Admin console to manage users and workspaces

      - Bundled Mailpit catches all email (invites, password resets), or use
        your own email server

      - Sign in with Google, GitHub or Discord

      - Change sign-up rules, email and more by adding a setting in the app
        settings


      **How to use?**

      1. Open AppFlowy from the Zima OS dashboard.

      2. Sign up with your email and password.

      3. Create your first workspace and page.

      4. To use the AppFlowy desktop or mobile app, choose the self-hosted
         server option and enter your AppFlowy address with port 6101.

      5. Manage users at `/console`. Sign in with the admin email and
         password.

      6. Read the email AppFlowy sends at `/mail`. The login is in
         /DATA/AppData/appflowy/data/mail-password.txt, unless you typed
         your own in MP_UI_AUTH.
  tips:
    before_install:
      en_US: >-
        Visit: [https://icestore.hsinghhira.me/app/appflowy/](https://icestore.hsinghhira.me/app/appflowy/) for full details
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/appflowy/screenshot-1.png
  index: /
  port_map: "6101"
  scheme: http
  is_uncontrolled: false
  version: "0.19.2"
  update_at: "2026-10-21"
  release_notes:
    en_US: |-
      - The mail viewer (/mail) login is now made on first start (admin and a random password, saved in data/mail-password.txt and shown in the log) instead of username:password. If you installed before, make MP_UI_AUTH blank in the app settings, or type your own login there.
      - Single-container AppFlowy with one port (6101) and one data folder
      - Secret keys are made on first start, so each install gets its own
      - appflowy_cloud 0.19.2, appflowy_web 0.19.8, appflowy_worker 0.18.8, appflowy_search 0.18.8, gotrue 0.18.8, admin_frontend 0.18.1
      - File storage uses Silo (pgsty/silo), the community fork of MinIO
      - The app settings stay short; every other setting is listed on the IceStore app page (Variables tab) and can be added in the app settings
      - Blank or missing settings keep their defaults; they are no longer forwarded as empty values
      - AI service and pgAdmin are not included
  repo: "https://github.com/AppFlowy-IO/AppFlowy-Cloud"
  support: "https://github.com/AppFlowy-IO/AppFlowy-Cloud/issues"
  docs: "https://github.com/AppFlowy-IO/AppFlowy-Cloud/tree/main/doc"