ข้ามไปที่เนื้อหา

เริ่มต้นใช้งาน

หน้านี้จะพาคุณจากเครื่อง Unraid ที่เพิ่งติดตั้งใหม่ไปจนถึงการสำรองข้อมูลครั้งแรกของคุณ

ข้อกำหนด

ข้อกำหนด หมายเหตุ
Unraid 6.12+ ยังไม่ได้ทดสอบเวอร์ชันก่อนหน้า Unraid คือเป้าหมายหลัก แต่ BombVault ก็ทำงานบนโฮสต์ Docker ธรรมดาและบน TrueNAS Scale ได้ด้วย (ดู โฮสต์ Docker ทั่วไป)
ตำแหน่งรีพอสิทอรี restic พาธในเครื่อง (แนะนำ: อาร์เรย์หรือแคชของคุณ), SMB, NFS หรือแบ็กเอนด์ rclone ใดก็ได้
Docker socket เมานต์โดยอัตโนมัติจากเทมเพลต (/var/run/docker.sock)
Unraid flash (/boot) เมานต์ทั้งหมดโดยอัตโนมัติจากเทมเพลต (/boot ไปยัง /host/boot) ขับเคลื่อนการสำรองข้อมูลแฟลชและทำให้ container ที่กู้คืนแล้วปรากฏขึ้นอีกครั้งเป็นแอป Unraid ปกติที่แก้ไขได้
KVM VMs (เลือกเปิด) การสำรองข้อมูล VM ติดต่อ libvirt ผ่าน SSH ไม่ต้องเมานต์ libvirt ตั้งค่าใน การตั้งค่า (ดู Configuration)
ชุดข้อมูล ZFS (เลือกเปิด) ใช้ลิงก์ SSH เดียวกับการสำรองข้อมูล VM, zfs บนโฮสต์ และ Host Data ที่แมปเป็น /mnt ด้วยโหมดการเข้าถึง Read/Write - Slave ซึ่งเป็นค่าเริ่มต้นของเทมเพลต ดู ชุดข้อมูล ZFS
แอป Android (ไม่บังคับ) Android 10 ขึ้นไป จับคู่กับเซิร์ฟเวอร์เวอร์ชัน 9.7.0 ขึ้นไป ดู แอป Android

ติดตั้งบน Unraid

เส้นทางที่ง่ายที่สุดคือ Community Applications

  1. เปิดแท็บ Apps ใน Unraid
  2. ค้นหา BombVault
  3. คลิก Install ตั้งค่าตัวแปรที่จำเป็น (ด้านล่าง) แล้วนำไปใช้

ติดตั้งเทมเพลตด้วยมือ

หากคุณต้องการเพิ่มเทมเพลตด้วยตัวเอง:

  1. ไปที่ Docker, Add Container, Template repositories แล้วเพิ่ม:
    https://github.com/junkerderprovinz/unraid-apps
    
  2. ค้นหา BombVault ใน Templates
  3. ตั้งค่าตัวแปรที่จำเป็นแล้วคลิก Apply

โฮสต์ Docker ทั่วไป

ไม่ได้ใช้ Unraid? BombVault ทำงานเป็นคอนเทนเนอร์ธรรมดาบนโฮสต์ Docker ใดก็ได้ (การรองรับคอนเทนเนอร์บน TrueNAS Scale ก็อาศัยสิ่งนี้ ก่อนที่จะมีรายการของตัวเองในแค็ตตาล็อกแอปที่นั่น)

  1. ดึงไฟล์ deploy/docker-compose.generic.yml ที่พร้อมแก้ไขจากที่เก็บโค้ด
  2. ตั้งค่า APP_KEY (ดูด้านล่าง) และชี้ volume Host Data ไปยังรากข้อมูลจริงของคุณ คำอธิบายในไฟล์อธิบายทั้งสองอย่าง
  3. docker compose up -d แล้วเปิด https://<host-ip>:3443/

อะไรที่ต่างไปจาก Unraid:

  • ไม่มีโดเมน flash/USB ไม่มี USB บูตให้เก็บหรือกู้คืน โดเมน Flash ในการตั้งค่าจึงไม่มีงานทำที่นี่ แต่โดเมนโฟลเดอร์เสนอคำแนะนำแบบคลิกเดียว เพิ่มชุดสำเร็จรูป: การตั้งค่าระบบของโฮสต์ (ชุดไฟล์ /etc ตั้งต้นที่คุณตรวจและแก้ก่อนบันทึก) เป็นของเทียบเท่าทั่วไปที่ใช้งานได้จริง
  • ไม่มีการแจ้งเตือนดั้งเดิมของ Unraid ช่องทางแจ้งเตือนของ BombVault เอง (webhook การเตือนเมื่อสำรองนอกสถานที่ล้มเหลว และอื่น ๆ) ทำงานตามปกติ สิ่งที่ข้ามไปมีเพียงการส่งเข้าสู่ระบบแจ้งเตือนเฉพาะของ Unraid เพราะที่นี่ไม่มีระบบดังกล่าว
  • การสำรองเครื่องเสมือนเป็นทางเลือก และต้องมีโฮสต์ libvirtd แยกต่างหากที่เข้าถึงได้ผ่าน SSH ดูบล็อกที่ถูกคอมเมนต์ไว้ในไฟล์ compose โฮสต์ Docker ทั่วไปไม่มีตัวจัดการเครื่องเสมือนในตัว
  • ไม่มีวิดเจ็ตแดชบอร์ด BombVault Widget เป็นปลั๊กอินของ Unraid ขั้นตอนนั้นจึงถูกข้ามไปเช่นกัน
  • การหาข้อมูลของคอนเทนเนอร์ เมื่อไม่มีธรรมเนียม appdata ของ Unraid โฟลเดอร์ข้อมูลของคอนเทนเนอร์จะถูกหาจากส่วนต่าง ๆ ใน DATA_ROOT_SEGMENTS, volume แบบมีชื่อของ Docker, ไดเรกทอรีทำงานของโปรเจกต์ Compose และป้ายกำกับ bombvault.data (ดู การตรวจหาต้นทางของข้อมูลสำรอง) volume แบบมีชื่อและชุดสำเร็จรูป /etc เข้าถึงได้เฉพาะพาธภายใน mount ของ Host Data ดังนั้นให้ชี้ Host Data ไปยังไดเรกทอรีบรรพบุรุษร่วมที่ครอบคลุม data root ของ Docker ด้วย
  • PLATFORM ตั้งเป็น generic หรือ truenas หากไม่ตั้ง BombVault จะตรวจจับ Unraid จากเครื่องหมายของ Unraid เองบน mount ของแฟลช และถือว่าที่อื่นทั้งหมดเป็นโฮสต์ทั่วไป ขั้นตอนเฉพาะ Unraid จะถูกข้ามไปแทนที่จะลองแล้วล้มเหลว

TrueNAS Scale ใช้เส้นทาง compose เดียวกัน รายการในแค็ตตาล็อกเตรียมไว้ในที่เก็บโค้ดแล้วแต่ยังไม่ได้ส่ง การสำรองข้อมูล VM ที่นั่นต้องใช้ LIBVIRT_URI เพราะ libvirtd ของ TrueNAS รอฟังบนซ็อกเก็ตของตัวเอง (/run/truenas_libvirt/libvirt-sock) ซึ่งตัวแปร LIBVIRT_* ทั้งสามตัวแสดงไม่ได้ (ดู Configuration) สิ่งที่พิสูจน์แล้วมีเท่านี้: การสำรองข้อมูล zvol ได้ทดสอบกับเครื่อง TrueNAS Scale จริง บน zvol ที่ต่ออยู่กับ VM ที่กำลังทำงาน และ zfs snapshot, zfs send, restic และ zfs receive ส่งข้อมูลไปกลับได้ตรงกันทุกไบต์ ส่วนการกู้คืนเต็มรูปแบบที่ BombVault ดำเนินการเองยังไม่เคยรันบนฮาร์ดแวร์ TrueNAS และ zvol นั้นเป็นแบบ sparse ทรูพุตในระดับหลายกิกะไบต์จึงยังไม่ได้ทดสอบ ให้ทดสอบการกู้คืนที่นั่นก่อนจะพึ่งพามัน

การตั้งค่าเดียวที่จำเป็น

ตัวแปรเดียวที่คุณต้องตั้งค่าคือ APP_KEY ซึ่งเป็นค่าลับ hex ขนาด 32 ไบต์ (64 อักขระ hex) ที่ใช้นำมาสร้างรหัสผ่านของรีพอสิทอรี restic

สร้างขึ้นบนเครื่องใดก็ได้:

openssl rand -hex 32

วางผลลัพธ์ลงในช่อง APP_KEY ของเทมเพลต (Unraid) หรือตัวแปรสภาพแวดล้อม APP_KEY ใน docker-compose.yml (โฮสต์ Docker ทั่วไป)

อย่าทำ APP_KEY ของคุณหาย

การทำ APP_KEY หายจะทำให้การสำรองข้อมูลที่เข้ารหัสไว้ของคุณไม่สามารถกู้คืนได้ เก็บไว้ในที่ปลอดภัยและแยกจากเซิร์ฟเวอร์ เมื่อ BombVault ทำงานแล้ว ให้ใช้ ชุดกู้คืนคีย์เข้ารหัส (encryption-key recovery kit) แบบคลิกเดียว (ดู Off-site & recovery) เพื่อบันทึกชุดกู้คืนแบบเต็ม

เทมเพลตยังเมานต์ Docker socket, แฟลช (/boot) และราก Host Data (/mnt) ให้คุณด้วย ทั้ง แหล่งที่มา และ ปลายทาง ของการสำรองข้อมูลอยู่ภายใต้ Host Data สำหรับการอ้างอิงตัวแปรฉบับเต็มและการตั้งค่านอกสถานที่ ดู Configuration

การรันครั้งแรก

แดชบอร์ดหลังการสำรองครั้งแรก: อะไรได้รับการปกป้อง อะไรจะรันต่อ และบันทึกที่เดินอยู่

แดชบอร์ดหลังการสำรองครั้งแรก: อะไรได้รับการปกป้อง อะไรจะรันต่อ และบันทึกที่เดินอยู่

  1. เปิดเว็บ UI ที่ https://<your-unraid-ip>:3443 (ใบรับรองแบบ self-signed มาให้พร้อมใช้งาน)
  2. ใน การตั้งค่า เปิดใช้งานโดเมนการสำรองข้อมูลที่คุณต้องการ (Containers, VMs, Flash, สำรองข้อมูลตัวเอง, โฟลเดอร์, ชุดข้อมูล ZFS) แล้วเลือกสีเน้น
  3. บนแท็บ Containers เลือก container แล้วคลิก สำรองข้อมูลเดี๋ยวนี้ เพื่อสร้างจุดกู้คืนแรกของคุณ พาธของรีพอสิทอรีตั้งค่าเริ่มต้นเป็น /mnt/user/bombvault/{container,vms,flash,config,files,zfs} และจะถูกสร้างขึ้นในการสำรองข้อมูลครั้งแรก
  4. ตั้งค่าตารางเวลาจาก การตั้งค่า, กำหนดการ มีปุ่ม รวมทั้งหมดในตารางเวลา แบบคลิกเดียวสำหรับ containers และ VMs

ทางเลือก: เลือกลำดับการสำรองข้อมูล

หาก containers บางตัวควรถูกสำรองข้อมูลก่อนตัวอื่นเสมอ (เช่น ฐานข้อมูลก่อนแอปที่ใช้มัน) ให้เปิดแผง ลำดับการสำรองข้อมูล บนหน้า Containers แล้วลากพวกมันเข้าไปในลำดับที่คุณต้องการ การรันตามตารางเวลาและการรันแบบเลือกหลายรายการจะทำตามลำดับนั้น ส่วนสิ่งที่คุณไม่ได้จัดลำดับจะถูกสำรองข้อมูลโดยเรียงตามที่เกินกำหนดมากที่สุดก่อน เหมือนเดิม

การตรวจสอบการผสานรวมโฮสต์

เปิด /spike ในเว็บ UI หลังจาก container เริ่มทำงาน มันจะตรวจสอบทุกการเมานต์และ CLI (Docker socket, libvirt, restic, qemu-img, rclone) และรายงานส่วนที่ขาดหายไป เพื่อให้คุณยืนยันได้ว่า container เชื่อมต่อถูกต้องก่อนที่คุณจะพึ่งพามัน

แบบง่าย เทียบกับ ขั้นสูง

หน้าตั้งค่าไม่มีปุ่มบันทึก ทุกการเปลี่ยนแปลงถูกเขียนทันทีที่คุณทำ

หน้าตั้งค่าไม่มีปุ่มบันทึก ทุกการเปลี่ยนแปลงถูกเขียนทันทีที่คุณทำ

โดยค่าเริ่มต้น อินเทอร์เฟซจะแสดงเฉพาะสิ่งจำเป็น (สำรองข้อมูล, กู้คืน, ตั้งตารางเวลา) ใช้สวิตช์ มุมมองแบบง่าย / มุมมองขั้นสูง ในแถบด้านข้างเพื่อเผยการควบคุมสำหรับผู้เชี่ยวชาญ: การเก็บรักษา, การคัดลอกนอกสถานที่, hooks ก่อน/หลัง, การกู้คืนระดับไฟล์, การแจ้งเตือน, เมตริก Prometheus และเครื่องมือความสมบูรณ์/การบำรุงรักษา เป็นการตั้งค่าต่อเบราว์เซอร์และปิดอยู่โดยค่าเริ่มต้น ดังนั้นผู้ใช้ใหม่จะได้ UI ที่สะอาดตา ส่วนผู้ใช้ระดับสูงจะได้ทุกอย่าง

การบิลด์จากซอร์สโค้ด

BombVault เป็นไบนารี Go แบบสแตติกไฟล์เดียวที่ให้บริการ JSON API และอินเทอร์เฟซ React ที่ฝังอยู่ในตัว ให้บิลด์อินเทอร์เฟซก่อน แล้วจึงรันไบนารี:

npm --prefix web ci
npm --prefix web run build     # เขียน web/dist ซึ่งไบนารีจะฝังไว้ในตัว
export APP_KEY=$(openssl rand -hex 32)
go test ./...                  # unit test และ integration test รวมการรับส่งผ่าน restic จริง
golangci-lint run ./...
go run ./cmd/bombvault         # ให้บริการที่ https://localhost:3443 ด้วยใบรับรองแบบ self-signed

go run ก็ต้องบิลด์อินเทอร์เฟซก่อนเช่นกัน ที่เก็บโค้ดติดตามเพียงไฟล์มาร์กเกอร์ว่างใต้ web/dist ดังนั้นหากไม่รัน npm --prefix web run build ไบนารีจะไม่ฝังอะไรไว้เลยและตอบกลับ 500 SPA index not found ซึ่งเป็นสิ่งที่คาดไว้ Docker, libvirt และ Unraid ทดสอบใน CI ไม่ได้ ดังนั้นก่อนเปิด pull request ให้ตรวจ mount, restic และลิงก์ SSH ของ VM บนโฮสต์จริงด้วยการตรวจสอบการผสานรวมโฮสต์ (/spike)

ขั้นตอนถัดไป

  • เรียกดู Features ฉบับเต็ม
  • นำเซิร์ฟเวอร์ทุกเครื่องในกลุ่มของคุณมาไว้บนโทรศัพท์ด้วย แอป Android
  • เพิ่มสำเนา Off-site & recovery หนึ่งชุดหรือมากกว่า (แต่ละโดเมนสามารถส่งไปยังหลายปลายทางพร้อมกันได้) แล้วบันทึกชุดกู้คืนของคุณ
  • กำลังโคลนการตั้งค่าหรือย้ายไปยังเครื่องใหม่? นำการตั้งค่าทั้งหมดของคุณไปด้วยการ์ด ส่งออก / นำเข้าการตั้งค่า ดู Configuration
  • เจอปัญหา? ดู Troubleshooting