Repository navigation
Docker Aliyun Deployment CN
将本页的配置保存为一个 compose.yaml,运行 docker compose up -d,即可启动前端、后端和 PostgreSQL。三个服务的镜像均从阿里云广州仓库拉取,不需要克隆源码或在服务器上编译。
适用于全新部署,支持 Linux amd64、arm64 容器。需要 Docker 和 Docker Compose v2;Docker Desktop 也可以使用。已有部署应先备份并核对 PostgreSQL 主版本,不能把其他主版本的数据目录直接用于本配置。
| 服务 | 默认镜像 |
|---|---|
| API 和初始化服务 | crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com/taichuy/1flowbase-api-server:latest |
| Web | crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com/taichuy/1flowbase-web:latest |
| PostgreSQL | crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com/taichuy/postgres:18-alpine |
前后端也提供各自的版本标签,例如 v0.5.6。数据库镜像来自 Docker 官方 PostgreSQL 18 Alpine,提供具体小版本标签,例如 18.6-alpine。数据库使用 18-alpine 跟随 18 系列更新,不使用会跨主版本的 latest。
本配置每次启动都会检查远端镜像。首次部署会生成独立的数据库密码与加密主密钥,并初始化管理员账号;再次启动不会重置已有配置或数据库。
创建一个空目录,把下面的完整配置保存为 compose.yaml。也可以下载 原始配置文件,下载后改名为 compose.yaml。
name: 1flowbase
services:
api:
depends_on:
db:
condition: service_healthy
required: true
init:
condition: service_completed_successfully
entrypoint:
- /usr/local/bin/1flowbase-api-start
environment:
API_ALLOWED_ORIGINS: ${API_ALLOWED_ORIGINS:-http://localhost:3100,http://127.0.0.1:3100}
API_APPLICATION_TEMPLATE_AUTO_UPDATE: 'true'
API_COOKIE_NAME: flowbase_console_session
API_COOKIE_SECURE: ${API_COOKIE_SECURE:-false}
API_DATABASE_POOL_MAX_CONNECTIONS: '5'
API_ENV: production
API_HOST_EXTENSION_DROPIN_ROOT: /app/api/plugins/host-extension/dropins
API_OFFICIAL_EXTENSION_ARTIFACT_DOWNLOAD_TIMEOUT_SECONDS: '300'
API_OFFICIAL_EXTENSION_CATALOG_REQUEST_TIMEOUT_SECONDS: '8'
API_OFFICIAL_EXTENSION_SOURCE_CONNECT_TIMEOUT_SECONDS: '2'
API_OFFICIAL_PLUGIN_GITHUB_PROXY_URL: ''
API_OFFICIAL_PLUGIN_REGISTRY_URL: https://raw.githubusercontent.com/taichuy/1flowbase-official-plugins/main/official-registry.json
API_OFFICIAL_PLUGIN_REPOSITORY: taichuy/1flowbase-official-plugins
API_OFFICIAL_PLUGIN_SIGNATURE_REQUIRED: 'true'
API_OFFICIAL_PLUGIN_TRUSTED_PUBLIC_KEYS_JSON: '[{"key_id":"1flowbase-signing-20261010-e7a2c47a","algorithm":"ed25519","public_key_pem":"-----BEGIN
PUBLIC KEY-----\nMCowBQYDK2VwAyEAOMjRrNChRtu4aR+yVpFUwvOVxonoNizhWuQ4+DwJjrg=\n-----END
PUBLIC KEY-----"}]'
API_PLUGIN_ALLOW_UNVERIFIED_FILESYSTEM_DROPINS: 'false'
API_PLUGIN_ALLOW_UPLOADED_HOST_EXTENSIONS: 'false'
API_PLUGIN_SET: default
API_PROVIDER_INSTALL_ROOT: /app/api/plugins
API_SECRET_RESOLVER: env
API_SERVER_ADDR: 0.0.0.0:7800
API_SESSION_TTL_DAYS: '7'
API_SYSTEM_BACKUP_PASSWORD: ''
BOOTSTRAP_ROOT_ACCOUNT: ${BOOTSTRAP_ROOT_ACCOUNT:-root}
BOOTSTRAP_ROOT_EMAIL: root@example.com
BOOTSTRAP_ROOT_NAME: Root
BOOTSTRAP_ROOT_NICKNAME: Root
BOOTSTRAP_WORKSPACE_NAME: 1flowbase
RUST_LOG: info
expose:
- '7800'
image: ${FLOWBASE_REGISTRY:-crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com}/${FLOWBASE_API_REPOSITORY:-taichuy/1flowbase-api-server}:${FLOWBASE_API_SERVER_VERSION:-latest}
pull_policy: always
restart: unless-stopped
volumes:
- ./config:/config:ro
- ./api/storage:/app/api/storage
- ./api/plugins/packages:/app/api/plugins/packages
- ./api/plugins/installed:/app/api/plugins/installed
- ./api/plugins/host-extension/dropins:/app/api/plugins/host-extension/dropins
db:
command:
- postgres
- -c
- max_connections=300
environment:
POSTGRES_DB: 1flowbase
POSTGRES_INITDB_ARGS: --encoding=UTF8 --locale=C
POSTGRES_USER: postgres
POSTGRES_PASSWORD_FILE: /config/postgres-password
healthcheck:
test:
- CMD-SHELL
- pg_isready -U $${POSTGRES_USER:-postgres} -d $${POSTGRES_DB:-1flowbase}
timeout: 3s
interval: 5s
retries: 20
image: ${FLOWBASE_REGISTRY:-crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com}/${FLOWBASE_POSTGRES_REPOSITORY:-taichuy/postgres}:${FLOWBASE_POSTGRES_VERSION:-18-alpine}
pull_policy: always
restart: unless-stopped
shm_size: '536870912'
volumes:
- ./postgres/data/pgdata:/var/lib/postgresql
- ./config:/config:ro
depends_on:
init:
condition: service_completed_successfully
web:
depends_on:
api:
condition: service_started
required: true
image: ${FLOWBASE_REGISTRY:-crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com}/${FLOWBASE_WEB_REPOSITORY:-taichuy/1flowbase-web}:${FLOWBASE_WEB_VERSION:-latest}
pull_policy: always
ports:
- ${WEB_PORT:-3100}:80
restart: unless-stopped
volumes:
- ./web/external-npm:/usr/share/nginx/html/external-npm:ro
init:
image: ${FLOWBASE_REGISTRY:-crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com}/${FLOWBASE_API_REPOSITORY:-taichuy/1flowbase-api-server}:${FLOWBASE_API_SERVER_VERSION:-latest}
pull_policy: always
user: 0:0
entrypoint:
- /usr/local/bin/1flowbase-initialize
volumes:
- ./config:/config
- ./api/storage:/app/api/storage
- ./api/plugins/packages:/app/api/plugins/packages
- ./api/plugins/installed:/app/api/plugins/installed
- ./api/plugins/host-extension/dropins:/app/api/plugins/host-extension/dropins
- ./postgres/data/pgdata:/pgdata:ro
restart: 'no'
environment:
BOOTSTRAP_ROOT_ACCOUNT: ${BOOTSTRAP_ROOT_ACCOUNT:-root}
BOOTSTRAP_ROOT_PASSWORD: ${BOOTSTRAP_ROOT_PASSWORD:-change-me-root-password}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-}
API_PROVIDER_SECRET_MASTER_KEY: ${API_PROVIDER_SECRET_MASTER_KEY:-}在 compose.yaml 所在目录运行:
docker compose up -d如果机器使用独立的 Compose v2 命令,使用 docker-compose up -d。
打开 http://localhost:3100,远程服务器则访问 http://服务器IP:3100。初始账号为 root,默认初始密码为 change-me-root-password,登录后修改密码。首次启动前也可通过下文的 .env 设置自己的管理员密码。
检查状态和健康接口:
docker compose ps -a
curl http://localhost:3100/healthinit 退出码为 0 是正常完成;db 应显示 healthy,api 和 web 应持续运行。首次启动需要下载镜像并初始化数据库。
镜像仓库为公开拉取时无需登录。如果你改用私有仓库,请先使用该仓库授权给你的账号运行 docker login 实例域名,不要在 Compose 或公开教程中填写 Registry 密码。
与 compose.yaml 同目录的 .env 用于 Compose 插值,不是首次启动自动生成的 config/.env。
例如端口被占用,或需要固定本次验证的版本:
WEB_PORT=33100
FLOWBASE_API_SERVER_VERSION=v0.5.6
FLOWBASE_WEB_VERSION=v0.5.6
FLOWBASE_POSTGRES_VERSION=18.6-alpine
BOOTSTRAP_ROOT_PASSWORD=replace-with-your-own-long-password删去三个版本设置即可继续使用默认的前后端 latest 和数据库 18-alpine。管理员初始化参数仅在第一次创建配置时生效,后续修改不会重置已有账号。
仓库地址也可以通过 .env 修改:
FLOWBASE_REGISTRY=crpi-hwltzgye5cs5bk40.cn-guangzhou.personal.cr.aliyuncs.com
FLOWBASE_API_REPOSITORY=taichuy/1flowbase-api-server
FLOWBASE_WEB_REPOSITORY=taichuy/1flowbase-web
FLOWBASE_POSTGRES_REPOSITORY=taichuy/postgres如果浏览器入口使用 HTTPS,设置 API_COOKIE_SECURE=true;通过反向代理终止 HTTPS 时也一样。需要从其他来源访问 API 时,设置 API_ALLOWED_ORIGINS,例如实际访问站点的 http://服务器IP:3100。
先查看 Release 说明,并备份数据库、config 和 api/storage。然后在原目录运行:
docker compose up -d配置声明了 pull_policy: always,启动会拉取默认标签或你固定的版本。首次生成的配置、数据库和上传文件通过宿主目录持久化;docker compose down 后重新启动仍使用这些文件。
保留 config/.env 和 config/postgres-password,不要通过删除配置来重置管理员账号。它们包含数据库密码和加密主密钥,应与数据库一起备份,不提交到 Git。
PostgreSQL 数据位于 postgres/data/pgdata,挂载到容器的 /var/lib/postgresql。PostgreSQL 跨主版本升级需要单独迁移,不能只把镜像标签从 18 改成其他主版本。
前后端分别同步到独立仓库,使用各自版本标签和 latest;PostgreSQL 也单独同步到 taichuy/postgres。复制保留两个运行架构的镜像内容,不重新编译应用或数据库。阿里云个人版不支持部分 OCI 构建证明,国内镜像列表不包含这些证明;运行镜像摘要按架构逐一校验。
仓库镜像下载走国内地址。模型供应商、插件安装和其他外部服务仍取决于你后续配置的服务地址。