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

返回本页常规视图.

应用模板

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

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

模板 说明
supabase Supabase 自托管开源 BaaS
dify Dify AI 应用开发平台
odoo Odoo 开源 ERP 系统
electric Electric 实时同步引擎
maybe Maybe 个人财务管理
teable Teable 无代码数据库
registry Docker Registry 镜像代理

1 - supabase

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

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

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


配置概览

  • 配置名称: supabase
  • 节点数量: 单节点
  • 配置说明:使用 Pigsty 托管的 PostgreSQL 自建 Supabase
  • 适用系统:el8, el9, el10, d12, d13, 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)
  • 也可作为推送目标存储私有镜像