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.
@@ -11,6 +11,7 @@
|
||||
.box-emp { fill: #1f2c3a; stroke: #4a78b5; stroke-width: 2; }
|
||||
.box-host { fill: #2a2535; stroke: #6b5aa0; stroke-width: 2; }
|
||||
.box-storage { fill: #1f2e28; stroke: #4a8a6b; stroke-width: 2; }
|
||||
.box-bind { fill: #1f2e28; stroke: #6cba92; stroke-width: 2; stroke-dasharray: 3 3; }
|
||||
.arrow { stroke: #7aa2f7; stroke-width: 2; fill: none; marker-end: url(#arr-b); }
|
||||
.arrow-sto { stroke: #6cba92; stroke-width: 2; fill: none; marker-end: url(#arr-g); }
|
||||
.arrow-back { stroke: #d9a96b; stroke-width: 2; fill: none; marker-end: url(#arr-o); }
|
||||
@@ -29,14 +30,14 @@
|
||||
<rect width="1100" height="600" fill="#0f1117"/>
|
||||
|
||||
<text x="40" y="38" class="ttl">Container Tree — AIO on homework03</text>
|
||||
<text x="40" y="58" class="lbl-sm">network_mode: host on mastercontainer · 8 active · 5 disabled</text>
|
||||
<text x="40" y="58" class="lbl-sm">network_mode: host on mastercontainer · 8 active · 5 disabled · rewire 2026-08-11</text>
|
||||
|
||||
<!-- homework03 host frame -->
|
||||
<rect x="320" y="100" width="760" height="450" rx="10" class="box-host"/>
|
||||
<text x="335" y="124" class="ttl" fill="#bda3e8">homework03 (10.0.0.73) · Debian 13 · 15 GB</text>
|
||||
<text x="335" y="142" class="lbl-sm">Docker 29.6.2 · host network namespace shared with mastercontainer</text>
|
||||
|
||||
<!-- Mastercontainer -->
|
||||
<!-- Mastercontainer (no nc-data bind anymore) -->
|
||||
<rect x="345" y="170" width="200" height="100" rx="6" class="box-emp"/>
|
||||
<text x="445" y="194" text-anchor="middle" class="lbl">nextcloud-aio-mastercontainer</text>
|
||||
<text x="445" y="212" text-anchor="middle" class="lbl-sm">all-in-one:latest</text>
|
||||
@@ -52,11 +53,12 @@
|
||||
<text x="685" y="244" text-anchor="middle" class="lbl-tiny">33:33 (www-data)</text>
|
||||
|
||||
<!-- nextcloud-fcgi -->
|
||||
<rect x="825" y="170" width="235" height="80" rx="6" class="box-internal"/>
|
||||
<text x="942" y="194" text-anchor="middle" class="lbl">nextcloud-aio-nextcloud</text>
|
||||
<rect x="825" y="170" width="235" height="100" rx="6" class="box-bind"/>
|
||||
<text x="942" y="194" text-anchor="middle" class="lbl" fill="#6cba92">nextcloud-aio-nextcloud</text>
|
||||
<text x="942" y="212" text-anchor="middle" class="lbl-sm">PHP-FPM 8.3 + Nextcloud</text>
|
||||
<text x="942" y="228" text-anchor="middle" class="lbl-tiny">:9000 (PHP-FPM listen)</text>
|
||||
<text x="942" y="244" text-anchor="middle" class="lbl-tiny">NEXTCLOUD_DATADIR bind</text>
|
||||
<text x="942" y="244" text-anchor="middle" class="lbl-tiny" fill="#6cba92">bind: /srv/nc-files → /mnt/ncdata</text>
|
||||
<text x="942" y="260" text-anchor="middle" class="lbl-tiny" fill="#6cba92">vol: nextcloud_aio_nextcloud → /var/www/html</text>
|
||||
|
||||
<!-- Middle row: backing services -->
|
||||
<rect x="345" y="295" width="160" height="60" rx="6" class="box"/>
|
||||
@@ -109,7 +111,7 @@
|
||||
<rect x="40" y="380" width="220" height="80" rx="6" class="box-storage"/>
|
||||
<text x="150" y="404" text-anchor="middle" class="lbl">desslok NFS</text>
|
||||
<text x="150" y="422" text-anchor="middle" class="lbl-sm">/slab/container_storage/office</text>
|
||||
<text x="150" y="438" text-anchor="middle" class="lbl-tiny">NFSv4.1 · /srv/nc-files/</text>
|
||||
<text x="150" y="438" text-anchor="middle" class="lbl-tiny">NFSv4.1 · /srv/nc-files</text>
|
||||
|
||||
<!-- External: backup -->
|
||||
<rect x="40" y="500" width="220" height="60" rx="6" class="box" stroke="#d9a96b" stroke-width="1.5"/>
|
||||
@@ -130,10 +132,10 @@
|
||||
<line x1="685" y1="250" x2="685" y2="295" class="arrow"/>
|
||||
<text x="691" y="278" class="lbl-tiny" fill="#7aa2f7">?php-fpm</text>
|
||||
|
||||
<line x1="942" y1="250" x2="945" y2="295" class="arrow"/>
|
||||
<line x1="942" y1="270" x2="945" y2="295" class="arrow"/>
|
||||
|
||||
<line x1="505" y1="480" x2="685" y2="380" class="arrow" stroke-dasharray="3 3"/>
|
||||
<line x1="870" y1="380" x2="942" y2="250" class="arrow" stroke-dasharray="3 3"/>
|
||||
<line x1="870" y1="380" x2="942" y2="270" class="arrow" stroke-dasharray="3 3"/>
|
||||
|
||||
<line x1="425" y1="355" x2="425" y2="380" class="arrow"/>
|
||||
<line x1="945" y1="355" x2="945" y2="380" class="arrow"/>
|
||||
@@ -147,5 +149,5 @@
|
||||
<line x1="425" y1="355" x2="260" y2="420" class="arrow-sto" stroke-dasharray="4 4"/>
|
||||
<text x="355" y="398" class="lbl-tiny" fill="#6cba92">writes pgdump</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: 8.9 KiB After Width: | Height: | Size: 9.2 KiB |
@@ -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 |
@@ -99,7 +99,7 @@
|
||||
<rect x="920" y="465" width="160" height="60" rx="4" class="ok"/>
|
||||
<text x="1000" y="485" text-anchor="middle" class="lbl" fill="#9d7ad9">NFS write</text>
|
||||
<text x="1000" y="503" text-anchor="middle" class="lbl-tiny" fill="#9d7ad9">→ /slab/container_storage/office/</text>
|
||||
<text x="1000" y="518" text-anchor="middle" class="lbl-tiny" fill="#9d7ad9">nextcloud/admin/files/</text>
|
||||
<text x="1000" y="518" text-anchor="middle" class="lbl-tiny" fill="#9d7ad9">admin/files/</text>
|
||||
|
||||
<!-- 10. 201 Created returned -->
|
||||
<rect x="20" y="555" width="160" height="50" rx="4" class="ok"/>
|
||||
@@ -134,5 +134,5 @@
|
||||
<text x="550" y="681" text-anchor="middle" class="lbl-sm" fill="#d9a96b">Tip: WOPI (Collabora file open) follows a parallel path — browser iframe → apache → nextcloud PHP → wopi URL → apache proxy → collabora → WOPI read</text>
|
||||
<text x="550" y="694" text-anchor="middle" class="lbl-tiny" fill="#d9a96b">the WOPI URL is verified as http://nextcloud-aio-apache.nextcloud-aio:23973 (internal docker network only)</text>
|
||||
|
||||
<text x="1060" y="715" text-anchor="end" class="lbl-tiny">2026-08-10 · nextcloud_office</text>
|
||||
<text x="1060" y="715" text-anchor="end" class="lbl-tiny">2026-08-11 · nextcloud_office · rewire</text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1140 720" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1140 740" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
||||
<defs>
|
||||
<style>
|
||||
.lbl { fill: #e6e6e6; font-size: 13px; }
|
||||
@@ -11,11 +11,13 @@
|
||||
.box-public { fill: #1f2c3a; stroke: #4a78b5; stroke-width: 2; }
|
||||
.box-netbird { fill: #2a2535; stroke: #6b5aa0; stroke-width: 2; }
|
||||
.box-storage { fill: #1f2e28; stroke: #4a8a6b; stroke-width: 2; }
|
||||
.box-bind { fill: #1f2e28; stroke: #6cba92; stroke-width: 2; stroke-dasharray: 3 3; }
|
||||
.box-retired { fill: #1f2230; stroke: #5a3a3a; stroke-width: 1.5; stroke-dasharray: 4 3; }
|
||||
.x-link { stroke: #5a6072; stroke-width: 1.5; fill: none; }
|
||||
.x-link-primary { stroke: #7aa2f7; stroke-width: 2; fill: none; marker-end: url(#arr-b); }
|
||||
.x-link-mesh { stroke: #9d7ad9; stroke-width: 2; fill: none; stroke-dasharray: 6 4; marker-end: url(#arr-p); }
|
||||
.x-link-storage { stroke: #6cba92; stroke-width: 2; fill: none; marker-end: url(#arr-g); }
|
||||
.x-link-bind { stroke: #6cba92; stroke-width: 2; fill: none; stroke-dasharray: 3 3; marker-end: url(#arr-g); }
|
||||
.x-link-retired { stroke: #a86b6b; stroke-width: 1.5; fill: none; stroke-dasharray: 4 3; marker-end: url(#arr-r); }
|
||||
.x-link-fail { stroke: #d97a7a; stroke-width: 2; fill: none; marker-end: url(#arr-r); }
|
||||
</style>
|
||||
@@ -33,10 +35,10 @@
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<rect width="1100" height="720" fill="#0f1117"/>
|
||||
<rect width="1100" height="740" fill="#0f1117"/>
|
||||
|
||||
<text x="40" y="38" class="ttl">Nextcloud Office — Public Topology</text>
|
||||
<text x="40" y="58" class="lbl-sm">office.rmf44.xyz · Caddy on hawker · AIO on homework03 · NFS on desslok</text>
|
||||
<text x="40" y="58" class="lbl-sm">office.rmf44.xyz · Caddy on hawker · AIO on homework03 · NFS on desslok · rewire 2026-08-11</text>
|
||||
|
||||
<!-- Section labels -->
|
||||
<text x="80" y="110" class="section">Public Internet</text>
|
||||
@@ -71,12 +73,6 @@
|
||||
<text x="490" y="316" text-anchor="middle" class="lbl">NetBird (wt0)</text>
|
||||
<text x="490" y="333" text-anchor="middle" class="lbl-tiny">100.79.4.103 · P2P mesh</text>
|
||||
|
||||
<!-- Note -->
|
||||
<text x="490" y="370" text-anchor="middle" class="lbl-sm" fill="#9d7ad9">+ retired OnlyOffice torn down</text>
|
||||
<text x="490" y="386" text-anchor="middle" class="lbl-tiny" fill="#9d7ad9">see procedure.html §4.4</text>
|
||||
<rect x="400" y="395" width="180" height="18" rx="3" class="box-retired"/>
|
||||
<text x="490" y="408" text-anchor="middle" class="lbl-sm" fill="#a86b6b">[retired] onlyoffice-files-1</text>
|
||||
|
||||
<!-- Compute homework03 -->
|
||||
<rect x="660" y="140" width="240" height="380" rx="8" class="box-public"/>
|
||||
<text x="780" y="166" text-anchor="middle" class="lbl">homework03 (10.0.0.73)</text>
|
||||
@@ -98,16 +94,16 @@
|
||||
<text x="780" y="380" text-anchor="middle" class="lbl">nextcloud-aio-apache</text>
|
||||
<text x="780" y="397" text-anchor="middle" class="lbl-tiny">:11000 → PHP-FPM</text>
|
||||
|
||||
<!-- Sidecar group -->
|
||||
<rect x="680" y="428" width="200" height="80" rx="6" class="box"/>
|
||||
<text x="780" y="448" text-anchor="middle" class="lbl-sm">5 sidecars</text>
|
||||
<text x="780" y="466" text-anchor="middle" class="lbl-tiny">nextcloud · database · redis</text>
|
||||
<text x="780" y="481" text-anchor="middle" class="lbl-tiny">collabora · whiteboard</text>
|
||||
<text x="780" y="497" text-anchor="middle" class="lbl-tiny">notify-push · database-dump</text>
|
||||
<!-- nextcloud-aio-nextcloud -->
|
||||
<rect x="680" y="428" width="200" height="80" rx="6" class="box-bind"/>
|
||||
<text x="780" y="450" text-anchor="middle" class="lbl" fill="#6cba92">nextcloud-aio-nextcloud</text>
|
||||
<text x="780" y="466" text-anchor="middle" class="lbl-tiny" fill="#6cba92">/srv/nc-files → /mnt/ncdata</text>
|
||||
<text x="780" y="482" text-anchor="middle" class="lbl-tiny" fill="#6cba92">(named vol) → /var/www/html</text>
|
||||
<text x="780" y="498" text-anchor="middle" class="lbl-tiny" fill="#6cba92">NFS user data · local app</text>
|
||||
|
||||
<!-- NFS mount -->
|
||||
<!-- NFS mount on homework03 -->
|
||||
<rect x="940" y="358" width="140" height="50" rx="6" class="box-storage"/>
|
||||
<text x="1010" y="378" text-anchor="middle" class="lbl-sm">/srv/nc-files/</text>
|
||||
<text x="1010" y="378" text-anchor="middle" class="lbl-sm">/srv/nc-files</text>
|
||||
<text x="1010" y="395" text-anchor="middle" class="lbl-tiny">NFS v4.1 mount</text>
|
||||
|
||||
<!-- Storage desslok -->
|
||||
@@ -120,18 +116,18 @@
|
||||
<text x="1010" y="244" text-anchor="middle" class="lbl-tiny">office/</text>
|
||||
|
||||
<rect x="955" y="260" width="110" height="30" rx="3" class="box"/>
|
||||
<text x="1010" y="279" text-anchor="middle" class="lbl-tiny">nextcloud/</text>
|
||||
<text x="1010" y="279" text-anchor="middle" class="lbl-tiny">admin/ race/</text>
|
||||
|
||||
<rect x="955" y="294" width="110" height="30" rx="3" class="box"/>
|
||||
<text x="1010" y="313" text-anchor="middle" class="lbl-tiny">backups/</text>
|
||||
|
||||
<!-- Backup pipeline note -->
|
||||
<rect x="660" y="540" width="420" height="120" rx="6" class="box"/>
|
||||
<text x="870" y="562" text-anchor="middle" class="lbl">Daily backup pipeline (hector → homework03 → NFS)</text>
|
||||
<text x="700" y="585" class="lbl-sm">03:30 UTC, systemd timer on hector</text>
|
||||
<text x="700" y="605" class="lbl-sm">ssh homework03 sudo /usr/local/bin/office-backup.sh</text>
|
||||
<text x="700" y="625" class="lbl-sm"> → pg_dumpall → /srv/nc-files/backups/office-YYYYMMDD-*.gz</text>
|
||||
<text x="700" y="645" class="lbl-tiny">retention: 14 days, prunes via find -mtime +14</text>
|
||||
<rect x="660" y="560" width="420" height="120" rx="6" class="box"/>
|
||||
<text x="870" y="582" text-anchor="middle" class="lbl">Daily backup pipeline (hector → homework03 → NFS)</text>
|
||||
<text x="700" y="605" class="lbl-sm">03:30 UTC, systemd timer on hector</text>
|
||||
<text x="700" y="625" class="lbl-sm">ssh homework03 sudo /usr/local/bin/office-backup.sh</text>
|
||||
<text x="700" y="645" class="lbl-sm"> → pg_dumpall → /srv/nc-files/backups/office-YYYYMMDD-*.gz</text>
|
||||
<text x="700" y="665" class="lbl-tiny">retention: 14 days, prunes via find -mtime +14</text>
|
||||
|
||||
<!-- Edges -->
|
||||
<!-- user → DNS -->
|
||||
@@ -142,39 +138,42 @@
|
||||
<line x1="260" y1="285" x2="400" y2="244" class="x-link-primary"/>
|
||||
<text x="280" y="260" class="lbl-tiny">2. HTTPS</text>
|
||||
|
||||
<!-- Caddy → NetBird -->
|
||||
<line x1="490" y1="278" x2="490" y2="298" class="x-link"/>
|
||||
|
||||
<!-- NetBird hawker → NetBird homework03 (mesh) -->
|
||||
<line x1="580" y1="234" x2="680" y2="234" class="x-link-mesh"/>
|
||||
<text x="630" y="225" text-anchor="middle" class="lbl-tiny" fill="#9d7ad9">WireGuard P2P · UDP 51820</text>
|
||||
|
||||
<!-- NetBird homework03 → Apache -->
|
||||
<line x1="780" y1="258" x2="780" y2="358" class="x-link"/>
|
||||
|
||||
<!-- Caddy → Apache (logically) -->
|
||||
<line x1="600" y1="244" x2="680" y2="383" class="x-link-primary" stroke-dasharray="3 3"/>
|
||||
<text x="630" y="320" class="lbl-tiny" fill="#7aa2f7" transform="rotate(60 630 320)">upstream :11000</text>
|
||||
|
||||
<!-- NFS from compute → storage -->
|
||||
<!-- NFS mount edge -->
|
||||
<line x1="880" y1="383" x2="940" y2="383" class="x-link-storage"/>
|
||||
<text x="910" y="377" text-anchor="middle" class="lbl-tiny" fill="#6cba92">NFS</text>
|
||||
|
||||
<!-- Bind arrow: /srv/nc-files → /mnt/ncdata in nextcloud container -->
|
||||
<line x1="940" y1="408" x2="880" y2="448" class="x-link-bind"/>
|
||||
<text x="950" y="430" class="lbl-tiny" fill="#6cba92">bind</text>
|
||||
<text x="945" y="442" class="lbl-tiny" fill="#6cba92">:mnt/ncdata</text>
|
||||
|
||||
<!-- Local volume bind (dashed, small) -->
|
||||
<line x1="880" y1="468" x2="940" y2="408" class="x-link"/>
|
||||
<text x="900" y="465" class="lbl-tiny" fill="#8088a0">app vol</text>
|
||||
|
||||
<!-- Backup arrow from backup pipeline → storage -->
|
||||
<line x1="1050" y1="580" x2="1010" y2="340" class="x-link-storage" stroke-dasharray="4 4"/>
|
||||
<line x1="1050" y1="600" x2="1010" y2="340" class="x-link-storage" stroke-dasharray="4 4"/>
|
||||
<text x="1050" y="450" class="lbl-tiny" fill="#6cba92">writes</text>
|
||||
|
||||
<!-- Legend -->
|
||||
<g transform="translate(40, 690)">
|
||||
<g transform="translate(40, 710)">
|
||||
<rect x="0" y="-10" width="14" height="14" rx="2" class="box-public"/>
|
||||
<text x="22" y="2" class="lbl-tiny">public</text>
|
||||
<rect x="80" y="-10" width="14" height="14" rx="2" class="box-netbird"/>
|
||||
<text x="102" y="2" class="lbl-tiny">mesh</text>
|
||||
<rect x="160" y="-10" width="14" height="14" rx="2" class="box-storage"/>
|
||||
<text x="182" y="2" class="lbl-tiny">storage</text>
|
||||
<rect x="260" y="-10" width="14" height="14" rx="2" class="box-retired"/>
|
||||
<text x="282" y="2" class="lbl-tiny">retired</text>
|
||||
<rect x="260" y="-10" width="14" height="14" rx="2" class="box-bind"/>
|
||||
<text x="282" y="2" class="lbl-tiny">NFS bind</text>
|
||||
</g>
|
||||
|
||||
<text x="1060" y="694" text-anchor="end" class="lbl-tiny">2026-08-10 · nextcloud_office</text>
|
||||
</svg>
|
||||
<text x="1060" y="714" text-anchor="end" class="lbl-tiny">2026-08-11 · nextcloud_office · rewire</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |