AppFlowy-AI

AppFlowy-AI

Docker app from vmalinics0's Repository

Overview

Step 6/7 (optional): AppFlowy AI — optional Python service providing LLM-powered chat, document summarisation, and embedding generation for AppFlowy Cloud. Requires an OpenAI or Azure OpenAI API key. Part of the AppFlowy Cloud stack.

AppFlowy Cloud — Unraid Community Apps Templates

Unraid Community Apps templates for self-hosting AppFlowy Cloud — the open-source, privacy-first collaborative workspace (Notion alternative).

Services

Container Image Role
AppFlowy-Postgres pgvector/pgvector:pg16 Primary database
AppFlowy-Redis redis:7 Cache & pub/sub
AppFlowy-MinIO minio/minio S3-compatible object storage
AppFlowy-GoTrue appflowyinc/gotrue Authentication (JWT, OAuth, email)
AppFlowy-Cloud appflowyinc/appflowy_cloud Core backend API + WebSocket
AppFlowy-Admin appflowyinc/admin_frontend Admin web console (/console)
AppFlowy-Web appflowyinc/appflowy_web Browser client (/)
AppFlowy-Worker appflowyinc/appflowy_worker Background job processor
AppFlowy-Search appflowyinc/appflowy_search Full-text & semantic search
AppFlowy-AI (optional) appflowyinc/appflowy_ai LLM chat & embeddings
AppFlowy-Nginx nginx:stable-alpine Reverse proxy (public entry point)
AppFlowy-Certbot (optional) certbot/certbot Automated Let's Encrypt TLS certificates

Prerequisites

1. Create the appflowy Docker network

All containers communicate on a shared custom bridge network.

Via SSH or the Unraid terminal:

docker network create appflowy

2. Download the nginx config

Before starting AppFlowy-Nginx, place the custom config at:

/mnt/user/appdata/AppFlowy-Nginx/nginx.conf
mkdir -p /mnt/user/appdata/AppFlowy-Nginx/ssl
curl -o /mnt/user/appdata/AppFlowy-Nginx/nginx.conf \
  https://raw.githubusercontent.com/vmalinics0/unraid-appflowy/main/nginx/nginx.conf

The nginx.conf in this repo uses Unraid container names (AppFlowy-Cloud, AppFlowy-GoTrue, etc.) instead of the default compose service names.

Deploy Order

Deploy containers in this order (each group can be deployed in parallel). The install step number is shown in each app's description in Community Apps.

Step 1 — AppFlowy-Postgres
Step 2 — AppFlowy-Redis
Step 3 — AppFlowy-MinIO
Step 4 — AppFlowy-GoTrue        (waits for Postgres)
Step 5 — AppFlowy-Cloud         (waits for GoTrue, Postgres, Redis, MinIO)
Step 6 — AppFlowy-Admin         \
          AppFlowy-Web            | (wait for AppFlowy-Cloud)
          AppFlowy-Worker         |
          AppFlowy-Search         |
          AppFlowy-AI (optional)  /
Step 7 — AppFlowy-Nginx          (deploy last)

Required Configuration

Set these values consistently across all templates before starting:

Setting Where to set Notes
YOUR_SERVER_IP All templates Your Unraid server's LAN IP or domain
Postgres Password AppFlowy-Postgres, AppFlowy-GoTrue, AppFlowy-Cloud, AppFlowy-Worker, AppFlowy-Search, AppFlowy-AI Must be identical everywhere
JWT Secret AppFlowy-GoTrue, AppFlowy-Cloud, AppFlowy-Search, AppFlowy-AI Min 32 chars; must be identical everywhere
MinIO credentials AppFlowy-MinIO, AppFlowy-Cloud, AppFlowy-Worker, AppFlowy-Search, AppFlowy-AI Access key + secret key
Admin email/password AppFlowy-GoTrue Login for /console

Accessing AppFlowy

URL Service
http://YOUR_SERVER_IP/ AppFlowy Web (browser client)
http://YOUR_SERVER_IP/console Admin console
http://YOUR_SERVER_IP/minio/ MinIO web UI

Native desktop/mobile clients: point them to http://YOUR_SERVER_IP as the server URL.

TLS / HTTPS

Three nginx config files are provided; choose one:

Config file Use when
nginx/nginx.conf HTTP only (default, no TLS)
nginx/nginx-https-custom.conf You have your own TLS certificate
nginx/nginx-letsencrypt.conf Automated Let's Encrypt certificates

Option A — User-provided certificate

  1. Place your certificate and key in /mnt/user/appdata/AppFlowy-Nginx/ssl/:
    • certificate.crt
    • private_key.key
  2. Point the AppFlowy-Nginx nginx.conf path to nginx-https-custom.conf.
  3. Update all http:// URLs in every template to https://.
  4. Update APPFLOWY_WS_BASE_URL in AppFlowy-Web from ws:// to wss://.
  5. Restart all containers.

Option B — Automated Let's Encrypt (AppFlowy-Certbot)

Requires a public domain name with port 80 reachable from the internet.

  1. Create the required host directories:
    mkdir -p /mnt/user/appdata/AppFlowy-Nginx/letsencrypt
    mkdir -p /mnt/user/appdata/AppFlowy-Nginx/certbot-webroot
    
  2. Download nginx-letsencrypt.conf and edit it — replace YOUR_DOMAIN (two occurrences) with your actual domain:
    curl -o /mnt/user/appdata/AppFlowy-Nginx/nginx-letsencrypt.conf \
      https://raw.githubusercontent.com/vmalinics0/unraid-appflowy/main/nginx/nginx-letsencrypt.conf
    
  3. Point the AppFlowy-Nginx nginx.conf path to nginx-letsencrypt.conf and restart it.
  4. In Community Apps, install AppFlowy-Certbot. Edit its Extra Parameters field — replace yourdomain.com and admin@yourdomain.com with your real values. Start it; it will obtain the certificate and exit (this is normal).
  5. Restart AppFlowy-Nginx to load the new certificate.
  6. Update all http:// URLs in every template to https:// and APPFLOWY_WS_BASE_URL from ws:// to wss://.
  7. Schedule AppFlowy-Certbot to restart monthly (e.g. via the Unraid User Scripts plugin) for automatic renewal. After each renewal, restart AppFlowy-Nginx.

Submitting to Community Apps

  1. Fork / create a public GitHub repository.
  2. Push all files from this directory into the repo root.
  3. Submit the repository URL at https://ca.unraid.net/submit.
  4. Run Validate and Scan in the CA submission flow.

Support

Upstream

Install AppFlowy-AI on Unraid in a few clicks.

Find AppFlowy-AI in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for AppFlowy-AI Review the template variables and paths Click Install

Requirements

Custom Docker network named "appflowy" must exist before deploying any container in this stack. Create it via SSH or the Unraid terminal: docker network create appflowy — Network Type is pre-set to "appflowy" by default, verify it is selected.

Download Statistics

292,165
Total Downloads

Related apps

Details

Repository
appflowyinc/appflowy_ai:latest
Last Updated2026-05-22
First Seen2026-05-26

Runtime arguments

Network
custom:appflowy
Shell
sh
Privileged
false

Template configuration

OpenAI API KeyVariable

OpenAI API key. Required unless using Azure OpenAI. Used for chat and embeddings.

Target
OPENAI_API_KEY
Azure OpenAI API KeyVariable

Azure-hosted OpenAI API key. Use this instead of OPENAI_API_KEY for Azure deployments.

Target
AZURE_OPENAI_API_KEY
Azure OpenAI EndpointVariable

Azure OpenAI resource endpoint URL (e.g. https://my-resource.openai.azure.com/).

Target
AZURE_OPENAI_ENDPOINT
Azure OpenAI API VersionVariable

Azure OpenAI API version string (e.g. 2024-02-01).

Target
AZURE_OPENAI_API_VERSION
AppFlowy Host (Base URL)Variable

Public-facing base URL. Must match APPFLOWY_BASE_URL in AppFlowy-Cloud.

Target
AI_APPFLOWY_HOST
Default
http://YOUR_SERVER_IP
Value
http://YOUR_SERVER_IP
JWT SecretVariable

Shared JWT secret. Must be identical to GoTrue and AppFlowy-Cloud.

Target
APPFLOWY_GOTRUE_JWT_SECRET
Default
changeme_jwt_secret_min32chars!!
Value
changeme_jwt_secret_min32chars!!
Database URLVariable

PostgreSQL connection string for the AI service (uses psycopg driver syntax).

Target
AI_DATABASE_URL
Default
postgresql+psycopg://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
Value
postgresql+psycopg://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
Redis URLVariable

Redis connection URL.

Target
AI_REDIS_URL
Default
redis://AppFlowy-Redis:6379
Value
redis://AppFlowy-Redis:6379
Use MinIOVariable

Set true to use MinIO.

Target
AI_USE_MINIO
Default
true
Value
true
S3 Access KeyVariable

S3/MinIO access key.

Target
APPFLOWY_S3_ACCESS_KEY
Default
minioadmin
Value
minioadmin
S3 Secret KeyVariable

S3/MinIO secret key.

Target
APPFLOWY_S3_SECRET_KEY
Default
changeme_minio_secret
Value
changeme_minio_secret
S3 BucketVariable

S3/MinIO bucket name.

Target
APPFLOWY_S3_BUCKET
Default
appflowy
Value
appflowy
S3 RegionVariable

AWS S3 region (leave empty for MinIO).

Target
APPFLOWY_S3_REGION
MinIO URL (internal)Variable

Internal MinIO API URL.

Target
AI_MINIO_URL
Default
http://AppFlowy-MinIO:9000
Value
http://AppFlowy-MinIO:9000
AI Server PortVariable

Port the AI service listens on. Must match AI_SERVER_PORT in AppFlowy-Cloud.

Target
AI_SERVER_PORT
Default
5001
Value
5001
Default AI ModelVariable

Default OpenAI chat model (e.g. gpt-4.1-mini, gpt-4o). Must be available in your OpenAI account.

Target
DEFAULT_AI_MODEL
Default
gpt-4.1-mini
Value
gpt-4.1-mini
Default Completion ModelVariable

Model used for completions/summaries.

Target
DEFAULT_AI_COMPLETION_MODEL
Default
gpt-4.1-mini
Value
gpt-4.1-mini