[101]Setup Sonatype Nexus Repository สำหรับ Nodejs Module(Local Registry)

Authapon Kongkaew
3 min readSep 25, 2020

Nexus คือไร

ตอบแบบกำปั้นทุบดิน คือ Repository Management เพื่อใช้สำหรับจัดเก็บ Library โดยความสามารถหลัก Dependency management

ในแต่ละบริษัทสาย Tech มักมี Library ที่เป็น Internal Library ที่สร้างขึ้นมาเพื่อใช้งานภายในบริษัทเท่านั้น อาจด้วยเหตุผลเรื่อง Data Privacy หรือเหตุผลอื่นๆ เลยมีความจำเป็นต้องสร้าง Private Local Registry ไว้ใช้งานภายในองค์กร

แล้วทำไมต้องใช้ Nexus

  • Free (**มี Version เสียตังค์)
  • รองรับหลากหลาย Package ทำให้สามารถใช้ร่วมกับการพัฒนาได้หลายภาษา เช่น Python, Java, Docker, npm …
Repositories ที่ nexus รองรับ

ในที่นี่ขอรัน Nexus บน Docker

  1. สร้าง Volume สำหรับเก็บ Persistence data
docker volume create --name nexus-data 

2.2 Start Nexus โดยใช้ Volume ที่สร้างในขั้นตอนก่อนหน้า

docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data --restart always sonatype/nexus3

3. เปิดหน้า Browser http://127.0.0.1:8081

หน้าแรกที่เจอ จะถามหา admin password

ตามหา Admin Password รัน Command ด้านล่าง แล้วจะได้ Password เพื่อนำไปใช้ Login

docker exec -it nexus cat /nexus-data/admin.password

4. ปิดการเข้าถึงแบบไม่ผ่านการ Authen (Disable Anonymous access)

ขั้นตอนนี้สำคัญ ***Disable anonymous access อย่าเผลอเปิดให้คนอื่นมาใช้

5. เริ่ม Config Repository เลือกเป็น npm

6. สร้าง Repository เลือกเป็น Proxy mode

จุดสำคัญคือตรง Remote storage เป็น https://registry.npmjs.org/ เพื่อให้ Nexus สามารถออกไปหา Package ที่ไม่มี Local Repository ได้

ตั้งชื่อเป็น npm-proxy และ config remote storage

7. สร้าง Repository npm เป็น Mode Hosted เพื่อใช้สำหรับเก็บ Private Package

ตั้งค่า npm-proxy **Deploy policy ควรเลือก disable redeploy เพื่อป้องการความผิดพลาดในการ release

8. สร้าง Repository npm เป็น Mode group เพื่อใช้รวม Mode Proxy และ Mode Private เข้าด้วยกัน เวลาใช้งานจริง จะใช้งานผ่าน npm-group

เพิ่ม member npm-proxy, npm-private

9. ตั้งค่าการ Authentication ระหว่าง Client กับ Nexus Server ให้เลือก npm Bearer Token Realm

เปิดใช้งานการเข้าถึง nexus ด้วย npm Bearer Token Realm

10. สร้าง Roles สำหรับ Users เพื่อให้สะดวกในการจัดการสิทธิการเข้าถึง

สร้าง Roles developer แล้วเลือกสิทธิที่ให้ developer ใช้งาน

11. สร้าง Users และกำหนด Roles

สร้าง User และระบุ Role ในการเข้าถึง
Repository ที่ได้ตั้งค่าในขั้นตอนก่อนหน้า

*** ในที่สุดเราก็ได้ Nexus Server ส่วนตัวใช้ละ Part ต่อไปด้วยการ Deploy React Component ไปยัง Nexus Server ที่เราสร้างขึ้นมา

[101] Part 2 Deploy React Component to Nexus

[101] Part 3 How to use React Component from Nexus to our projects

[101] Part 4 Auto Document on React Component

[101] Part 5 Jenkins pipeline for deploy react component

--

--