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

การกำหนดค่า

หน้านี้ครอบคลุมตัวแปรสภาพแวดล้อมของ container, การเมานต์ที่เทมเพลตจัดเตรียมให้, การสำรองข้อมูล VM ผ่าน SSH และการตั้งค่านอกสถานที่ พาธของรีพอสิทอรี การสำรองข้อมูลถูกกำหนดค่าภายในแอป (Settings, Backup paths) ไม่ใช่ผ่านตัวแปรสภาพแวดล้อม

ตัวแปรสภาพแวดล้อม

ตัวแปร จำเป็น คำอธิบาย
APP_KEY ใช่ ค่าลับ hex ขนาด 32 ไบต์ (64 อักขระ hex) ที่ใช้นำมาสร้างรหัสผ่านของรีพอสิทอรี restic สร้างด้วย openssl rand -hex 32 เก็บไว้ให้ปลอดภัย: การทำหายจะทำให้การสำรองข้อมูลที่เข้ารหัสไว้ไม่สามารถกู้คืนได้
LIBVIRT_HOST สำหรับ VMs โฮสต์ Unraid ที่เข้าถึงผ่าน SSH สำหรับการสำรองข้อมูล VM (ค่าเริ่มต้น host.docker.internal; เทมเพลตเติมค่าตัวยึด LAN-IP ไว้ล่วงหน้า) ใช้ LAN IP ของ Unraid ของคุณ จำเป็นบนเครือข่าย br0.x ที่กำหนดเอง
LIBVIRT_SSH_PORT ไม่ พอร์ต SSH ของโฮสต์สำหรับการสำรองข้อมูล VM (ค่าเริ่มต้น 22)
LIBVIRT_SSH_USER ไม่ ผู้ใช้ SSH บนโฮสต์สำหรับการสำรองข้อมูล VM (ค่าเริ่มต้น root)
PORT ไม่ พอร์ต HTTP (ค่าเริ่มต้น 3000; ใช้เฉพาะกับ HTTP_ONLY=true)
HTTPS_PORT ไม่ พอร์ต HTTPS (ค่าเริ่มต้น 3443; เทมเพลตเผยแพร่แบบ 1:1 ดังนั้น WebUI จึงตอบที่ https://<ip>:3443)
HTTP_ONLY ไม่ ตั้งค่า true เพื่อปิดตัวรับฟัง HTTPS แบบ self-signed และให้บริการ HTTP ธรรมดาเท่านั้น (สำหรับใช้หลัง reverse proxy ที่ terminate TLS)
HOST_SOURCE_ROOT ไม่ พาธของโฮสต์ที่เมานต์เป็น Host Data (ค่าเริ่มต้น /mnt) BombVault แปลแหล่ง bind-mount ที่ Docker รายงานให้เป็นพาธภายใต้การเมานต์นี้ เปลี่ยนเฉพาะเมื่อคุณเมานต์รากโฮสต์อื่น
BOMBVAULT_SELF_CONTAINER ไม่ ชื่อของ container BombVault เอง เพื่อไม่ให้มันสำรองข้อมูล (และจึงหยุด) ตัวเอง (ค่าเริ่มต้น BombVault; ตรวจจับอัตโนมัติผ่าน hostname บนเครือข่าย bridge)
BACKUP_MAX_HOURS ไม่ จำนวนชั่วโมงตามนาฬิกาสูงสุดที่การรันสำรองข้อมูลเดียวอาจถือล็อกโดเมนของมันไว้ก่อนที่จะถูกบังคับยกเลิก (ตัวป้องกันเพื่อไม่ให้การรันที่ติดขัดบล็อกโดเมนได้ตลอดกาล) ค่าว่าง (ค่าเริ่มต้น) ใช้ 48 เพิ่มค่านี้สำหรับการสำรองข้อมูลบนคลาวด์ที่ใหญ่มากหรือช้ามาก (การรันที่ถูกยกเลิกที่ขีดจำกัดจะล้มเหลวด้วย context deadline exceeded) ตั้งค่า 0 เพื่อปิดขีดจำกัดทั้งหมด
TZ ไม่ เขตเวลาสำหรับตัวจัดตารางเวลา (เช่น Europe/Berlin)

การเมานต์

เมานต์ Docker socket, แฟลช (/boot) และราก Host Data (/mnt) ตามที่แสดงในเทมเพลต CA ทั้ง แหล่งที่มา และ ปลายทาง ของการสำรองข้อมูลอยู่ภายใต้ Host Data และมันถูกเมานต์แบบ rslave ดังนั้นแชร์ระยะไกลที่เมานต์หลังจาก container เริ่มทำงาน (เช่น ภายใต้ /mnt/remotes) จะปรากฏให้เห็นโดยไม่ต้องรีสตาร์ท

พาธของรีพอสิทอรีการสำรองข้อมูลตั้งค่าเริ่มต้นเป็น /mnt/user/bombvault/{container,vms,flash,config,files} สร้างขึ้นในการสำรองข้อมูลครั้งแรก เปลี่ยนตำแหน่งได้ทุกเมื่อใน Settings, Backup paths

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

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

โมเดลความปลอดภัย

การควบคุมโฮสต์เทียบเท่า root

ผ่าน Docker socket, BombVault สามารถหยุด, ลบ และสร้าง containers ใหม่ รวมถึงอ่าน/เขียน appdata ได้ และสำหรับการสำรองข้อมูล VM มันจะล็อกอินเข้าโฮสต์ผ่าน SSH (qemu+ssh://, root โดยค่าเริ่มต้น) เพื่อรัน virsh ใครก็ตามที่เข้าถึงเว็บ UI ของมันได้ ก็มีสิทธิ์เทียบเท่า root บนโฮสต์

  • การป้องกันด้วยรหัสผ่านเสริม (Settings, Security): ตั้งรหัสผ่านเพื่อบังคับให้ล็อกอิน, ล้างมันเพื่อปิดใช้งาน ปิดโดยค่าเริ่มต้นสำหรับใช้บน LAN ที่เชื่อถือได้ เซสชันถูกลงนาม (HMAC ที่ได้มาจาก APP_KEY) และการเปลี่ยนรหัสผ่านจะทำให้เซสชันเหล่านั้นไม่ถูกต้อง การล็อกอินถูกจำกัดอัตรา
  • เนื่องจากด่านนี้เป็นแบบเลือกเปิด เมื่อไม่ได้ตั้ง UI และ API ทั้งหมด (รวมถึงการตั้งค่านอกสถานที่, เส้นทางการทดสอบการแทรกแซง และชุดกู้คืน) จะเข้าถึงได้โดยใครก็ตามที่เข้าถึงพอร์ตได้ เปิดด่านนี้เมื่อมีการใช้นอกสถานที่, การสำรองข้อมูลแบบไม่เปลี่ยนแปลงได้ หรือการเข้ารหัส
  • รัน BombVault บนเครือข่ายที่เชื่อถือได้และไม่เปิดเผยต่อภายนอกเท่านั้น สำหรับการเข้าถึงจากระยะไกล ให้วางไว้หลัง reverse proxy ที่เพิ่มการยืนยันตัวตนและ TLS การตอบสนองมี security headers พื้นฐาน (CSP, nosniff, X-Frame-Options, Referrer-Policy)
  • เมื่อใช้ HTTP_ONLY=true คุกกี้เซสชันจะสูญเสียแฟล็ก Secure (จำเป็นต้องเป็นเช่นนั้น เพื่อให้ทำงานผ่าน HTTP ธรรมดาได้) ดังนั้นจึงควรเปิดรหัสผ่านหลัง proxy ที่ terminate TLS เท่านั้นหากความลับสำคัญ
  • การเชื่อมต่อ SSH สำหรับการสำรองข้อมูล VM จะเชื่อถือ host key ในการเชื่อมต่อครั้งแรก (TOFU) และปักหมุดไว้หลังจากนั้น ตรวจสอบคีย์ของโฮสต์แบบ out-of-band หากเส้นทางจาก container ไปยังโฮสต์ของคุณไม่เชื่อถือได้
  • การสำรองข้อมูลถูกเข้ารหัสโดย restic เมื่อเปิดการเข้ารหัส (Settings; เปิดโดยค่าเริ่มต้น) โดยคีย์ได้มาจาก APP_KEY

การสำรองข้อมูล VM ผ่าน SSH

BombVault สำรองข้อมูล KVM/libvirt VMs โดยไม่เมานต์พาธ libvirt ใดๆ มันรัน virsh บนโฮสต์ผ่าน SSH (qemu+ssh://) ดังนั้นจึงไม่มีทางกระทบ VM Manager ของโฮสต์คุณ

การตั้งค่าอย่างรวดเร็ว:

  1. Settings, System, VM Backup over SSH: คัดลอกคีย์สาธารณะที่แสดง
  2. เพิ่มต่อท้ายลงใน /root/.ssh/authorized_keys ของ Unraid (คงอยู่ในแฟลชด้วย เพื่อให้อยู่รอดหลังรีบูต)
  3. คลิก Test connection

เทมเพลตเพิ่ม --add-host=host.docker.internal:host-gateway เพื่อให้ container เข้าถึงโฮสต์ได้ ตั้ง LIBVIRT_HOST เป็น LAN IP ของ Unraid ของคุณหากชื่อนั้นไม่ resolve (เช่น เมื่อ container ทำงานบนเครือข่าย br0.x ที่กำหนดเอง) หากคุณเปลี่ยนพอร์ต SSH ของ Unraid ให้ตั้ง LIBVIRT_SSH_PORT ให้ตรง สแนปช็อตขณะทำงาน ต้องการ qemu guest agent ใน VM เพิ่มเติมและดิสก์อยู่บน /mnt/cache (ไม่ใช่ /mnt/user)

คู่มือการตั้งค่า VM และเครือข่ายฉบับเต็ม

คู่มือทีละขั้นตอนฉบับสมบูรณ์ (การเปิดใช้งาน SSH, การอนุญาตคีย์แบบคงอยู่, การกำหนดเส้นทางเครือข่ายที่กำหนดเองและ VLAN, วิธีการต่อ VM และการแก้ปัญหาฝั่งโฮสต์) อยู่ที่ docs/vm-backup-ssh-setup.md บน GitHub

การตั้งค่านอกสถานที่

ตั้งค่าสำเนานอกสถานที่บนแท็บ Settings, Off-site ดู Off-site & recovery สำหรับกระบวนการเต็มรูปแบบ (ไม่เปลี่ยนแปลงได้/append-only, การทดสอบการแทรกแซง และการซ้อม DR) โดยสรุป:

  • แบ็กเอนด์: SMB/CIFS และ NFS (เมานต์แชร์แล้วชี้ Backup Path ไปยังมัน), แบ็กเอนด์ restic ดั้งเดิมโดยไม่ใช้ rclone (s3:..., rest:http://host:8000/repo, b2:..., sftp:user@host:/repo) หรือรีโมต rclone ใดก็ได้ (rclone:<remote>:<bucket>/path)
  • ข้อมูลรับรองคลาวด์ ถูกเก็บแบบเข้ารหัสภายใต้ Settings, Off-site, Cloud credentials
  • ปลายทาง SSH ไม่ต้องติดตั้งอะไรที่ฝั่งไกล sftp: ต้องการเพียงเซิร์ฟเวอร์ SSH เพิ่มคีย์สาธารณะจาก Settings, System, VM Backup over SSH (อยู่ที่ /config/ssh/id_ed25519.pub ด้วย) ลงใน ~/.ssh/authorized_keys ของผู้ใช้ปลายทาง
  • การคัดลอกนอกสถานที่: BombVault จำลองสแนปช็อตใหม่ด้วย restic copy แบบทำเท่าที่ทำได้ รีพอสิทอรีในเครื่องยังคงเป็นหลัก แต่ละโดเมนมีตารางเวลานอกสถานที่ของตัวเอง พร้อมปุ่ม Replicate now
  • หลายปลายทางนอกสถานที่ต่อโดเมน: แต่ละโดเมนสามารถจำลองไปยังหลายปลายทางนอกสถานที่พร้อมกันได้ เพิ่มปลายทางเสริมบน Settings, Off-site แต่ละปลายทางมีรีพอสิทอรี, คลาสพื้นที่จัดเก็บ S3, แฟล็ก append-only, การเก็บรักษา และงบประมาณการเติบโตของตัวเอง ทั้งหมดจำลองตามตารางเวลานอกสถานที่ของโดเมนนั้น การตั้งค่านอกสถานที่เดี่ยวที่มีอยู่จะถูกยกไปเป็นปลายทางแรก
  • การเก็บรักษาต่อแหล่ง: นโยบายในเครื่องอยู่บน Settings, Paths & Storage; นโยบายนอกสถานที่อยู่บน Settings, Off-site (ปล่อยให้เป็นศูนย์ทั้งหมดเพื่อไม่ตัดสแนปช็อตนอกสถานที่โดยอัตโนมัติ)
  • ขีดจำกัดแบนด์วิดท์: จำกัดอัตราการอัปโหลด/ดาวน์โหลดของ restic ภายใต้ Settings, Off-site
  • คลาสพื้นที่จัดเก็บแบบเย็นและแบบเก็บถาวร (S3): สำหรับรีพอสิทอรีนอกสถานที่ S3 ดั้งเดิม ให้เลือกระดับที่กู้คืนอ่านได้ (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval) รีโมต rclone จะตั้งคลาสในการตั้งค่า rclone

การตั้งค่าแบบพกพา (ส่งออกและนำเข้า)

การ์ด Export and import settings บนหน้า Settings จะเขียนการตั้งค่า BombVault ทั้งหมดของคุณ (การตั้งค่าโดเมน, ปลายทางนอกสถานที่, ตารางเวลา, การเก็บรักษา, การแจ้งเตือน) ลงในไฟล์ JSON ที่พกพาได้ ซึ่งคุณสามารถนำเข้าบนอินสแตนซ์อื่นได้ ดังนั้นการย้ายไปยังเครื่องใหม่หรือการโคลนการตั้งค่าจึงไม่ได้หมายถึงการป้อนทุกอย่างใหม่ด้วยมือ การนำเข้าจะแสดงตัวอย่างและขอการยืนยัน และไม่เคยแตะต้องข้อมูลหรือประวัติการสำรองข้อมูลของคุณ

การส่งออกอาจมีข้อมูลรับรอง

คุณเลือกได้ว่าจะรวมข้อมูลรับรองนอกสถานที่และการแจ้งเตือนในไฟล์หรือไม่ เมื่อรวมข้อมูลรับรองไว้ การส่งออกจะมีความอ่อนไหวเทียบเท่าชุดกู้คืนของคุณ ดังนั้นเก็บไว้ในที่ปลอดภัย หากไม่รวมไว้ ไฟล์จะมีเพียงการตั้งค่าที่ไม่เป็นความลับเท่านั้น