diff --git a/Netgrimoire/Pocket/Deployment_Guide.md b/Netgrimoire/Pocket/Deployment_Guide.md index ae1db1e..96f0071 100644 --- a/Netgrimoire/Pocket/Deployment_Guide.md +++ b/Netgrimoire/Pocket/Deployment_Guide.md @@ -2,7 +2,7 @@ title: Pocket Grimoire description: published: true -date: 2026-02-21T22:27:33.260Z +date: 2026-02-22T03:55:29.977Z tags: editor: markdown dateCreated: 2026-02-20T04:41:35.122Z @@ -364,9 +364,15 @@ sudo raspi-config **Installation:** ```bash -sudo add-apt-repository ppa:unit193/encryption -y -sudo apt update -sudo apt install veracrypt -y +# Install dependencies +sudo apt install -y wget libfuse2 + +# Download VeraCrypt (check for latest version at veracrypt.fr) +wget https://launchpad.net/veracrypt/trunk/1.25.9/+download/veracrypt-1.25.9-Debian-12-arm64.deb + +# Install VeraCrypt +sudo dpkg -i veracrypt-*.deb +sudo apt-get install -f # Fix any dependency issues # Verify installation veracrypt --text --version @@ -601,9 +607,27 @@ sudo zfs create pocket-vault/veracrypt-containers # VeraCrypt (option sudo chown -R 1000:1000 /mnt/pocket-vault ``` -**Create GREEN pool (encrypted - personal media + Stash):** +**GREEN pool - Use Existing vault/Green/Pocket Dataset:** + +**IMPORTANT:** You already have an encrypted dataset `vault/Green/Pocket` on Netgrimoire with your personal media and Stash data. **Do NOT create a new pool from scratch.** Instead, you'll use ZFS send/receive to replicate this existing dataset to the GREEN drive. + ```bash -# On Netgrimoire +# On Netgrimoire +# Verify your existing dataset +zfs list vault/Green/Pocket +# Should show: vault/Green/Pocket 5.01T 2.49T 5.01T /export/Green/Pocket + +# Check what's in it +ls /export/Green/Pocket/ +# Should show: media/ and stash/ directories + +# This dataset will be sent to the GREEN drive in the next step +# No need to create pocket-green datasets manually +``` + +**Create empty GREEN pool (will receive data via ZFS send):** +```bash +# On Netgrimoire with GREEN SSD connected sudo zpool create -o ashift=12 \ -O encryption=on \ -O keylocation=prompt \ @@ -617,19 +641,8 @@ sudo zpool create -o ashift=12 \ # Enter STRONG passphrase (can be different from VAULT) # Write down this passphrase -# Create datasets matching Netgrimoire structure -sudo zfs create pocket-green/media # Media library root -sudo zfs create pocket-green/media/library # Library directory -sudo zfs create pocket-green/media/library/movies # Movies -sudo zfs create pocket-green/media/library/tv # TV shows -sudo zfs create pocket-green/stash # Stash-Pocket data -sudo zfs create pocket-green/stash/config # Stash database -sudo zfs create pocket-green/stash/generated # Previews -sudo zfs create pocket-green/stash/blobs # Scene markers -sudo zfs create pocket-green/stash/cache # Cache (don't sync) - -# Set ownership -sudo chown -R 1000:1000 /mnt/pocket-green +# Don't create datasets manually - they'll be created by zfs receive +# The pool is now ready to receive vault/Green/Pocket dataset ``` **Create MEDIA-FAMILY pool (unencrypted - family content):** @@ -688,6 +701,31 @@ du -sh /mnt/pocket-vault/ ``` **Perform initial sync to GREEN:** + +You have two options for syncing your existing `vault/Green/Pocket` dataset to the GREEN drive: + +**Option A: Using Syncoid (Recommended - Easier)** + +```bash +# On Netgrimoire with GREEN drive connected +# Syncoid handles snapshots and incremental transfers automatically + +sudo syncoid vault/Green/Pocket pocket-green/Pocket + +# Syncoid will: +# - Create snapshot automatically +# - Send data to pocket-green/Pocket +# - Show progress bar +# - Handle all ZFS send/receive details + +# Verify received +zfs list pocket-green/Pocket +ls -lh /mnt/pocket-green/Pocket/ +du -sh /mnt/pocket-green/Pocket/ +``` + +**Option B: Manual ZFS Send (Advanced)** + ```bash # On Netgrimoire # You have an existing encrypted dataset: vault/Green/Pocket @@ -712,7 +750,13 @@ sudo zfs send vault/Green/Pocket@initial | \ zfs list pocket-green/Pocket ls -lh /mnt/pocket-green/Pocket/ -# The data structure should now be: +# Verify data integrity +du -sh /mnt/pocket-green/Pocket/ +``` + +**Both options create the same result:** +``` +# The data structure will be: # /mnt/pocket-green/Pocket/ # ├── media/library/ # │ ├── movies/ @@ -721,9 +765,6 @@ ls -lh /mnt/pocket-green/Pocket/ # ├── config/ # ├── generated/ # └── blobs/ - -# Verify data integrity -du -sh /mnt/pocket-green/Pocket/ ``` **Important notes:** @@ -732,8 +773,7 @@ du -sh /mnt/pocket-green/Pocket/ - `pocket-green` pool has its own encryption (encrypts during receive) - Result: Data is encrypted at rest on both systems with different keys - The dataset name becomes `pocket-green/Pocket` (not `pocket-green/Green/Pocket`) -- You MUST specify the full destination path including dataset name (`pocket-green/Pocket`) -- Just specifying the pool name (`pocket-green`) will fail with "destination exists" +- **Recommended:** Use syncoid (Option A) - it's simpler and handles everything automatically @@ -1206,7 +1246,47 @@ sudo systemctl enable nfs-server sudo exportfs -v ``` -### 6. Install System Packages +### 6. Install Syncoid (ZFS Replication Tool) + +**Syncoid** is a ZFS replication tool that makes syncing datasets much easier than manual ZFS send/receive. + +```bash +# Install Sanoid (includes syncoid) +sudo apt update +sudo apt install -y sanoid + +# Verify installation +which syncoid +syncoid --version + +# Should show: syncoid version X.X.X +``` + +**What syncoid does:** +- ✅ Automatically creates snapshots +- ✅ Handles incremental ZFS send/receive +- ✅ Manages snapshot cleanup +- ✅ Shows progress bars +- ✅ Works over SSH +- ✅ Resumes interrupted transfers + +**Example usage:** +```bash +# Local sync (same machine) +sudo syncoid source/dataset destination/dataset + +# Remote sync over SSH +sudo syncoid --sshkey /path/to/key \ + root@remote-host:source/dataset \ + local/dataset +``` + +**You'll use this for:** +- Initial GREEN drive sync on Netgrimoire +- Ongoing syncs from Netgrimoire to Pocket Grimoire over network +- Much simpler than manual `zfs send` commands + +### 7. Install System Packages ```bash # Core utilities