这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

应用模板

用于运行 Docker 应用的配置模板

用于运行 Docker 应用的配置模板。

模板说明
supabaseSupabase 自托管开源 BaaS
difyDify AI 应用开发平台
odooOdoo 开源 ERP 系统
electricElectric 实时同步引擎
maybeMaybe 个人财务管理
teableTeable 无代码数据库
registryDocker Registry 镜像代理

1 - supabase

使用 Pigsty 托管的 PostgreSQL 自建 Supabase 开源 Firebase 替代方案

supabase 配置模板提供了自建 Supabase 的参考配置,使用 Pigsty 托管的 PostgreSQL 作为底层存储。

更多细节,请参考 Supabase 自建教程


配置概览

  • 配置名称: supabase
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 自建 Supabase
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:metarich

启用方式:

./configure -c supabase [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/supabase.yml

all:
  children:

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } }, vars: { repo_enabled: false } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1  } }, vars: { etcd_cluster: etcd  } }
    minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

    #----------------------------------------------#
    # PostgreSQL cluster for Supabase self-hosting
    #----------------------------------------------#
    pg-meta:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-meta
        pg_users:
          # supabase 角色
          - { name: anon           ,login: false }
          - { name: authenticated  ,login: false }
          - { name: dashboard_user ,login: false ,replication: true ,createdb: true ,createrole: true }
          - { name: service_role   ,login: false ,bypassrls: true }
          # supabase 用户
          - { name: supabase_admin             ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: true   ,roles: [ dbrole_admin ] ,superuser: true ,replication: true ,createdb: true ,createrole: true ,bypassrls: true }
          - { name: authenticator              ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: false  ,roles: [ dbrole_admin, authenticated ,anon ,service_role ] }
          - { name: supabase_auth_admin        ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: false  ,roles: [ dbrole_admin ] ,createrole: true }
          - { name: supabase_storage_admin     ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: false  ,roles: [ dbrole_admin, authenticated ,anon ,service_role ] ,createrole: true }
          - { name: supabase_functions_admin   ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: false  ,roles: [ dbrole_admin ] ,createrole: true }
          - { name: supabase_replication_admin ,password: 'DBUser.Supa' ,replication: true ,roles: [ dbrole_admin ]}
          - { name: supabase_etl_admin         ,password: 'DBUser.Supa' ,replication: true ,roles: [ pg_read_all_data ]}
          - { name: supabase_read_only_user    ,password: 'DBUser.Supa' ,bypassrls: true ,roles: [ pg_read_all_data, dbrole_readonly ]}
        pg_databases:
          - name: postgres
            baseline: supabase.sql
            owner: supabase_admin
            comment: supabase postgres database
            schemas: [ extensions ,auth ,realtime ,storage ,graphql_public ,supabase_functions ,_analytics ,_realtime ]
            extensions:
              - { name: pgcrypto       ,schema: extensions }
              - { name: pg_net         ,schema: extensions }
              - { name: pgjwt          ,schema: extensions }
              - { name: uuid-ossp      ,schema: extensions }
              - { name: pgsodium       ,schema: extensions }
              - { name: supabase_vault ,schema: extensions }
              - { name: pg_graphql     ,schema: extensions }
              - { name: pg_jsonschema  ,schema: extensions }
              - { name: wrappers       ,schema: extensions }
              - { name: http           ,schema: extensions }
              - { name: pg_cron        ,schema: extensions }
              - { name: timescaledb    ,schema: extensions }
              - { name: pg_tle         ,schema: extensions }
              - { name: vector         ,schema: extensions }
              - { name: pgmq           ,schema: extensions }
          - { name: supabase ,owner: supabase_admin ,comment: supabase analytics database }
        pg_libs: 'timescaledb, pgsodium, plpgsql, plpgsql_check, pg_cron, pg_net, pg_stat_statements, auto_explain, pg_wait_sampling, pg_tle, plan_filter'
        pg_extensions: [ pg18-main ,pg18-time ,pg18-gis ,pg18-rag ,pg18-fts ,pg18-olap ,pg18-feat ,pg18-lang ,pg18-type ,pg18-util ,pg18-func ,pg18-admin ,pg18-stat ,pg18-sec ,pg18-fdw ,pg18-sim ,pg18-etl]
        pg_parameters: { cron.database_name: postgres }
        pg_hba_rules:
          - { user: all ,db: postgres  ,addr: intra         ,auth: pwd ,title: 'allow supabase access from intranet'    }
          - { user: all ,db: postgres  ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow access from local docker network' }
        node_crontab:
          - '00 01 * * * postgres /pg/bin/pg-backup full'
          - '*  *  * * * postgres /pg/bin/supa-kick'    # 处理 _analytics 延迟问题

    #----------------------------------------------#
    # Supabase 无状态容器 (默认用户密码: supabase/pigsty)
    #----------------------------------------------#
    supabase:
      hosts: { 10.10.10.10: {} }
      vars:
        docker_enabled: true
        app: supabase
        apps:
          supabase:
            conf:
              # 重要:修改 JWT_SECRET 并重新生成凭据!
              JWT_SECRET: your-super-secret-jwt-token-with-at-least-32-characters-long
              ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              SERVICE_ROLE_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              PG_META_CRYPTO_KEY: your-encryption-key-32-chars-min
              DASHBOARD_USERNAME: supabase
              DASHBOARD_PASSWORD: pigsty
              LOGFLARE_PUBLIC_ACCESS_TOKEN: 1234567890abcdef...
              LOGFLARE_PRIVATE_ACCESS_TOKEN: fedcba0987654321...

              # PostgreSQL 连接配置
              POSTGRES_HOST: 10.10.10.10
              POSTGRES_PORT: 5436
              POSTGRES_DB: postgres
              POSTGRES_PASSWORD: DBUser.Supa

              # Supabase 外部访问地址
              SITE_URL: https://supa.pigsty
              API_EXTERNAL_URL: https://supa.pigsty
              SUPABASE_PUBLIC_URL: https://supa.pigsty

              # S3/MinIO 文件存储配置
              S3_BUCKET: data
              S3_ENDPOINT: https://sss.pigsty:9000
              S3_ACCESS_KEY: s3user_data
              S3_SECRET_KEY: S3User.Data
              MINIO_DOMAIN_IP: 10.10.10.10

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    infra_portal:
      home    : { domain: i.pigsty }
      minio   : { domain: m.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }
      supa    : { domain: supa.pigsty ,endpoint: "10.10.10.10:8000" ,websocket: true ,certbot: supa.pigsty }

    node_etc_hosts: [ "10.10.10.10 i.pigsty sss.pigsty supa.pigsty" ]

    # 使用 MinIO 作为 PostgreSQL 备份存储
    minio_endpoint: https://sss.pigsty:9000
    pgbackrest_method: minio
    pgbackrest_repo:
      minio:
        type: s3
        s3_endpoint: sss.pigsty
        s3_bucket: pgsql
        s3_key: pgbackrest
        s3_key_secret: S3User.Backup
        # ... 更多配置

    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    grafana_view_password: DBUser.Viewer
    pg_admin_password: DBUser.DBA
    pg_monitor_password: DBUser.Monitor
    pg_replication_password: DBUser.Replicator
    patroni_password: Patroni.API
    haproxy_admin_password: pigsty
    minio_secret_key: S3User.MinIO
    etcd_root_password: Etcd.Root

配置解读

supabase 模板提供了完整的 Supabase 自建方案,让您可以在自己的基础设施上运行这个开源 Firebase 替代品。

架构组成

  • PostgreSQL:Pigsty 托管的生产级 PostgreSQL(支持高可用)
  • Docker 容器:Supabase 无状态服务(Auth、Storage、Realtime、Edge Functions 等)
  • MinIO:S3 兼容的对象存储,用于文件存储和 PostgreSQL 备份
  • Nginx:反向代理和 HTTPS 终止

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 替代 Supabase 自带的数据库容器
  • 支持 PostgreSQL 高可用(可扩展为三节点集群)
  • 安装全部 Supabase 所需扩展(pg_net、pgjwt、pg_graphql、vector 等)
  • 集成 MinIO 对象存储用于文件上传和备份
  • 支持 HTTPS 和 Let’s Encrypt 自动证书

部署步骤

curl https://repo.pigsty.io/get | bash   # 下载 Pigsty
./configure -c supabase                   # 使用 supabase 配置模板
./install.yml                             # 安装 Pigsty、PostgreSQL、MinIO
./docker.yml                              # 安装 Docker
./app.yml                                 # 启动 Supabase 容器

访问方式

# Supabase Studio
https://supa.pigsty   (用户名: supabase, 密码: pigsty)

# 直接连接 PostgreSQL
psql postgres://supabase_admin:DBUser.Supa@10.10.10.10:5432/postgres

适用场景

  • 需要自建 BaaS (Backend as a Service) 平台
  • 希望完全掌控数据和基础设施
  • 需要企业级 PostgreSQL 高可用和备份
  • 对 Supabase 云服务有合规或成本考虑

注意事项

  • 必须修改 JWT_SECRET:使用至少 32 字符的随机字符串,并重新生成 ANON_KEY 和 SERVICE_ROLE_KEY
  • 需要配置正确的域名(SITE_URLAPI_EXTERNAL_URL
  • 生产环境建议启用 HTTPS(可使用 certbot 自动签发证书)
  • Docker 网络需要能访问 PostgreSQL(已配置 172.17.0.0/16 HBA 规则)

2 - dify

使用 Pigsty 托管的 PostgreSQL 部署 Dify AI 应用开发平台

dify 配置模板提供了自建 Dify AI 应用开发平台的参考配置,使用 Pigsty 托管的 PostgreSQL 和 pgvector 作为向量存储。

更多细节,请参考 Dify 部署教程


配置概览

  • 配置名称: dify(位于 app/dify.yml
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Dify
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:meta

启用方式:

./configure -c app/dify [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/dify.yml

all:
  children:

    # Dify 应用
    dify:
      hosts: { 10.10.10.10: {} }
      vars:
        app: dify
        apps:
          dify:
            file:
              - { path: /data/dify ,state: directory ,mode: 0755 }
            conf:
              NGINX_SERVER_NAME: dify.pigsty
              SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U  # 请修改!
              DIFY_PORT: 5001
              DIFY_DATA: /data/dify

              # 数据库配置
              DB_USERNAME: dify
              DB_PASSWORD: difyai123456
              DB_HOST: 10.10.10.10
              DB_PORT: 5432
              DB_DATABASE: dify

              # pgvector 向量存储配置
              VECTOR_STORE: pgvector
              PGVECTOR_HOST: 10.10.10.10
              PGVECTOR_PORT: 5432
              PGVECTOR_USER: dify
              PGVECTOR_PASSWORD: difyai123456
              PGVECTOR_DATABASE: dify

    # PostgreSQL 数据库
    pg-meta:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-meta
        pg_users:
          - { name: dify ,password: difyai123456 ,pgbouncer: true ,roles: [ dbrole_admin ] ,superuser: true }
        pg_databases:
          - { name: dify        ,owner: dify ,revokeconn: true ,comment: dify main database  }
          - { name: dify_plugin ,owner: dify ,revokeconn: true ,comment: dify plugin database }
        pg_hba_rules:
          - { user: dify ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow dify from docker' }

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    docker_enabled: true
    infra_portal:
      home : { domain: i.pigsty }
      dify : { domain: dify.pigsty ,endpoint: "10.10.10.10:5001" ,websocket: true ,certbot: dify.pigsty }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql
    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

dify 模板提供了 Dify AI 应用开发平台的一键部署方案。

Dify 是什么

  • 开源的 LLM 应用开发平台
  • 支持 RAG、Agent、Workflow 等 AI 应用模式
  • 提供可视化的 Prompt 编排和应用构建界面
  • 支持多种 LLM 后端(OpenAI、Claude、本地模型等)

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 替代 Dify 自带的数据库
  • 使用 pgvector 作为向量存储(替代 Weaviate/Qdrant)
  • 支持 HTTPS 和自定义域名
  • 数据持久化到独立目录 /data/dify

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/dify
vi pigsty.yml                    # 修改密码和域名
./install.yml                    # 安装 Pigsty 和 PostgreSQL
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Dify 容器

访问方式

# Dify Web 界面
http://dify.pigsty:5001

# 或通过 Nginx 代理
https://dify.pigsty

适用场景

  • 需要自建 AI 应用开发平台
  • 希望使用 PostgreSQL + pgvector 作为向量存储
  • 需要完全掌控 AI 应用的数据和基础设施
  • 企业内部 AI 应用开发和部署

注意事项

  • 必须修改 SECRET_KEY,使用 openssl rand -base64 42 生成
  • 需要配置 LLM API 密钥(如 OpenAI API Key)
  • Docker 网络需要能访问 PostgreSQL(已配置 172.17.0.0/16 HBA 规则)
  • 建议配置代理以加速 Python 包下载

3 - odoo

使用 Pigsty 托管的 PostgreSQL 部署 Odoo 开源 ERP 系统

odoo 配置模板提供了自建 Odoo 开源 ERP 系统的参考配置,使用 Pigsty 托管的 PostgreSQL 作为数据库。

更多细节,请参考 Odoo 部署教程


配置概览

  • 配置名称: odoo(位于 app/odoo.yml
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Odoo ERP
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:meta

启用方式:

./configure -c app/odoo [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/odoo.yml

all:
  children:

    # Odoo 应用 (默认用户密码: admin/admin)
    odoo:
      hosts: { 10.10.10.10: {} }
      vars:
        app: odoo
        apps:
          odoo:
            file:
              - { path: /data/odoo         ,state: directory, owner: 100, group: 101 }
              - { path: /data/odoo/webdata ,state: directory, owner: 100, group: 101 }
              - { path: /data/odoo/addons  ,state: directory, owner: 100, group: 101 }
            conf:
              PG_HOST: 10.10.10.10
              PG_PORT: 5432
              PG_USERNAME: odoo
              PG_PASSWORD: DBUser.Odoo
              ODOO_PORT: 8069
              ODOO_DATA: /data/odoo/webdata
              ODOO_ADDONS: /data/odoo/addons
              ODOO_DBNAME: odoo
              ODOO_VERSION: 19.0

    # Odoo 数据库
    pg-odoo:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-odoo
        pg_users:
          - { name: odoo    ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_admin ] ,createdb: true }
          - { name: odoo_ro ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_readonly ] }
          - { name: odoo_rw ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_readwrite ] }
        pg_databases:
          - { name: odoo ,owner: odoo ,revokeconn: true ,comment: odoo main database }
        pg_hba_rules:
          - { user: all ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow access from docker' }

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    docker_enabled: true
    infra_portal:
      home : { domain: i.pigsty }
      odoo : { domain: odoo.pigsty ,endpoint: "10.10.10.10:8069" ,websocket: true ,certbot: odoo.pigsty }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql
    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

odoo 模板提供了 Odoo 开源 ERP 系统的一键部署方案。

Odoo 是什么

  • 全球最流行的开源 ERP 系统
  • 覆盖 CRM、销售、采购、库存、财务、HR 等企业管理模块
  • 支持数千个社区和官方应用扩展
  • 提供 Web 界面和移动端支持

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 替代 Odoo 自带的数据库
  • 支持 Odoo 19.0 最新版本
  • 数据持久化到独立目录 /data/odoo
  • 支持自定义插件目录 /data/odoo/addons

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/odoo
vi pigsty.yml                    # 修改密码和域名
./install.yml                    # 安装 Pigsty 和 PostgreSQL
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Odoo 容器

访问方式

# Odoo Web 界面
http://odoo.pigsty:8069

# 默认管理员账号
用户名: admin
密码: admin (首次登录时设置)

适用场景

  • 中小企业 ERP 系统部署
  • 需要完整的企业管理功能套件
  • 希望自建而非使用 SaaS 服务
  • 需要企业级 PostgreSQL 高可用和备份

注意事项

  • Odoo 容器以 uid=100, gid=101 运行,数据目录需要正确的权限
  • 首次访问时需要创建数据库和设置管理员密码
  • 生产环境建议启用 HTTPS
  • 可通过 /data/odoo/addons 安装自定义模块

4 - electric

使用 Pigsty 托管的 PostgreSQL 部署 Electric 实时同步服务

electric 配置模板提供了部署 Electric SQL 实时同步服务的参考配置,实现 PostgreSQL 到客户端的实时数据同步。

更多细节,请参考 Electric 部署教程


配置概览

  • 配置名称: electric(位于 app/electric.yml
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Electric 实时同步
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:meta

启用方式:

./configure -c app/electric [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/electric.yml

all:
  children:

    infra:
      hosts: { 10.10.10.10: { infra_seq: 1 } }
      vars:
        app: electric
        apps:
          electric:
            conf:
              DATABASE_URL: 'postgresql://electric:DBUser.Electric@10.10.10.10:5432/electric?sslmode=require'
              ELECTRIC_PORT: 8002
              ELECTRIC_PROMETHEUS_PORT: 8003
              ELECTRIC_INSECURE: true

    etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

    pg-meta:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-meta
        pg_users:
          - { name: electric ,password: DBUser.Electric ,pgbouncer: true ,replication: true ,roles: [dbrole_admin] }
        pg_databases:
          - { name: electric ,owner: electric }
        pg_hba_rules:
          - { user: electric ,db: replication ,addr: infra ,auth: ssl ,title: 'allow electric ssl access' }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    docker_enabled: true
    infra_portal:
      home     : { domain: i.pigsty }
      electric : { domain: elec.pigsty ,endpoint: "${admin_ip}:8002" ,websocket: true }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql
    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

electric 模板提供了 Electric SQL 实时同步服务的一键部署方案。

Electric 是什么

  • PostgreSQL 到客户端的实时数据同步服务
  • 支持离线优先 (Local-first) 应用架构
  • 通过逻辑复制实时同步数据变更
  • 提供 HTTP API 供前端应用消费

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 作为数据源
  • 通过逻辑复制 (Logical Replication) 捕获数据变更
  • 支持 SSL 加密连接
  • 内置 Prometheus 指标端点

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/electric
vi pigsty.yml                    # 修改密码和域名
./install.yml                    # 安装 Pigsty 和 PostgreSQL
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Electric 容器

访问方式

# Electric API 端点
http://elec.pigsty:8002

# Prometheus 指标
http://elec.pigsty:8003/metrics

# 在前端应用中使用
const electric = new ElectricClient({
  url: 'http://elec.pigsty:8002'
});

适用场景

  • 构建离线优先 (Local-first) 应用
  • 需要实时数据同步到客户端
  • 移动应用和 PWA 的数据同步
  • 协作应用的实时更新

注意事项

  • Electric 用户需要 replication 权限
  • 需要启用 PostgreSQL 逻辑复制
  • 生产环境建议使用 SSL 连接(已配置 sslmode=require
  • 可通过 ELECTRIC_INSECURE: false 启用安全模式

5 - maybe

使用 Pigsty 托管的 PostgreSQL 部署 Maybe 个人财务管理系统

maybe 配置模板提供了部署 Maybe 开源个人财务管理系统的参考配置,使用 Pigsty 托管的 PostgreSQL 作为数据库。

更多细节,请参考 Maybe 部署教程


配置概览

  • 配置名称: maybe(位于 app/maybe.yml
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Maybe 财务管理
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:meta

启用方式:

./configure -c app/maybe [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/maybe.yml

all:
  children:

    # Maybe 应用 (个人财务管理)
    maybe:
      hosts: { 10.10.10.10: {} }
      vars:
        app: maybe
        apps:
          maybe:
            file:
              - { path: /data/maybe         ,state: directory ,mode: 0755 }
              - { path: /data/maybe/storage ,state: directory ,mode: 0755 }
            conf:
              MAYBE_VERSION: latest
              MAYBE_PORT: 5002
              MAYBE_DATA: /data/maybe
              APP_DOMAIN: maybe.pigsty

              # 必须修改:使用 openssl rand -hex 64 生成
              SECRET_KEY_BASE: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U

              # 数据库配置
              DB_HOST: 10.10.10.10
              DB_PORT: 5432
              DB_USERNAME: maybe
              DB_PASSWORD: MaybeFinance2025
              DB_DATABASE: maybe_production

    # Maybe 数据库
    pg-maybe:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-maybe
        pg_users:
          - { name: maybe    ,password: MaybeFinance2025 ,pgbouncer: true ,roles: [ dbrole_admin ] ,createdb: true }
          - { name: maybe_ro ,password: MaybeFinance2025 ,pgbouncer: true ,roles: [ dbrole_readonly ] }
          - { name: maybe_rw ,password: MaybeFinance2025 ,pgbouncer: true ,roles: [ dbrole_readwrite ] }
        pg_databases:
          - { name: maybe_production ,owner: maybe ,revokeconn: true ,comment: maybe main database }
        pg_hba_rules:
          - { user: maybe ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow maybe from docker' }

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    docker_enabled: true
    infra_portal:
      home  : { domain: i.pigsty }
      maybe : { domain: maybe.pigsty ,endpoint: "10.10.10.10:5002" ,websocket: true }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

maybe 模板提供了 Maybe 开源个人财务管理系统的一键部署方案。

Maybe 是什么

  • 开源的个人和家庭财务管理系统
  • 支持多账户、多币种资产追踪
  • 提供投资组合分析和净值计算
  • 美观现代的 Web 界面

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 替代 Maybe 自带的数据库
  • 数据持久化到独立目录 /data/maybe
  • 支持 HTTPS 和自定义域名
  • 提供多用户权限管理

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/maybe
vi pigsty.yml                    # 修改密码和域名
./install.yml                    # 安装 Pigsty 和 PostgreSQL
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Maybe 容器

访问方式

# Maybe Web 界面
http://maybe.pigsty:5002

# 或通过 Nginx 代理
https://maybe.pigsty

适用场景

  • 个人或家庭财务管理
  • 投资组合追踪和分析
  • 多账户资产汇总
  • 替代 Mint、YNAB 等商业服务

注意事项

  • 必须修改 SECRET_KEY_BASE,使用 openssl rand -hex 64 生成
  • 首次访问时需要注册管理员账号
  • 可选配置 Synth API 以获取股票价格数据
  • Docker 网络需要能访问 PostgreSQL

6 - teable

使用 Pigsty 托管的 PostgreSQL 部署 Teable 开源 Airtable 替代品

teable 配置模板提供了部署 Teable 开源无代码数据库的参考配置,使用 Pigsty 托管的 PostgreSQL 作为数据库。

更多细节,请参考 Teable 部署教程


配置概览

  • 配置名称: teable(位于 app/teable.yml
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Teable
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64
  • 相关配置:meta

启用方式:

./configure -c app/teable [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/teable.yml

all:
  children:

    # Teable 应用
    teable:
      hosts: { 10.10.10.10: {} }
      vars:
        app: teable
        apps:
          teable:
            conf:
              POSTGRES_HOST: "10.10.10.10"
              POSTGRES_PORT: "5432"
              POSTGRES_DB: "teable"
              POSTGRES_USER: "dbuser_teable"
              POSTGRES_PASSWORD: "DBUser.Teable"
              PRISMA_DATABASE_URL: "postgresql://dbuser_teable:DBUser.Teable@10.10.10.10:5432/teable"
              PUBLIC_ORIGIN: "http://tea.pigsty"
              PUBLIC_DATABASE_PROXY: "10.10.10.10:5432"
              TIMEZONE: "UTC"

    # Teable 数据库
    pg-meta:
      hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
      vars:
        pg_cluster: pg-meta
        pg_users:
          - { name: dbuser_teable ,password: DBUser.Teable ,pgbouncer: true ,roles: [ dbrole_admin ] ,superuser: true }
        pg_databases:
          - { name: teable ,owner: dbuser_teable ,comment: teable database }
        pg_hba_rules:
          - { user: teable ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow teable from docker' }

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
    minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    docker_enabled: true
    infra_portal:
      home   : { domain: i.pigsty }
      teable : { domain: tea.pigsty ,endpoint: "10.10.10.10:8890" ,websocket: true ,certbot: tea.pigsty }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql
    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

teable 模板提供了 Teable 开源无代码数据库的一键部署方案。

Teable 是什么

  • 开源的 Airtable 替代品
  • 基于 PostgreSQL 的无代码数据库
  • 支持表格、看板、日历、表单等多种视图
  • 提供 API 和自动化工作流

关键特性

  • 使用 Pigsty 管理的 PostgreSQL 作为底层存储
  • 数据实际存储在真实的 PostgreSQL 表中
  • 支持 SQL 直接查询数据
  • 可与其他 PostgreSQL 工具和扩展集成

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/teable
vi pigsty.yml                    # 修改密码和域名
./install.yml                    # 安装 Pigsty 和 PostgreSQL
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Teable 容器

访问方式

# Teable Web 界面
http://tea.pigsty:8890

# 或通过 Nginx 代理
https://tea.pigsty

# 同时可以直接 SQL 访问底层数据
psql postgresql://dbuser_teable:DBUser.Teable@10.10.10.10:5432/teable

适用场景

  • 需要 Airtable 类似功能但希望自建
  • 团队协作数据管理
  • 需要同时支持 API 和 SQL 访问
  • 希望数据存储在真实 PostgreSQL 中

注意事项

  • Teable 用户需要 superuser 权限
  • 需要正确配置 PUBLIC_ORIGIN 为外部访问地址
  • 支持邮件通知(可选配置 SMTP)
  • Docker 网络需要能访问 PostgreSQL

7 - registry

使用 Pigsty 部署 Docker Registry 镜像代理和私有仓库

registry 配置模板提供了部署 Docker Registry 镜像代理的参考配置,可用作 Docker Hub 镜像加速或私有镜像仓库。

更多细节,请参考 Registry 部署教程


配置概览

  • 配置名称: registry(位于 app/registry.yml
  • 节点数量: 单节点
  • 配置说明:部署 Docker Registry 镜像代理和私有仓库
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64, aarch64
  • 相关配置:meta

启用方式:

./configure -c app/registry [-i <primary_ip>]

配置内容

源文件地址:pigsty/conf/app/registry.yml

all:
  children:

    # Docker Registry 镜像代理
    registry:
      hosts: { 10.10.10.10: {} }
      vars:
        app: registry
        apps:
          registry:
            file:
              - { path: /data/registry ,state: directory ,mode: 0755 }
            conf:
              REGISTRY_DATA: /data/registry
              REGISTRY_PORT: 5000
              REGISTRY_UI_PORT: 5080
              REGISTRY_STORAGE_DELETE_ENABLED: true
              REGISTRY_LOG_LEVEL: info
              REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io
              REGISTRY_PROXY_TTL: 168h    # 缓存 7 天

    infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
    etcd:  { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

  vars:
    version: v4.0.0
    admin_ip: 10.10.10.10
    region: default
    infra_portal:
      home : { domain: i.pigsty }
      registry    : { domain: d.pigsty   ,endpoint: "10.10.10.10:5000" ,certbot: d.pigsty }
      registry-ui : { domain: dui.pigsty ,endpoint: "10.10.10.10:5080" }

    repo_enabled: false
    node_repo_modules: node,infra,pgsql
    pg_version: 18

    #----------------------------------------------#
    # PASSWORD
    #----------------------------------------------#
    grafana_admin_password: pigsty
    pg_admin_password: DBUser.DBA
    # ... 更多密码配置

配置解读

registry 模板提供了 Docker Registry 镜像代理的一键部署方案。

Registry 是什么

  • Docker 官方的镜像仓库实现
  • 可作为 Docker Hub 的拉取代理(Pull-through Cache)
  • 也可作为私有镜像仓库使用
  • 支持镜像缓存和本地存储

关键特性

  • 作为 Docker Hub 的代理缓存,加速镜像拉取
  • 缓存镜像到本地存储 /data/registry
  • 提供 Web UI 界面查看缓存的镜像
  • 支持自定义缓存过期时间

部署步骤

curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/registry
vi pigsty.yml                    # 修改域名
./install.yml                    # 安装 Pigsty 基础设施
./docker.yml                     # 安装 Docker
./app.yml                        # 启动 Registry 容器

配置 Docker 客户端

# 编辑 /etc/docker/daemon.json
{
  "registry-mirrors": ["https://d.pigsty"],
  "insecure-registries": ["d.pigsty"]
}

# 重启 Docker
sudo systemctl restart docker

访问方式

# Registry API
https://d.pigsty/v2/_catalog

# Web UI
http://dui.pigsty:5080

# 拉取镜像(自动使用代理)
docker pull nginx:latest

适用场景

  • 加速 Docker 镜像拉取(尤其在中国大陆)
  • 减少对外网络依赖
  • 企业内部私有镜像仓库
  • 离线环境镜像分发

注意事项

  • 需要足够的磁盘空间存储缓存镜像
  • 默认缓存 7 天(REGISTRY_PROXY_TTL: 168h
  • 可配置 HTTPS 证书(通过 certbot)
  • 也可作为推送目标存储私有镜像