Pigsty v4.1.0
Major/minor upgrade support, Agent-Native CLI, stricter default firewall policy
72 commits, 252 files changed, +5,744 / -5,015 lines (v4.0.0..v4.1.0, 2026-02-02 ~ 2026-02-13)
Highlights
- PostgreSQL minor update: 18.2, 17.8, 16.12, 15.16, 14.21.
- Default EL minors updated to
9.7 / 10.1, Debian minors updated to12.13 / 13.3. - Added 7 new extensions, bringing total support to 451 extensions.
pigmoved from a traditional script interface to an Agent-Native CLI (1.0.0 -> 1.1.0), with explicit context and JSON/YAML output.pignow provides unified major/minor upgrade workflows for PostgreSQL and OS lifecycle updates.pg_exporterupgraded to v1.2.0 (1.1.2 -> 1.2.0), with PG17/18 metric pipeline and unit fixes.- Default firewall security policy updated:
node_firewall_modenow defaults tozone, andnode_firewall_public_portdefault changed from[22,80,443,5432]to[22,80,443]. - Focused PGSQL/PGCAT Grafana usability fixes: dynamic datasource
$dsn, schema-level drilldown, age metrics, link mapping consistency. - Added one-click Mattermost application template, including database/storage/portal and optional PGFS/JuiceFS options.
- Refactored
infra-rmuninstall flow with segmentedderegistercleanup for Victoria targets, Grafana datasources, and Vector logs. - Optimized default PostgreSQL autovacuum thresholds to reduce excessive vacuum/analyze on small tables.
- Fixed FD limit chain: added
fs.nr_open=8Mand unifiedLimitNOFILE=8Mto avoid startup failures from systemd/setrlimit. - Updated VIBE defaults: Jupyter disabled by default; Claude Code managed via npm package.
Version Updates
- Pigsty version:
v4.0.0 -> v4.1.0 pigCLI:1.0.0 -> 1.1.0(Agent-Native + major/minor upgrade support)pg_exporter:1.1.2 -> 1.2.0- Default EL minors:
9.6/10.0 -> 9.7/10.1 - Default Debian minors:
12.12/13.1 -> 12.13/13.3
Extension Updates
- RPM Changelog 2026-02-12
- DEB Changelog 2026-02-12
- timescaledb
2.24.0 -> 2.25.0 - pg_search
0.21.4 -> 0.21.7 - pgmq
1.9.0 -> 1.10.0 - pg_textsearch
0.4.0 -> 0.5.0 - pljs
1.0.4 -> 1.0.5 - pg_track_optimizer
0.9.1(new) - nominatim_fdw
1.1.0(new) - pg_utl_smtp
1.0.0(new) - pg_strict
1.0.2(new) - pgmb
1.0.0(new) - pg_pwhash (new support)
- informix_fdw (new support)
INFRA Component Versions
| Package | Version | Package | Version |
|---|---|---|---|
| victoria-metrics | 1.135.0 | victoria-logs | 1.45.0 |
| vector | 0.53.0 | grafana | 12.3.2 |
| alertmanager | 0.31.1 | etcd | 3.6.7 |
| duckdb | 1.4.4 | pg_exporter | 1.2.0 |
| pig | 1.1.0 | claude | 2.1.37 |
| opencode | 1.1.59 | uv | 0.10.0 |
| code-server | 4.108.2 | caddy | 2.10.2 |
| hugo | 0.155.2 | cloudflared | 2026.2.0 |
| headscale | 0.28.0 |
API Changes
- Corrected template guard for
io_method/io_workersfrompg_version >= 17topg_version >= 18. - Fixed PG18 guards for
idle_replication_slot_timeout/initdb --no-data-checksums. - Broadened
maintenance_io_concurrencyeffective range toPG13+. - Raised
autovacuum_vacuum_threshold:oltp/crit/tinyfrom 50 to 500,olapto 1000. - Raised
autovacuum_analyze_threshold:oltp/crit/tinyfrom 50 to 250,olapto 500. - Increased default
checkpoint_completion_targetfrom0.90to0.95. - Added
fs.nr_open=8388608in node tuned templates and alignedfs.file-max / fs.nr_open / LimitNOFILE. - Changed postgres/patroni/minio systemd
LimitNOFILEfrom16777216to8388608. - Added
fs.nr_open: 8388608into defaultnode_sysctl_params. - Changed
node_firewall_modedefault fromnonetozone: firewall enabled by default, intranet trusted, and onlynode_firewall_public_portexposed publicly; setnonefor fully self-managed firewall. - Changed
node_firewall_public_portdefault from[22,80,443,5432]to[22,80,443]; add5432explicitly only when public DB access is required. Firewall rules are add-only, so existing nodes that already exposed5432must remove it manually. Single-node experience templates (such asmeta/vibe) explicitly override and keep5432for remote usage. - Added
bin/validatechecks forpg_databases[*].parametersandpg_hba_rules[*].order; fixed HBA validation not returning failure properly. - Added segmented tags in
infra-rm.yml:deregister,config,env, etc. - Updated VIBE defaults:
jupyter_enabled=false,npm_packagesinclude@anthropic-ai/claude-codeandhappy-coder, plusCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1. - PgBouncer alias cleanup:
pool_size_reserve -> pool_reserve,pool_max_db_conn -> pool_connlimit.
Compatibility Fixes (Deduplicated)
- Note: repeated regressions/re-fixes of the same issue are counted once and merged by problem domain below.
- Fixed Redis
replicaofempty-guard logic and systemd stop behavior. - Fixed schema/table/sequence qualification, identifier quoting, and logging format safety in
pg_migration. - Fixed restart targets and variable usage in pgsql role handlers.
- Fixed blackbox config filename cleanup item and pgAdmin pgpass file format.
- Made
pg_exporterstartup non-blocking to avoid slowing main flow when exporter fails. - Simplified VIP CIDR parsing: default mask
24when omitted. - Increased MinIO health-check retries from
3to5. - Switched node hostname setup to Ansible hostname module instead of shell calls.
- Fixed
.envformat forapp/electricandapp/pg_exporterto standardKEY=VALUE. - Fixed
pg_crontabsyntax error inpigsty.yml. - Updated ETCD docs to clarify default TLS vs optional mTLS semantics.
- Fixed
repo-addargument passing, Debian CN mirror component compatibility, andbin/psql.pyPython 3 compatibility. - Hardened redis-exporter credential file permissions.
pgsql-user.ymlnow masks credential logs (no_log) on sensitive steps.- Fixed gate conditions when
pg_monitorregisters Victoria targets. - Changed
pg_removebackup cleanup to cluster-level directory to avoid deleting other cluster backups.
Commit List (v4.0.0..v4.1.0, 72 commits, 2026-02-02 ~ 2026-02-13)
Thanks
- Thanks to @l2dy for many valuable suggestions and issues.