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
+25 -12
View File
@@ -28,7 +28,7 @@
<h2>Backup pipeline</h2>
<p>
Three files written daily to
Four files written daily to
<code>/srv/nc-files/backups/</code> on homework03 (NFS, real path
<code>/slab/container_storage/office/backups/</code> on desslok):
</p>
@@ -47,9 +47,15 @@
<td>~6 KB</td>
<td>Reconstruct the AIO install state without going through the setup wizard again.</td>
</tr>
<tr>
<td><code>office-YYYYMMDD-aio-nextcloud-app.tar.gz</code></td>
<td>Tar of <code>/usr/local/containers/nextcloudaio/nextcloud-aio-nextcloud/</code> — the AIO-managed local app volume (Nextcloud app code, installed apps, <code>config/</code>).</td>
<td>~200-500 MB depending on installed apps</td>
<td>Survives a fresh AIO install: restore this AND the config tarball to skip the entire setup wizard and preserve installed apps.</td>
</tr>
<tr>
<td><code>office-YYYYMMDD-ncdata.tar.gz</code></td>
<td>Tar of <code>/srv/nc-files/nextcloud/</code> (user-uploaded files) — excludes <code>backups/</code> to avoid recursion.</td>
<td>Tar of <code>/srv/nc-files/</code> root (user files: <code>admin/</code>, <code>race/</code>, <code>appdata_*/</code>, etc.) — excludes <code>backups/</code> to avoid recursion.</td>
<td>Empty (~100 B) until users upload files, then grows</td>
<td>Restore user files after data loss.</td>
</tr>
@@ -93,12 +99,12 @@ systemctl status office-backup.service | head -5
</li>
<li>
<strong>NFS quiescence</strong> — the tar reads
<code>/srv/nc-files/nextcloud/</code> while the filesystem is
actively being written to by the nextcloud container. The tar
will see a consistent enough snapshot for crash-consistent
recovery; for true point-in-time recovery, you'd want to
quiesce Nextcloud (set maintenance mode) for the duration of
the tar, which we haven't done.
<code>/srv/nc-files/</code> (the NFS root) while the
filesystem is actively being written to by the nextcloud
container. The tar will see a consistent enough snapshot for
crash-consistent recovery; for true point-in-time recovery,
you'd want to quiesce Nextcloud (set maintenance mode) for the
duration of the tar, which we haven't done.
</li>
</ul>
@@ -142,9 +148,15 @@ sudo -n docker compose down</code></pre>
tar -C /usr/local/containers/nextcloudaio -xzf "$LATEST"</code></pre>
</li>
<li>
Restore user files (overwrites the NFS share's <code>nextcloud/</code>):
Restore the local nextcloud app volume (AIO-managed code +
installed apps):
<pre><code>LATEST=$(ls -t /srv/nc-files/backups/office-*-aio-nextcloud-app.tar.gz | head -1)
tar -C /usr/local/containers/nextcloudaio -xzf "$LATEST"</code></pre>
</li>
<li>
Restore user files (NFS root, no intermediate <code>nextcloud/</code>):
<pre><code>LATEST=$(ls -t /srv/nc-files/backups/office-*-ncdata.tar.gz | head -1)
# Tar contains /nextcloud/ at root
# Tar contains files at root (admin/, race/, appdata_*/, ...)
tar -C /srv/nc-files -xzf "$LATEST"</code></pre>
</li>
<li>
@@ -172,8 +184,9 @@ curl -skI https://office.rmf44.xyz/login
</p>
<pre><code>ssh desslok
LATEST=$(ls -t /slab/container_storage/office/backups/office-*-ncdata.tar.gz | head -1)
tar -C / -xzf "$LATEST" nextcloud/admin/files/path/to/file
# Adjust for the user + path</code></pre>
# Tar contains files at root; restore one user's file:
tar -C / -xzf "$LATEST" race/files/path/to/file
# Adjust for the user + path; user dirs are at NFS root (no nextcloud/ prefix)</code></pre>
<h3>Re-initialize the admin user</h3>
<p>