All apps · 0 apps
AppFlowy-Search
Docker app from vmalinics0's Repository
Overview
Readme
View on GitHubAppFlowy 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
- Place your certificate and key in
/mnt/user/appdata/AppFlowy-Nginx/ssl/:certificate.crtprivate_key.key
- Point the AppFlowy-Nginx nginx.conf path to
nginx-https-custom.conf. - Update all
http://URLs in every template tohttps://. - Update
APPFLOWY_WS_BASE_URLin AppFlowy-Web fromws://towss://. - Restart all containers.
Option B — Automated Let's Encrypt (AppFlowy-Certbot)
Requires a public domain name with port 80 reachable from the internet.
- Create the required host directories:
mkdir -p /mnt/user/appdata/AppFlowy-Nginx/letsencrypt mkdir -p /mnt/user/appdata/AppFlowy-Nginx/certbot-webroot - Download
nginx-letsencrypt.confand edit it — replaceYOUR_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 - Point the AppFlowy-Nginx nginx.conf path to
nginx-letsencrypt.confand restart it. - In Community Apps, install AppFlowy-Certbot. Edit its Extra Parameters field — replace
yourdomain.comandadmin@yourdomain.comwith your real values. Start it; it will obtain the certificate and exit (this is normal). - Restart AppFlowy-Nginx to load the new certificate.
- Update all
http://URLs in every template tohttps://andAPPFLOWY_WS_BASE_URLfromws://towss://. - 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
- Fork / create a public GitHub repository.
- Push all files from this directory into the repo root.
- Submit the repository URL at https://ca.unraid.net/submit.
- Run Validate and Scan in the CA submission flow.
Support
- Template issues / requests: https://github.com/vmalinics0/unraid-appflowy/issues
- Template docs: https://github.com/vmalinics0/unraid-appflowy/blob/main/README.md
- Upstream AppFlowy Cloud discussions: https://github.com/AppFlowy-IO/AppFlowy-Cloud/discussions
Upstream
Install AppFlowy-Search on Unraid in a few clicks.
Find AppFlowy-Search 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.
Requirements
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
appflowyinc/appflowy_search:latestRuntime arguments
- Network
custom:appflowy- Shell
bash- Privileged
- false
Template configuration
Persistent directory for the full-text (keyword) search index. Must have sufficient free space.
- Target
- /var/lib/appflowy/keyword_index
- Default
- /mnt/user/appdata/AppFlowy-Search/keyword_index
- Value
- /mnt/user/appdata/AppFlowy-Search/keyword_index
PostgreSQL connection string. Must match AppFlowy-Cloud.
- Target
- APPFLOWY_SEARCH_DATABASE_URL
- Default
- postgres://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
- Value
- postgres://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
Redis connection URL.
- Target
- APPFLOWY_SEARCH_REDIS_URL
- Default
- redis://AppFlowy-Redis:6379
- Value
- redis://AppFlowy-Redis:6379
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!!
Set true to use MinIO.
- Target
- APPFLOWY_S3_USE_MINIO
- Default
- true
- Value
- true
S3/MinIO access key.
- Target
- APPFLOWY_S3_ACCESS_KEY
- Default
- minioadmin
- Value
- minioadmin
S3/MinIO secret key.
- Target
- APPFLOWY_S3_SECRET_KEY
- Default
- changeme_minio_secret
- Value
- changeme_minio_secret
S3/MinIO bucket name.
- Target
- APPFLOWY_S3_BUCKET
- Default
- appflowy
- Value
- appflowy
Internal MinIO API URL.
- Target
- APPFLOWY_S3_MINIO_URL
- Default
- http://AppFlowy-MinIO:9000
- Value
- http://AppFlowy-MinIO:9000
AWS S3 region (leave empty for MinIO).
- Target
- APPFLOWY_S3_REGION
OpenAI API key for semantic/vector search and document embeddings. Leave empty to use keyword-only search.
- Target
- AI_OPENAI_API_KEY
Azure-hosted OpenAI API key (alternative to OpenAI). Leave empty if using standard OpenAI.
- Target
- AZURE_OPENAI_API_KEY
Azure OpenAI resource endpoint URL.
- Target
- AZURE_OPENAI_ENDPOINT
Azure OpenAI API version string.
- Target
- AZURE_OPENAI_API_VERSION
Enable full-text keyword search. Recommended: true.
- Target
- APPFLOWY_KEYWORD_SEARCH_ENABLED
- Default
- true
- Value
- true
Continuously index new/updated documents in the background.
- Target
- APPFLOWY_BACKGROUND_INDEXER_ENABLED
- Default
- true
- Value
- true
Enable the keyword indexing worker.
- Target
- APPFLOWY_KEYWORD_WORKER_ENABLED
- Default
- true
- Value
- true
Enable database-level indexing (experimental).
- Target
- APPFLOWY_INDEXER_DATABASE_ENABLED
- Default
- false
- Value
- false
Memory-mapped file size for keyword index in bytes. Default: 2 GiB. Reduce if RAM is limited.
- Target
- APPFLOWY_KEYWORD_INDEX_MAP_SIZE_BYTES
- Default
- 2147483648
- Value
- 2147483648
IP address the search service listens on. :: = all interfaces.
- Target
- APPFLOWY_SEARCH_HOST
- Default
- ::
- Value
- ::
Port the search service listens on (internal).
- Target
- APPFLOWY_SEARCH_PORT
- Default
- 4002
- Value
- 4002
Rust log level.
- Target
- RUST_LOG
- Default
- info
- Value
- info