Skip to main content

Install Proxmox Backup Server + Tailscale NFS Share สำหรับ backup offsite (LXC)

ตัวอย่างนี้จะประกอบไปด้วย server 2 ตัวคือ

  1. Proxmox ที่ติดตั้ง PBS (LXC) ลงในตัว
    • เป็น local backup ในตัว server node โดยต้องมีพื้นที่อย่างน้อย 210GB (10 สำหรับ LXC และ 200 สำหรับ local backup)
    raspbery pi zero 2w ที่ติดตั้ง OMV ไว้เป็น storagebackup สำรอง
      เป็น offsite backup คือ มีหน้าที่ backup sync ผ่าน NFS สำหรับ local backup อีกที เพื่อป้องกันหายนะหาย local backup พัง
      หากคิด mount nfs share ตรง ๆ โดยไม่มี local backup แนะนำว่าอย่าคิดทำ เพราะช้ามาก   ผมเลือกใช้ตัวนี้เพราะมันถูกและกินไฟต่ำมากแค่ 2w ใช้คู่กับ HDD Externa 5TB รวม ๆ แล้วกินไฟเฉลี่ย 4w แต่ก็ยังมีตัวเลือกที่ดีกว่าคือ Radxa ZERO 3E ที่ราคาเท่ากันแต่แรงกว่าและมาพร้อม usb-c

       server ทั้ง 2 จะทำการคุยกันโดยใช้ tailscale เป็น VPN เชื่อมต่อผ่าน NFS Share

      Proxmox Server

      ติดตั้ง PBS LXC

      ใช้ script จาก https://community-scripts.github.io/ProxmoxVE/scripts?id=proxmox-backup-server

      bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/proxmox-backup-server.sh)"

      หลังจากนั้น Disable Enterrpise Repo แนะนำให้ Yes ทุกข้อ

      https://community-scripts.github.io/ProxmoxVE/scripts?id=post-pbs-install&category=Proxmox+%26+Virtualization

      bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pbs-install.sh)"

      อย่าข้าม Disable Enterrpise Repo ไม่งั้นลงไม่ได้

      ติดตั้ง Tailscale

      จาก https://tailscale.com/kb/1031/install-linux

      curl -fsSL https://tailscale.com/install.sh | sh

      หลังจากติดตั้งแล้วมันจะแนะนำให้ tailscale up ซึ่งมันจะรันไม่ได้ ต้องทำตามนี้ก่อน

      https://tailscale.com/kb/1130/lxc-unprivileged

      ดู lxc id จากตัวอย่างคือ 101

      image.png

      ไปที่ shell ของตัว server ดูเลข container id ให้ตรงแล้วใส่คำสั่งลงไปเช่น

      nano /etc/pve/lxc/101.conf

      เพิ่มลงไปในแถวสุดท้าย

      lxc.cgroup2.devices.allow: c 10:200 rwm
      lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

      กด ctrl+x หลังจากนั้น y และ enter ออกมา

      reboot lxc และลองพิมพ์ tailscale up จะพบว่าใช้งานได้แล้ว

      ให้ทำการ copy url ไป authenticate เข้า id เราตามปกติ (อย่าลืมไป disable key expire ด้วย)

      ตอนนี้ server พร้อมทำ NFS Share ในระดับหนึ่งแล้ว แต่พักไว้ตรงนี้ก่อน


      ส่วนของ raspberry pi

      ทำการติดตั้ง debian headless 64bit และลง OMV ให้เรียบร้อย 

      จัดการ Storage

      เข้าไปจัดการ Storage > Disks ทำการ format ให้เป็น ext 4 หลังจากนั้นให้ mount file system

      แต่หากทำไว้แล้วก็ไป mount file system ให้เห็น external harddisk ได้เลย

      หลังจากนั้นให้สร้าง Shared Folders ให้เรียบร้อย (ตัวอย่างจะตั้งค่าตามภาพ)

      image.png

      จัดการ NFS Share

      ดูที่ Service > NFS > Settings

      ให้เปิดใช้งาน NFS 

      image.png

      หลังจากนั้นให้ดูที่ Service > NFS > Shares

      • ให้ตั้งค่า sharef folder
      • ใส่ ip tailscale ของ PBS (LXC) ที่ได้รับมาลงไปลง เช่น 100.100.100.50/24 (ใส่ /24 ลงไปด้วย)

      image.png

      อย่าลืมตั้งค่าเป็น read/write

      จบส่วนตั้งค่าของ raspbery pi


      ส่วนของ Proxmox Server (ต่อ)

      สร้าง Local Backup

      ให้ทำการ stop container ก่อน หลังจากนั้นดูในส่วน container id (ตัวอย่างคือ 101) > Resources 

      ให้กด Add และสร้าง Mount Point

        Mount Point ID - ไม่ต้องไปยุ่งกับมัน ปกติเป็น 0 อยู่แล้ว Path - จากตัวอย่างจะใช้ pbs-datastore เป็น local ถ้ากลัวงงตั้งเป็น pbs-backup-local หรืออะไรก็ได้ให้เข้าใจ Disk size - หากไม่แน่ใจว่าควรใช้เท่าไรให้ลองดูจาก vzdump backup ที่ทำไว้ คิดไม่ออกก็ 200GB

        เสร็จเรียบแล้วแล้วให้กด Create

        image.png

        เสร็จแล้วหากไปเช็คในเมนูหลักส่วน local-lvm > CT จะเห็นว่า vm 101 จะมี disk 0 และ disk 1 ตาม Disk size ที่ตั้งไว้

        เรียบร้อยแล้วให้ทำการ start container pbs กลับขึ้นมาอีกครั้ง

         

        PBS Web UI

        หลังจาก login เข้ามาแล้วเราก็จะไปกำหนด path storage กันโดยดูที่ Datastore > Add Datastore

        ใส่ path ที่ mount nfs ไว้ลงไป และตั้งชื่อให้เรียบร้อย

        image.png

        หลังจากสร้างเสร็จแล้วให้ลองกดดูก็จะเห็น พื้นที่ตามที่เรา mount ไว้ 

        จากตัวอย่างนี้คือผมเสียบ External HDD 5TB ไว้ที่ raspberry pi โดย server ทั้ง 2 เชื่อมผ่าน tailscale เรียบร้อย

        image.png


        Proxmox Datacenter

        หรือก็คือฝั่ง Proxmox นั่นแหละแต่เราจะไม่ยุ่งกับ PBS LXC แล้วตอนนี้

        ให้ไปที่ตัว Datacenter เลยและเลือก Storage > Add > Proxmox Backup Server

        image.png

        ตั้งค่าให้เรียบร้อย โดย

          id คือชื่อที่จะแสดงใน list ของ storage server สามารถใส่ ip ของ pbs lxc ได้เลยไม่ต้องใช้ ip ของ tailscale username ทั่วไปคือ root@pam อยู่แล้วส่วน password ก็ใช้ตัวที่เข้าไปจัดการ pbs datastore ตั้งชื่อให้เหมือนกับที่ตั้งไว้ใน pbs

          image.png

            fingerprint ให้เข้าไปเอามาจากใน pbs ตามภาพ

            image.png

            หลังจากเรียบร้อยแล้วก็สามารถใช้งาน Datacenter > Backup ได้ตามปกติโดยจะมีตัวเลือกของ pbs เพิ่มเข้ามาแล้ว

             

             

            หลังจากกำหนด ip tailscale ของ PBS (LXC) ใน raspberry pi แล้ว ก็จะมาถึงขั้นตอนการ mount ซึ่งทำเหมือนกับ Mounting a Synology NAS (NFS Share) เลยคือ

            ติดตั้ง nfs ก่อน

            apt-get install nfs-common -y

            หลังจากนั้นสร้างสร้าง folder เพื่อใช้ในการ mount

            mkdir /mnt/media/pibackup

            chown user backup ของ pbs (ไม่งั้นจะเจอ error 13)

            chown backup:backup /mnt/backup/pibackup
            chmod 775 /mnt/backup/pibackup

            สร้างไฟล์ config mount

            nano /etc/fstab

            เพิ่มคำสั่ง mount โดย

            • หมายเลข ip ให้ใส่เป็น ip talescale ของ server raspberry pi
            • ชื่อ folder ให้ตั้งตามชื่อของ shared folder ที่ทำไว้
            # <file system>     <dir>    			<type>   <options>  <dump>	<pass>
            100.100.100.100:/proxmox-backup-nfs /mnt/media/pibackup  nfs      defaults    0       0

            กด ctrl+x เพื่อปิด หลังจากนั้นกด y เพื่อเซฟทับ และ enter เพื่อตกลง

            mount drive ด้วยคำสั่ง

            mount -a

            จะพบว่าไม่สามารถ mount ได้ เพราะ container ถูกตั้งค่ามาไม่ถูกต้อง

            วิธีแก้แบบมักง่ายและไวที่สุดคือ ให้ backup container ไว้ก่อนโดย กดที่ container และเลือก backup ซึ่งไม่ต้องตั้งค่าอะไร กด backup ได้เลย

            image.png

            หลังจากนั้นให้ restore โดยเลือก privilege level เป็น Privilege ตามรูป

            image.png

            หลังจากเสร็จสิ้นให้แล้ว start container ตามปกติและลอง 

            mount -a

            ก็จะทำให้ mount ได้แล้ว

            ขั้นตอนต่อไปคือเข้าไปตั้งค่าใน web interface ได้สักที


            Web UI

            หลังจาก login เข้ามาแล้วเราก็จะไปกำหนด path storage กันโดยดูที่ Datastore > Add Datastore

            ใส่ path ที่ mount nfs ไว้ลงไป และตั้งชื่อให้เรียบร้อย

            image.png

            หลังจากสร้างเสร็จแล้วให้ลองกดดูก็จะเห็น พื้นที่ตามที่เรา mount ไว้ 

            จากตัวอย่างนี้คือผมเสียบ External HDD 5TB ไว้ที่ raspberry pi โดย server ทั้ง 2 เชื่อมผ่าน tailscale เรียบร้อย

            image.png


            Proxmox Datacenter

            หรือก็คือฝั่ง Proxmox นั่นแหละแต่เราจะไม่ยุ่งกับ PBS LXC แล้วตอนนี้

            ให้ไปที่ตัว Datacenter เลยและเลือก Storage > Add > Proxmox Backup Server

            image.png

            ตั้งค่าให้เรียบร้อย โดย

              id คือชื่อที่จะแสดงใน list ของ storage server สามารถใส่ ip ของ pbs lxc ได้เลยไม่ต้องใช้ ip ของ tailscale username ทั่วไปคือ root@pam อยู่แล้วส่วน password ก็ใช้ตัวที่เข้าไปจัดการ pbs datastore ตั้งชื่อให้เหมือนกับที่ตั้งไว้ใน pbs

              image.png

                fingerprint ให้เข้าไปเอามาจากใน pbs ตามภาพ

                image.png

                หลังจากเรียบร้อยแล้วก็สามารถใช้งาน Datacenter > Backup ได้ตามปกติโดยจะมีตัวเลือกของ pbs เพิ่มเข้ามาแล้ว