Compare commits

...
3 Commits
Author SHA1 Message Date
naturallaw777 70ccf1eba1 chore(release): prepare v1.1.7 2026-09-21 18:09:10 -05:00
naturallaw777 f6caa2ff32 updated nixpkgs 2026-09-21 18:07:21 -05:00
Sovran Contributor 8bc325b148 postgresql: drop per-database autovacuum ALTERs (rejected by Postgres)
Follow-up to the previous two commits: the ALTER DATABASE ... SET
autovacuum_* commands fail at boot with

  ERROR: parameter "autovacuum_vacuum_scale_factor" cannot be changed now

and take matrix-synapse-db-tune.service (and nextcloud-db-init.service)
down with them.

Root cause: ALTER DATABASE/ROLE ... SET validates through
set_config_option() with an interactive context, and guc.c rejects any
PGC_SIGHUP parameter set that way. All autovacuum_* GUCs are
SIGHUP-context, so per-database scoping is impossible for them — only
USERSET-level parameters (e.g. work_mem, statement_timeout) can be set
per-database.

Nothing is lost: the same values are already set cluster-wide in
configuration.nix, which covers both nextclouddb and matrix-synapse.
Remove the ALTERs from nextcloud-db-init and delete the now-purposeless
matrix-synapse-db-tune service.
2026-09-21 14:21:01 -05:00
6 changed files with 52 additions and 65 deletions

No files matched your search

+16
View File
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
---
## [1.1.7] - 2026-09-21
### Added
- Postgresql: drop per-database autovacuum ALTERs (rejected by Postgres)
- Synapse: performance tuning for 32 GB Server+Desktop hosts
- Nextcloud, postgresql: fix Nextcloud 35 DB warnings on 32 GB hosts
- Clean up flake.nix by removing comments and LiveKit override
### Changed
- Updated nixpkgs
- Updated to php85 and fixes
- Updated to proper syntax to prevent build errors.
- Updated flake lock which contains Bisq 1.10.8 and Bisq2 2.1.13
[1.1.7]: https://git.sovransystems.com/Sovran_Systems/Sovran_SystemsOS/releases/tag/v1.1.7
## [1.1.6] - 2026-09-15
### Added
+12 -12
View File
@@ -21,9 +21,9 @@ Lightning infrastructure, private cloud, and communications platform when you
are ready.
[Visit the Website](https://sovransystems.com) ·
[Download the ISO](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.6.iso) ·
[Download the ISO](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.7.iso) ·
[Try it safely in a VM](#try-it-first-in-a-virtual-machine) ·
[Verify the Download](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.6.iso.sha256) ·
[Verify the Download](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.7.iso.sha256) ·
[Build from Source](#build-from-source)
<img src="assets/desktop-screenshot.webp" alt="Sovran_SystemsOS private Bitcoin desktop" width="800" />
@@ -345,8 +345,8 @@ with an imaging application such as [Balena Etcher](https://etcher.balena.io).
### 1. Download the ISO and checksum
- [Download Sovran_SystemsOS-1.1.6.iso](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.6.iso)
- [Download Sovran_SystemsOS-1.1.6.iso.sha256](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.6.iso.sha256)
- [Download Sovran_SystemsOS-1.1.7.iso](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.7.iso)
- [Download Sovran_SystemsOS-1.1.7.iso.sha256](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.7.iso.sha256)
The download may take some time. Do not rename or modify the ISO before
verifying it, and keep both files in the same folder.
@@ -364,16 +364,16 @@ checksum exactly.
Open a terminal in the download folder and run:
```bash
sha256sum --check Sovran_SystemsOS-1.1.6.iso.sha256
sha256sum --check Sovran_SystemsOS-1.1.7.iso.sha256
```
A successful comparison reports:
```text
Sovran_SystemsOS-1.1.6.iso: OK
Sovran_SystemsOS-1.1.7.iso: OK
```
You can also run `sha256sum Sovran_SystemsOS-1.1.6.iso` and compare the output
You can also run `sha256sum Sovran_SystemsOS-1.1.7.iso` and compare the output
against the checksum file manually.
</details>
@@ -384,11 +384,11 @@ against the checksum file manually.
Open Terminal in the download folder and run:
```bash
shasum -a 256 Sovran_SystemsOS-1.1.6.iso
shasum -a 256 Sovran_SystemsOS-1.1.7.iso
```
Compare the value shown in Terminal with the value inside
`Sovran_SystemsOS-1.1.6.iso.sha256`.
`Sovran_SystemsOS-1.1.7.iso.sha256`.
</details>
@@ -398,7 +398,7 @@ Compare the value shown in Terminal with the value inside
Open PowerShell in the download folder and run:
```powershell
Get-FileHash .\Sovran_SystemsOS-1.1.6.iso -Algorithm SHA256
Get-FileHash .\Sovran_SystemsOS-1.1.7.iso -Algorithm SHA256
```
Compare the value under `Hash` with the published checksum.
@@ -413,7 +413,7 @@ match exactly.
1. Download and install [Balena Etcher](https://etcher.balena.io), then
connect the USB drive.
2. Choose **Flash from file** and select `Sovran_SystemsOS-1.1.6.iso`.
2. Choose **Flash from file** and select `Sovran_SystemsOS-1.1.7.iso`.
3. Choose **Select target**, select the USB drive, and review your selection
carefully.
4. Choose **Flash** and wait for the writing and verification process to
@@ -856,7 +856,7 @@ primary location for collaboration. Please read our
## Privacy. Sovereignty. Bitcoin.
[Visit Sovran Systems](https://sovransystems.com) ·
[Download Sovran_SystemsOS](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.6.iso) ·
[Download Sovran_SystemsOS](https://downloads.sovransystems.com/Sovran_SystemsOS-1.1.7.iso) ·
[View the License](LICENSE)
</div>
+1 -1
View File
@@ -1 +1 @@
1.1.6
1.1.7
Generated
+18 -18
View File
@@ -56,11 +56,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1789542786,
"narHash": "sha256-ajQuqcxnj6RYnwCjA/9FTCnrdR2+BDzstE8UembXf60=",
"lastModified": 1789885152,
"narHash": "sha256-mDNo95riUw8k0MA2Btzj/OuiMcfLKofqIliLYsLbrSY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4c7870105e7f1fdf9c48688c8d7efc21abf0688a",
"rev": "6d663c0533ff269008fb84e45930151e37c99db9",
"type": "github"
},
"original": {
@@ -72,11 +72,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1789546076,
"narHash": "sha256-zVxLZiSnmaaPLwnhj7pwmqe3axBg/C6nG5JZsJMh2g4=",
"lastModified": 1789921291,
"narHash": "sha256-Ft/BRnIqw1MywFoXydKobjjWmDFgDdYtSpJliE8+yUw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b1b875982b17dabde9b4a37f3e229e74913e6db3",
"rev": "44a91898084f46797b5fac650c7e8c9ac38c43d4",
"type": "github"
},
"original": {
@@ -88,11 +88,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1789073787,
"narHash": "sha256-xfX/toC2QV707s06GbP4II/TxYF0fNQj7s5/LClNDKc=",
"lastModified": 1789724158,
"narHash": "sha256-nlKgrm0dsVhOSopKheVBCcOpiIticufPPVLdVOI0euA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "aff8a0b28396750446e5537a96461bc4facdb287",
"rev": "0a3468a402c449992505b6a9fc5b06580141b750",
"type": "github"
},
"original": {
@@ -104,11 +104,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1789286504,
"narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
"lastModified": 1789921291,
"narHash": "sha256-Ft/BRnIqw1MywFoXydKobjjWmDFgDdYtSpJliE8+yUw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
"rev": "44a91898084f46797b5fac650c7e8c9ac38c43d4",
"type": "github"
},
"original": {
@@ -125,11 +125,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1789344271,
"narHash": "sha256-ezmg5oQSZWYdmomx6K1J+/6w7dRc7bquDMggc8eAE28=",
"lastModified": 1789961561,
"narHash": "sha256-2lRgE8XsmXIVmiujmHVaCy5TrBUSblILNT5vYOj/Ed0=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "afcfb8c1dc075881bbaa6fa5745aebbdb179f8b8",
"rev": "bcb5f577a36565bda07d7b81346b73cad8618d16",
"type": "github"
},
"original": {
@@ -152,11 +152,11 @@
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1789491611,
"narHash": "sha256-5L2exBt5XB3nqR7bIzzFVFYEoPlemb4wP/ojRCpFOI0=",
"lastModified": 1790031910,
"narHash": "sha256-aqwWD6FfKxhF7edo/ryn2Um8yMCr/MN5HXNIot4KB2k=",
"owner": "naturallaw777",
"repo": "Sovran_Bitcoin",
"rev": "787b37605136b13a2d374832fd57c6fbde184e7b",
"rev": "4acd272bec53cb88300535d6238e72ad20bd90f1",
"type": "github"
},
"original": {
+5 -5
View File
@@ -60,11 +60,11 @@ lib.mkIf config.sovran_systemsOS.services.nextcloud {
psql -U postgres -c "CREATE DATABASE nextclouddb WITH OWNER ncusr TEMPLATE template0 LC_COLLATE = 'C' LC_CTYPE = 'C';"
fi
# Per-database autovacuum, scoped to nextclouddb only.
# The shared matrix-synapse DB keeps the milder cluster defaults.
# Fixes Nextcloud 35 pg.dead_tuples warning. Idempotent.
psql -U postgres -d nextclouddb -c "ALTER DATABASE nextclouddb SET autovacuum_vacuum_scale_factor = '0.05';"
psql -U postgres -d nextclouddb -c "ALTER DATABASE nextclouddb SET autovacuum_analyze_scale_factor = '0.025';"
# NOTE: autovacuum GUCs are SIGHUP-context, so they cannot be set
# per-database — ALTER DATABASE ... SET rejects them with
# 'parameter "..." cannot be changed now'. They are set
# cluster-wide in configuration.nix instead, which already covers
# both nextclouddb and matrix-synapse.
'';
};
-29
View File
@@ -60,35 +60,6 @@ lib.mkIf config.sovran_systemsOS.services.synapse {
'';
};
# ── Per-database Postgres tuning (matrix-synapse only) ─────
# Mirrors the nextclouddb tuning: Synapse's state and event tables are
# write-heavy and bloat fast under stock autovacuum. Scoped via ALTER
# DATABASE so each DB gets what suits it. Idempotent.
systemd.services.matrix-synapse-db-tune = {
description = "Apply per-database Postgres tuning for Matrix Synapse";
after = [ "postgresql.service" ];
requires = [ "postgresql.service" ];
before = [ "matrix-synapse.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
path = [ config.services.postgresql.package pkgs.coreutils ];
script = ''
set -euo pipefail
# Wait for ensureDatabases to have created the DB on first boot.
for i in $(seq 1 30); do
if psql -U postgres -lqt | cut -d \| -f 1 | grep -qw "matrix-synapse"; then
break
fi
sleep 2
done
psql -U postgres -d matrix-synapse -c "ALTER DATABASE \"matrix-synapse\" SET autovacuum_vacuum_scale_factor = '0.05';"
psql -U postgres -d matrix-synapse -c "ALTER DATABASE \"matrix-synapse\" SET autovacuum_analyze_scale_factor = '0.025';"
'';
};
# ── Generate runtime config from domain files ───────────────
systemd.services.matrix-synapse-runtime-config = {
description = "Generate Synapse runtime config from domain files";