AppFlowy-Worker

AppFlowy-Worker

Docker app from vmalinics0's Repository

Overview

Step 6/7: AppFlowy Worker — background job processor handling document imports, exports, and async tasks for AppFlowy Cloud. 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-Worker on Unraid in a few clicks.

Find AppFlowy-Worker 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-Worker 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

251,989
Total Downloads

Related apps

Details

Repository
appflowyinc/appflowy_worker:latest
Last Updated2026-06-24
First Seen2026-05-26

Runtime arguments

Network
custom:appflowy
Shell
bash
Privileged
false

Template configuration

Database URLVariable

PostgreSQL connection string. Must match AppFlowy-Cloud.

Target
APPFLOWY_WORKER_DATABASE_URL
Default
postgres://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
Value
postgres://postgres:changeme_strong_password@AppFlowy-Postgres:5432/postgres
Database NameVariable

PostgreSQL database name.

Target
APPFLOWY_WORKER_DATABASE_NAME
Default
postgres
Value
postgres
Redis URLVariable

Redis connection URL. Must match AppFlowy-Cloud.

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

Set true to use MinIO. Must match AppFlowy-Cloud.

Target
APPFLOWY_S3_USE_MINIO
Default
true
Value
true
S3 Access KeyVariable

S3/MinIO access key. Must match AppFlowy-MinIO.

Target
APPFLOWY_S3_ACCESS_KEY
Default
minioadmin
Value
minioadmin
S3 Secret KeyVariable

S3/MinIO secret key. Must match AppFlowy-MinIO.

Target
APPFLOWY_S3_SECRET_KEY
Default
changeme_minio_secret
Value
changeme_minio_secret
S3 BucketVariable

S3/MinIO bucket name. Must match AppFlowy-Cloud.

Target
APPFLOWY_S3_BUCKET
Default
appflowy
Value
appflowy
MinIO URL (internal)Variable

Internal MinIO API URL.

Target
APPFLOWY_S3_MINIO_URL
Default
http://AppFlowy-MinIO:9000
Value
http://AppFlowy-MinIO:9000
S3 RegionVariable

AWS S3 region. Leave empty when using MinIO.

Target
APPFLOWY_S3_REGION
SMTP HostVariable

SMTP host for worker outgoing mail.

Target
APPFLOWY_MAILER_SMTP_HOST
SMTP PortVariable

SMTP port.

Target
APPFLOWY_MAILER_SMTP_PORT
Default
465
Value
465
SMTP UsernameVariable

SMTP username.

Target
APPFLOWY_MAILER_SMTP_USERNAME
SMTP EmailVariable

Sender email address.

Target
APPFLOWY_MAILER_SMTP_EMAIL
SMTP PasswordVariable

SMTP password.

Target
APPFLOWY_MAILER_SMTP_PASSWORD
SMTP TLS KindVariable

TLS mode: wrapper, required, opportunistic, or none.

Target
APPFLOWY_MAILER_SMTP_TLS_KIND
Default
wrapper
Value
wrapper
Import Tick Interval (s)Variable

How often (seconds) the worker polls the import queue.

Target
APPFLOWY_WORKER_IMPORT_TICK_INTERVAL
Default
30
Value
30
Log LevelVariable

Rust log level.

Target
RUST_LOG
Default
info
Value
info
EnvironmentVariable

Worker environment. Keep as production.

Target
APPFLOWY_WORKER_ENVIRONMENT
Default
production
Value
production