ข้ามไปยังเนื้อหา

บิลด์แบบพกพา

ตั้งค่า

รัน HolyArrs เป็นโปรแกรมธรรมดาบน Linux หรือ Windows โดยไม่ใช้ Docker Docker ยังเป็นวิธีรันหลัก

  • Python 3, Git และ Docker บนเครื่องที่บิลด์
  • Go module cache ที่เต็มแล้วจากการบิลด์โปรเจกต์ตามปกติ และติดตั้ง dependency ของ frontend จาก app/frontend/package-lock.json แล้ว
  • เว็บแอปที่บิลด์แล้วต้อง commit ไว้ การบิลด์ใช้เฉพาะซอร์สที่ commit แล้ว การแก้ไขที่ยังไม่ commit จะไม่ถูกรวม
  1. จาก checkout บิลด์ไฟล์บีบอัด:

    Terminal window
    python deploy/release/package.py --ref HEAD --version 1.0.0 --output /srv/holyarrs-archives/1.0.0 --web-node-modules app/frontend/node_modules --module-cache /home/you/go/pkg/mod

    ใช้โฟลเดอร์ output ใหม่ที่อยู่นอก checkout จะเห็นไฟล์บีบอัดหนึ่งไฟล์ต่อหนึ่ง target และไฟล์ SHA256SUMS

  2. ตรวจไฟล์บีบอัดกับ SHA256SUMS

  3. แตกไฟล์ลงโฟลเดอร์ใหม่ แยกโฟลเดอร์ของโปรแกรมกับคอนฟิกออกจากกัน

  4. เริ่มด้วยพาธคอนฟิกของคุณเอง:

    Terminal window
    ./holyarrs -config /srv/holyarrs/config -addr :6262

    บน Windows PowerShell:

    Terminal window
    .\holyarrs.exe -config 'C:\HolyArrs\config' -addr ':6262'
  5. เปิด http://your-server:6262 จะเห็นวิซาร์ดการเปิดใช้ครั้งแรก สร้างบัญชีเจ้าของทันที ผู้เข้ามาคนแรกจะกลายเป็นเจ้าของ

รัน HolyArrs ภายใต้บัญชีของมันเอง โดยมีสิทธิ์เขียนเฉพาะโฟลเดอร์คอนฟิกและสื่อของคุณ

  • ถ้ารันเป็น root นอก container โดยไม่มี PUID และ PGID มันจะหยุดพร้อมข้อความ “started as root outside a container”
  • ถ้าตั้ง PUID และ PGID มันจะส่งโฟลเดอร์คอนฟิกให้ผู้ใช้นั้นและสลับไปเป็นผู้ใช้นั้น
  • บน Windows ให้ป้องกันโฟลเดอร์คอนฟิกด้วยสิทธิ์ NTFS ของบัญชีนั้น

การรีสตาร์ตและขีดจำกัด

ลิงก์ไปยัง การรีสตาร์ตและขีดจำกัด

ไฟล์บีบอัดไม่ติดตั้งเซอร์วิส ตั้ง auto-restart และขีดจำกัดหน่วยความจำแบบเข้มงวดในตัวจัดการเซอร์วิสของคุณเอง (systemd, NSSM, Task Scheduler) การรีสตาร์ตจากแอปและการกู้คืน Backup ต่างก็ออกจากโปรแกรมและคาดว่าจะมีคนเริ่มให้ใหม่

  1. ตรวจไฟล์บีบอัดใหม่ก่อนหยุดแอป
  2. หยุด HolyArrs แล้วคัดลอกทั้งโฟลเดอร์คอนฟิก รวมคีย์หลักด้วย หรือสร้าง Backup ในแอปแล้วเก็บคีย์แยกต่างหาก
  3. แตกโปรแกรมใหม่ลงโฟลเดอร์อื่น เก็บโปรแกรมเก่าและสำเนาคอนฟิกเก่าไว้
  4. เริ่มโปรแกรมใหม่บนคอนฟิกของคุณ ควรล็อกอินได้ และ /health ควรแสดง running

ดู Backup

อาการ สาเหตุ วิธีแก้
“started as root outside a container” เริ่มด้วย root รันด้วยผู้ใช้ของมันเอง หรือตั้ง PUID และ PGID
แอปออกหลังการกู้คืน การกู้คืนเตรียมข้อมูลไว้แล้วออกด้วยโค้ด 75 เริ่มอีกครั้งเพื่อให้มีผล ตั้งตัวจัดการเซอร์วิสให้รีสตาร์ตมัน
การเรียก HTTPS ล้มเหลวบน Linux ไม่มีใบรับรอง CA ของระบบ ติดตั้งใบรับรองเหล่านั้น
บิลด์บอกว่ามี output อยู่แล้ว โฟลเดอร์ output ที่มีอยู่ถูกปฏิเสธ เลือกโฟลเดอร์ใหม่
ตัวเลือกการบิลด์
ตัวเลือก ทำอะไร ค่าเริ่มต้น
--targets ชุดย่อยที่ต้องการบิลด์ คั่นด้วยจุลภาค linux-amd64,linux-arm64,linux-armv7,windows-amd64
--low-resource container ของตัวบิลด์แต่ละตัวได้ 1 CPU, 2 GiB และ 256 โพรเซส Go บิลด์ทีละแพ็กเกจ การแพ็กยังรันบนโฮสต์ นอกขีดจำกัดเหล่านั้น ปิด

การบิลด์รันใน Go builder image ที่ปักเวอร์ชันของโปรเจกต์โดยปิดเครือข่าย จึงไม่ดาวน์โหลดอะไร module cache ถูกเมานต์แบบอ่านอย่างเดียว ถ้า target ใดล้มเหลว จะไม่เหลือโฟลเดอร์ output commit ถูกเพิ่มเข้าไปในหมายเลขเวอร์ชันและฝังในโปรแกรม แอปและ Backup จะรายงานค่านี้

สิ่งที่อยู่ในไฟล์บีบอัด

โปรแกรม สัญญาอนุญาต ประกาศของบุคคลที่สาม คู่มือ รายการซอร์ส และข้อมูลระบุแพ็กเกจ ไฟล์บีบอัดซอร์สแยกต่างหากเก็บซอร์สของโปรเจกต์และ dependency ของ Go ให้เก็บไว้คู่กับไบนารี

SHA256SUMS พิสูจน์ว่าไฟล์ตรงกัน แต่ไม่ใช่ลายเซ็น commit เวอร์ชัน และอินพุตเดียวกันให้ไฟล์บีบอัดเหมือนเดิม คุณจึงบิลด์ใหม่เพื่อตรวจสอบได้

หมายเหตุตอนรัน
หัวข้อ รายละเอียด
พาธคอนฟิก ค่าเริ่มต้น /config ส่ง -config เสมอ บนดิสก์ในเครื่อง
เป้าหมายหน่วยความจำ 384 MiB เมื่อไม่มี GOMEMLIMIT ตั้งไว้ที่ประมาณ 80 เปอร์เซ็นต์ของหน่วยความจำที่ให้ เป็นเป้าหมาย ไม่ใช่ขีดจำกัดตายตัว
โหมดประหยัดหน่วยความจำ บน Linux เปิดเองเมื่อประมาณ 2.5 GiB หรือน้อยกว่า เป้าหมายลดเหลือหนึ่งในสี่ของหน่วยความจำ ระหว่าง 192 ถึง 384 MiB HOLYARRS_LOW_MEMORY=1 หรือ 0 เป็นตัวกำหนด
Node ไม่ต้องใช้ตอนรัน
Hardlink เก็บโฟลเดอร์งานดาวน์โหลดและคลังไว้บนระบบไฟล์เดียวกัน

HolyArrs ใช้ได้ฟรี ถ้าช่วยประหยัดเวลาคุณได้ กดดาวบน GitHub, สนับสนุนโปรเจกต์ หรือ เลี้ยงกาแฟผู้พัฒนา