การกำหนดค่า¶
หน้านี้ครอบคลุมตัวแปรสภาพแวดล้อมของ 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 ของโฮสต์คุณ
การตั้งค่าอย่างรวดเร็ว:
- Settings, System, VM Backup over SSH: คัดลอกคีย์สาธารณะที่แสดง
- เพิ่มต่อท้ายลงใน
/root/.ssh/authorized_keysของ Unraid (คงอยู่ในแฟลชด้วย เพื่อให้อยู่รอดหลังรีบูต) - คลิก 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 ที่พกพาได้ ซึ่งคุณสามารถนำเข้าบนอินสแตนซ์อื่นได้ ดังนั้นการย้ายไปยังเครื่องใหม่หรือการโคลนการตั้งค่าจึงไม่ได้หมายถึงการป้อนทุกอย่างใหม่ด้วยมือ การนำเข้าจะแสดงตัวอย่างและขอการยืนยัน และไม่เคยแตะต้องข้อมูลหรือประวัติการสำรองข้อมูลของคุณ
การส่งออกอาจมีข้อมูลรับรอง
คุณเลือกได้ว่าจะรวมข้อมูลรับรองนอกสถานที่และการแจ้งเตือนในไฟล์หรือไม่ เมื่อรวมข้อมูลรับรองไว้ การส่งออกจะมีความอ่อนไหวเทียบเท่าชุดกู้คืนของคุณ ดังนั้นเก็บไว้ในที่ปลอดภัย หากไม่รวมไว้ ไฟล์จะมีเพียงการตั้งค่าที่ไม่เป็นความลับเท่านั้น