/Fenrir-s

nostr relay implementation in kotlin

Primary LanguageKotlinMIT LicenseMIT

Fenrir-s

ภาษาไทย, 日本語

Fenrir-s เป็น Nostr Relay ที่ปฏิบัติตามข้อกำหนดของ Nostr Protocol ซึ่งพัฒนาด้วย Kotlin/JVM

โปรเจคนี้มุ่งเน้นสำหรับการใช้งานส่วนตัวหรือในกลุ่มเพื่อน สามารถกำหนดค่านโยบาย Relay ตามความต้องการ และติดตั้งได้ง่าย

📋 สารบัญ

🚀 คุณสมบัติที่รองรับ (NIPs)

  • ✅ NIP-01 Basic protocol flow
  • ✅ NIP-02 Follow List
  • ✅ NIP-04 Encrypted Direct Message
  • ✅ NIP-09 Event Deletion
  • ✅ NIP-11 Relay Information
  • ✅ NIP-13 Proof of Work
  • ✅ NIP-15 Marketplace
  • ✅ NIP-28 Public Chat
  • ⬜ NIP-40 Expiration Timestamp
  • ⬜ NIP-42 Authentication of clients to relays
  • ✅ NIP-50 Search Capability

⚙️ การกำหนดค่า Relay

1. กำหนดค่าข้อมูลรายละเอียดของ Relay เบื้องต้น

ไฟล์กำหนดค่าอยู่ที่ src/main/resources/application.toml

[nostr.relay.info]
name = "lnwza007"
description = "นึกแล้ว มึงต้องอ่าน"
npub = "npub1ujevvncwfe22hv6d2cjv6pqwqhkvwlcvge7vgm3vcn2max9tu03sgze8ry"
contact = "rushmi0@getalby.com"
พารามิเตอร์ คำอธิบาย
name ชื่อของ Relay
description คำอธิบายเกี่ยวกับ Relay
npub npub ของเจ้าของ Relay
contact ที่อยู่อีเมลที่สามารถติดต่อได้

2. กำหนดนโยบาย

หากไม่ได้กำหนดค่าใดๆ ค่าเริ่มต้นจะเป็น Public Relay ที่เปิดให้ทุกคนใช้งานได้

[nostr.relay.policy]
all-pass = true
follows-pass = false

[nostr.relay.policy.proof-of-work]
enabled = false
difficulty-minimum = 32
พารามิเตอร์ คำอธิบาย ค่าเริ่มต้น ลำดับความสำคัญ
all-pass รับ Event จากทุกคน true รองลงมา
follows-pass รับ Event เฉพาะจากคนที่เจ้าของ Relay ติดตาม (NIP-02) false สูง
proof-of-work.enabled เปิดใช้งานการตรวจสอบ Proof of Work false สูง
proof-of-work.difficulty-minimum ค่าความยากขั้นต่ำสำหรับ Proof of Work 32 -

Warning

ค่าความยากระดับ 32 ค่อนข้างสูง หากต้องการลดความเข้มงวด แนะนำให้ตั้งค่าที่ น้อยลง หรือปิดไปเลยก็ได้

3. ตัวเลือกกำหนดค่าบริการพิเศษของ Relay

[nostr.relay.database.backup]
enabled = false
sync = ["wss://relay.damus.io", "wss://relay.snort.social", "wss://relay.siamstr.com", "wss://relay.notoshi.win"]
พารามิเตอร์ คำอธิบาย ค่าเริ่มต้น
enabled เปิดใช้งานการดึงข้อมูลผู้ติดตามของเจ้าของ Relay (NIP-02) จาก Relay อื่น false
sync รายการ Relay อื่นๆ ที่จะดึงข้อมูลมา -

🛠 ขั้นตอนการติดตั้งและใช้งาน

Important

ต้องติดตั้ง Docker ให้เสร็จเรียบร้อยก่อนนะครับ และแน่ใจว่าเปิดใช้งานอยู่

การติดตั้ง

  1. โคลนโปรเจคและเข้าสู่ไดเรกทอรี:
git clone https://github.com/rushmi0/Fenrir-s.git
cd Fenrir-s
  1. ปรับแต่งไฟล์ application.toml ตามต้องการ

  2. รัน Docker Compose:

docker compose up relay-db relay-cache relay-app

การตั้งค่า Cloudflare Tunnel (Optional)

  1. สร้าง Cloudflare Tunnel และรับ Token
  2. แก้ไขไฟล์ docker-compose.yml และใส่ Token ในส่วนของ cloudflared-tunnel service

การเข้าถึง Relay

หลังจากรัน Docker สำเร็จ คุณสามารถเข้าถึง Relay ได้ที่:

  • ws://localhost:6724 (ภายในเครื่อง)
  • wss://your-domain.com (ผ่าน Cloudflare Tunnel, หากตั้งค่าไว้)

🔧 การแก้ไขปัญหาเบื้องต้น

  • ปัญหา: Docker ไม่สามารถรันได้ วิธีแก้: ตรวจสอบว่า Docker ทำงานอยู่และมีสิทธิ์เพียงพอ

  • ปัญหา: ไม่สามารถเชื่อมต่อกับ Relay ได้ วิธีแก้: ตรวจสอบการตั้งค่า firewall และพอร์ตที่ใช้

🔄 การอัปเดต

เมื่อมีเวอร์ชันใหม่ของ Fenrir-s:

  1. หยุดการทำงานของ Docker containers
  2. Pull โค้ดล่าสุดจาก GitHub
  3. รีบิวด์และรีสตาร์ท containers
git pull
docker compose down
docker compose up --build -d

👥 การมีส่วนร่วมในโปรเจค

  1. รายงานปัญหา -> Open Issue บน GitHub
  2. ส่ง Pull Request พร้อมคำอธิบายการปรับปรุงเปลี่ยนแปลง

📚 เอกสารเพิ่มเติม

💬 ติดต่อและสนับสนุน

  • Nostr : npub1ujevvncwfe22hv6d2cjv6pqwqhkvwlcvge7vgm3vcn2max9tu03sgze8ry
  • Zap : ⚡rushmi0@getalby.com

หากมีคำถามหรือข้อเสนอแนะเพิ่มเติม Open Issue ได้เลย!