rewire 2026-08-11: single-mount NFS architecture

- topology.svg, container-tree.svg, data-flow.svg: show /srv/nc-files
  bound directly into nextcloud container at /mnt/ncdata (no
  intermediate /mnt/nc-data/nextcloud-data layer).
- architecture.html: explain rewire, update storage table, remove
  pre-rewire 'why two layers' section.
- procedure.html: NEXTCLOUD_DATADIR=/srv/nc-files, no mastercontainer
  bind, add §2.5 Rewire 2026-08-11 with recovery procedure,
  update backup script to also tar local nextcloud app volume,
  fix 4.3 verification (302 -> /login, status.php, file visibility).
- operations.html: 4 backup files now (added aio-nextcloud-app.tar.gz),
  restore procedures updated, single-file restore uses new tar layout.
- troubleshooting.html: add 3 new sections — appdata-missing,
  nextcloud-not-spawning, collabora-discovery-warning.
- request-flow.svg: remove nextcloud/ subdir from NFS write path.
- index.html, README.md: update paths and metadata.
This commit is contained in:
2026-08-11 12:09:26 -05:00
parent d172771aa1
commit b4777a5e4d
10 changed files with 423 additions and 121 deletions
+20 -13
View File
@@ -11,9 +11,11 @@
.fs-local { fill: #1f2c3a; stroke: #4a78b5; stroke-width: 2; }
.fs-nfs { fill: #1f2e28; stroke: #4a8a6b; stroke-width: 2; }
.fs-named { fill: #2a2535; stroke: #6b5aa0; stroke-width: 2; }
.fs-bind { fill: #1f2e28; stroke: #6cba92; stroke-width: 2; stroke-dasharray: 3 3; }
.arrow-nfs { stroke: #6cba92; stroke-width: 2; fill: none; marker-end: url(#arr-g); }
.arrow-local { stroke: #7aa2f7; stroke-width: 2; fill: none; marker-end: url(#arr-b); }
.arrow-named { stroke: #9d7ad9; stroke-width: 2; fill: none; marker-end: url(#arr-p); }
.arrow-bind { stroke: #6cba92; stroke-width: 2.5; fill: none; stroke-dasharray: 3 3; marker-end: url(#arr-g); }
</style>
<marker id="arr-g" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
<path d="M0,0 L10,5 L0,10 z" fill="#6cba92"/>
@@ -29,7 +31,7 @@
<rect width="1100" height="600" fill="#0f1117"/>
<text x="40" y="38" class="ttl">Data Flow — where each piece lives</text>
<text x="40" y="58" class="lbl-sm">NFS for user data + backups · ext4 for container state · local named volumes for postgres</text>
<text x="40" y="58" class="lbl-sm">NFS at /srv/nc-files → direct bind into nextcloud container at /mnt/ncdata · rewire 2026-08-11</text>
<text x="80" y="105" class="section">homework03 (local ext4)</text>
<text x="540" y="105" class="section">desslok (NFS v4.1)</text>
@@ -38,9 +40,10 @@
<rect x="60" y="130" width="430" height="380" rx="8" class="fs-local"/>
<text x="80" y="155" class="lbl">/ (ext4)</text>
<rect x="80" y="180" width="390" height="48" rx="4" class="box-internal"/>
<text x="275" y="200" text-anchor="middle" class="lbl-sm">/mnt/nc-data/nextcloud-data</text>
<text x="275" y="216" text-anchor="middle" class="lbl-tiny">→ nextcloud-aio-nextcloud:/nextcloud-aio/data</text>
<!-- /srv/nc-files mount (NFS on homework03 host) -->
<rect x="80" y="180" width="390" height="48" rx="4" class="fs-bind"/>
<text x="275" y="200" text-anchor="middle" class="lbl-sm" fill="#6cba92">/srv/nc-files</text>
<text x="275" y="216" text-anchor="middle" class="lbl-tiny" fill="#6cba92">NFS v4.1 mount → nextcloud-aio-nextcloud:/mnt/ncdata</text>
<rect x="80" y="240" width="190" height="80" rx="4" class="box-internal"/>
<text x="175" y="262" text-anchor="middle" class="lbl-sm">mastercontainer</text>
@@ -79,9 +82,9 @@
<text x="560" y="155" class="lbl">/slab/container_storage/office (NFS)</text>
<rect x="560" y="180" width="460" height="80" rx="4" class="box-internal"/>
<text x="790" y="202" text-anchor="middle" class="lbl">nextcloud/</text>
<text x="790" y="220" text-anchor="middle" class="lbl-sm">user-uploaded files</text>
<text x="790" y="238" text-anchor="middle" class="lbl-tiny">mounted at /srv/nc-files/nextcloud/ on homework03</text>
<text x="790" y="202" text-anchor="middle" class="lbl">office/ (NFS root)</text>
<text x="790" y="220" text-anchor="middle" class="lbl-sm">user-uploaded files at NFS ROOT (no nextcloud/ subdir)</text>
<text x="790" y="238" text-anchor="middle" class="lbl-tiny">admin/ · race/ · appdata_*/ · *.log · .htaccess</text>
<rect x="560" y="272" width="460" height="100" rx="4" class="box-internal"/>
<text x="790" y="294" text-anchor="middle" class="lbl">backups/</text>
@@ -93,14 +96,18 @@
<rect x="560" y="384" width="460" height="110" rx="4" class="box-internal"/>
<text x="790" y="406" text-anchor="middle" class="lbl-sm">ZFS snapshot policy (desslok)</text>
<text x="790" y="424" text-anchor="middle" class="lbl-tiny">/slab is on a ZFS pool with periodic snapshots</text>
<text x="790" y="440" text-anchor="middle" class="lbl-tiny">nightly snapshot → nextcloud/ and backups/ both covered</text>
<text x="790" y="440" text-anchor="middle" class="lbl-tiny">nightly snapshot → office/ and backups/ both covered</text>
<text x="790" y="456" text-anchor="middle" class="lbl-tiny">→ true point-in-time recovery available independent of our daily backup</text>
<text x="790" y="478" text-anchor="middle" class="lbl-tiny">daily backup is belt-and-suspenders, ZFS snapshots are the primary</text>
<!-- Arrows -->
<!-- nextcloud-data → nextcloud/ (NFS read/write) -->
<line x1="470" y1="204" x2="540" y2="220" class="arrow-nfs"/>
<text x="505" y="206" text-anchor="middle" class="lbl-tiny" fill="#6cba92">read/write</text>
<!-- NFS export → /srv/nc-files on homework03 -->
<line x1="540" y1="204" x2="470" y2="204" class="arrow-nfs"/>
<text x="505" y="200" text-anchor="middle" class="lbl-tiny" fill="#6cba92">NFS mount</text>
<!-- /srv/nc-files → /mnt/ncdata (nextcloud container) -->
<line x1="380" y1="228" x2="380" y2="240" class="arrow-bind"/>
<text x="388" y="234" class="lbl-tiny" fill="#6cba92">bind</text>
<!-- mastercontainer ↔ configuration.json → AIO config read by apache -->
<line x1="270" y1="280" x2="380" y2="280" class="arrow-local"/>
@@ -117,5 +124,5 @@
<rect x="60" y="525" width="980" height="40" rx="4" class="box-internal" stroke="#d9a96b"/>
<text x="550" y="546" text-anchor="middle" class="lbl-sm" fill="#d9a96b">postgres WAL writes stay LOCAL (named volume) — PostgreSQL is sensitive to NFS close-to-open consistency</text>
<text x="1060" y="592" text-anchor="end" class="lbl-tiny">2026-08-10 · nextcloud_office</text>
</svg>
<text x="1060" y="592" text-anchor="end" class="lbl-tiny">2026-08-11 · nextcloud_office · rewire</text>
</svg>

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB