บอกลา Pocket และ Raindrop: คู่มือติดตั้ง Linkwarden ระบบจัดการบุ๊กมาร์กส่วนตัวบน Home Server ด้วย Docker

ป้องกันปัญหาลิงก์เสีย (Link Rot) และเป็นเจ้าของคลังข้อมูลเว็บที่คุณบันทึกไว้อย่างแท้จริง ด้วยการติดตั้ง Linkwarden ระบบจัดการบุ๊กมาร์กโอเพนซอร์สบน Home Server ของตัวเอง

Share
บอกลา Pocket และ Raindrop: คู่มือติดตั้ง Linkwarden ระบบจัดการบุ๊กมาร์กส่วนตัวบน Home Server ด้วย Docker

คุณเคยเซฟลิงก์บทความดีๆ หรือหน้าเว็บที่เป็นประโยชน์เก็บไว้กะว่าจะกลับมาอ่านในภายหลัง แต่พอวันหนึ่งเปิดเข้าไปกลับพบหน้าจอว่างเปล่าพร้อมตัวเลข 404 Not Found หรือข้อความแจ้งว่าเว็บปิดตัวลงไปแล้วไหมครับ?

ปรากฏการณ์นี้ในโลกเทคโนโลยีเรียกกันว่า "Link Rot" (ลิงก์เน่าเปื่อย) ซึ่งเกิดขึ้นตลอดเวลาเมื่อเวลาผ่านไป ข้อมูลดีๆ บนอินเทอร์เน็ตที่เคยเขียนไว้อาจหายไปตลอดกาล และแม้ว่าเราจะใช้บริการบุ๊กมาร์กยอดนิยมอย่าง Pocket, Raindrop.io หรือ Instapaper บริการเหล่านั้นก็มักจะเก็บค่าสมาชิกรายเดือนราคาแพง หากเราต้องการใช้ฟีเจอร์เก็บบันทึกหน้าเว็บแบบออฟไลน์ (Permanent Library) แถมยังอาจนำพฤติกรรมการอ่านของเราไปวิเคราะห์เพื่อยิงโฆษณาอีกด้วย

เพื่อแก้ปัญหานี้และทวงคืนสิทธิ์การเป็นเจ้าของข้อมูลเว็บที่เราชื่นชอบ วันนี้เราจะมาติดตั้ง Linkwarden บน Home Server ของเราด้วย Docker กันครับ


Linkwarden คืออะไร?

Linkwarden คือโปรเจกต์โอเพนซอร์ส (Open-source) ที่ถูกออกแบบมาเพื่อเป็นเครื่องมือจัดการบุ๊กมาร์กแบบรักษาสิทธิ์ส่วนบุคคล (Privacy-preserving bookmark manager) และจัดเก็บข้อมูลอย่างถาวร

จุดเด่นของ Linkwarden ที่ทำให้เหนือกว่าตัวจัดการบุ๊กมาร์กแบบเดิมๆ ได้แก่: * เก็บถาวรด้วย PDF และภาพหน้าจอ (Preservation): ทุกครั้งที่คุณเซฟลิงก์ ระบบจะไม่เพียงแค่บันทึก URL เท่านั้น แต่จะทำการจับภาพหน้าจอ (Screenshot) และบันทึกหน้าเว็บนั้นออกมาเป็นไฟล์ PDF รวมถึงรูปแบบ Readability (เฉพาะเนื้อหาตัวอักษร) เก็บไว้ในเครื่องเซิร์ฟเวอร์ของคุณโดยอัตโนมัติ ทำให้คุณยังสามารถอ่านข้อมูลนั้นได้แม้เว็บต้นทางจะลบหน้านั้นทิ้งไปแล้ว * ระบบจัดระเบียบที่ยืดหยุ่น (Collections & Tags): คุณสามารถสร้างโฟลเดอร์ (Collections) จัดกลุ่มแบบโปรเจกต์ แยกประเภท และติดแท็กเพื่อให้ค้นหาได้ง่ายในอนาคต * แบ่งปันและทำงานร่วมกันได้ (Collaboration): หากคุณทำโปรเจกต์ร่วมกับคนอื่นในบ้านหรือทีมงาน คุณสามารถแชร์คอลเลกชันให้คนอื่นเข้ามาร่วมดูหรือเพิ่มลิงก์ได้ * รองรับส่วนขยายของเบราว์เซอร์ (Browser Extension): มีส่วนขยายอย่างเป็นทางการสำหรับ Chrome, Firefox, Safari และ Edge ทำให้สามารถกดเซฟลิงก์ได้ด้วยการคลิกเพียงครั้งเดียวขณะท่องเว็บ


สิ่งที่ต้องเตรียมก่อนเริ่มติดตั้ง

ในการติดตั้ง Linkwarden เราจำเป็นต้องใช้ทรัพยากรดังนี้: 1. Home Server ที่ลง Docker และ Docker Compose ไว้เรียบร้อยแล้ว 2. Reverse Proxy เช่น Caddy หรือ Nginx Proxy Manager หากคุณต้องการเข้าถึงแบบ HTTPS (แนะนำอย่างยิ่ง เพราะ Browser Extension จำเป็นต้องคุยผ่าน HTTPS เพื่อความปลอดภัยและความเสถียรในการส่งข้อมูล)


ขั้นตอนที่ 1: เตรียมโครงสร้างโฟลเดอร์และตั้งค่าไฟล์ Docker Compose

สร้างโฟลเดอร์สำหรับเก็บฐานข้อมูลและไฟล์แคชของหน้าเว็บออฟไลน์บนเซิร์ฟเวอร์ของคุณ:

# สร้างโฟลเดอร์หลักสำหรับ Linkwarden
mkdir -p ~/linkwarden/pgdata
mkdir -p ~/linkwarden/storage

# เข้าไปยังโฟลเดอร์ที่สร้าง
cd ~/linkwarden

สร้างไฟล์คอนฟิกสำหรับ Docker Compose โดยการสร้างไฟล์ชื่อ docker-compose.yml ขึ้นมา:

version: '3.8'

services:
  postgres:
    image: postgres:16-alpine
    container_name: linkwarden-db
    restart: always
    environment:
      POSTGRES_USER: linkwarden_user
      POSTGRES_PASSWORD: supersecretpassword # ควรเปลี่ยนรหัสผ่านนี้ให้ปลอดภัยขึ้น
      POSTGRES_DB: linkwarden_db
    volumes:
      - ./pgdata:/var/lib/postgresql/data

  linkwarden:
    image: ghcr.io/linkwarden/linkwarden:latest
    container_name: linkwarden-app
    restart: always
    environment:
      - DATABASE_URL=postgresql://linkwarden_user:supersecretpassword@postgres:5432/linkwarden_db
      - NEXTAUTH_URL=http://your-server-ip:3000 # เปลี่ยนเป็น IP ของ Home Server หรือ URL ของ Tailscale
      - NEXTAUTH_SECRET=generate_your_own_secret_key # คีย์สุ่มสำหรับเข้ารหัส Session
      - PAGELI_CLIENT_KEY=some-random-key-for-pageli
      - AUTOSCROLL_TIMEOUT=15000 # เวลาในการจับภาพหน้าเว็บ (มิลลิวินาที)
      - STORAGE_FOLDER=/data/storage
      - DISABLE_REGISTRATION=false # ตั้งเป็น false เพื่อสมัครบัญชีแรกก่อน จากนั้นค่อยปรับเป็น true เพื่อความปลอดภัย
    volumes:
      - ./storage:/data/storage
    ports:
      - "3000:3000"
    depends_on:
      - postgres
[!NOTE] คุณควรสร้างคีย์สุ่มที่ปลอดภัยสำหรับใช้แทน generate_your_own_secret_key ในตัวแปร NEXTAUTH_SECRET โดยคุณสามารถรันคำสั่งนี้บน Terminal เพื่อสุ่มคีย์ยาวๆ ขึ้นมา: openssl rand -hex 32

ขั้นตอนที่ 2: เริ่มต้นระบบและสมัครสมาชิกบัญชีแรก

หลังจากเตรียมไฟล์ตั้งค่าเรียบร้อยแล้ว ให้สั่งรันบริการขึ้นมา:

docker compose up -d

รอให้ Docker ทำการดาวน์โหลดอิมเมจและรันคอนเทนเนอร์จนเสร็จสิ้น จากนั้นเปิดเว็บบราวเซอร์แล้วเข้าไปที่ http://your-server-ip:3000 (หรือ URL ที่คุณระบุไว้)

คุณจะพบหน้าจอต้อนรับของ Linkwarden ให้ทำการคลิกสมัครสมาชิก (Register) และสร้างบัญชีผู้ใช้งานคนแรก บัญชีแรกนี้จะถูกตั้งสถานะให้เป็นผู้ดูแลระบบ (Admin) โดยอัตโนมัติ

คำแนะนำด้านความปลอดภัย: เมื่อสมัครบัญชีเรียบร้อยแล้ว หากคุณเป็นคนเดียวที่ใช้งานระบบและไม่ต้องการให้ใครแอบเข้ามาสมัครใช้เครื่องของคุณ ให้ปิดบริการชั่วคราวด้วยคำสั่ง docker compose down แล้วเข้าไปแก้ไขตัวแปรในไฟล์ docker-compose.yml ตรงจุดนี้:

      - DISABLE_REGISTRATION=true # เปลี่ยนจาก false เป็น true เพื่อปิดรับสมาชิกใหม่

จากนั้นรันคำสั่ง docker compose up -d อีกครั้งเพื่อเปิดบริการ ตอนนี้หน้าเว็บจะไม่มีปุ่มสมัครสมาชิกเหลืออยู่แล้ว ปลอดภัยแบบ 100%


ขั้นตอนที่ 3: เชื่อมต่อเข้ากับ Browser Extension

เพื่อให้การจัดเก็บลิงก์มีความลื่นไหลเหมือนใช้งาน Raindrop หรือ Pocket ให้ดาวน์โหลดส่วนขยาย Linkwarden จาก Web Store ของเบราว์เซอร์ที่คุณใช้อยู่ (เช่น Chrome Web Store หรือ Firefox Add-ons)

เมื่อติดตั้งเรียบร้อยแล้ว ให้คลิกที่ไอคอนส่วนขยาย และทำการระบุค่าตั้งค่าดังนี้: 1. Server URL: ใส่ที่อยู่ของเซิร์ฟเวอร์ เช่น https://linkwarden.yourdomain.ts.net หรือ IP ที่เข้าผ่านวงบ้านของคุณ 2. Access Token: คุณสามารถรับโทเค็นความปลอดภัยได้โดยการล็อกอินเข้าไปในหน้าเว็บของ Linkwarden ไปที่เมนู Settings -> API Keys แล้วกดปุ่มสร้างคีย์ใหม่ นำคีย์นั้นมากรอกลงในส่วนขยาย

เพียงเท่านี้ เมื่อคุณเจอหน้าเว็บหรือวิดีโอที่สนใจ คุณก็สามารถกดไอคอนส่วนขยาย เลือกคอลเลกชันที่ต้องการ และกดบันทึกได้ทันที ตัวเซิร์ฟเวอร์จะคอยโหลดภาพหน้าเว็บ หน้ากระดาษ PDF และเนื้อหาแบบอ่านง่ายเก็บสำรองไว้แบบเงียบๆ ใน Home Server ของคุณ


บทสรุป

การเปลี่ยนผ่านระบบสะสมข้อมูลความรู้ (Web Curation) มาสู่การทำ Self-hosted ด้วย Linkwarden ช่วยปกป้องกระเป๋าเงินของคุณจากค่าบริการรายเดือน และคุ้มครองอธิปไตยทางข้อมูลส่วนบุคคลของคุณ คุณสามารถเก็บสะสมไอเดีย ลิงก์อ้างอิงของบทความเด็ดๆ หรือกระทั่งเอกสารคู่มือต่างๆ ได้อย่างยั่งยืนโดยไม่ต้องกังวลถึงปัญหาลิงก์เสียหรือเรื่องของความเป็นส่วนตัวอีกต่อไปครับ

Read more

สร้าง AI Agent สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python

สร้าง AI Agent สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python + Ollama

เปลี่ยนเอกสารและโน้ตข้อความร้อยแก้วให้เป็น Knowledge Graph แบบโครงสร้าง (Subject-Predicate-Object) โดยอัตโนมัติ ด้วยสคริปต์ Python ร่วมกับ Local LLM ในเครื่อง ช่วยสกัดความสัมพันธ์ระหว่างความคิด เทคโนโลยี และบุคคลอย่างเป็นระบบออฟไลน์ 100%

By Linn
บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

เปลี่ยนคลังหนังสือเสียงและดิจิทัลไฟล์ของคุณให้กลายเป็นเซิร์ฟเวอร์สตรีมมิ่งส่วนตัว ด้วย Audiobookshelf บน Home Server ผ่าน Docker พร้อมวิธีซิงค์ความคืบหน้าการฟังข้ามอุปกรณ์แบบเรียลไทม์

By Linn
สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + O

สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + Ollama

เปลี่ยนไฮไลต์และโน้ตย่อยจากการอ่านหนังสือให้กลายเป็น Book Summary ที่ทรงคุณค่าด้วย AI Agent ออฟไลน์ส่วนตัวที่จะสกัด Core Key Takeaways, Actionable Insights และเชื่อมโยงเข้ากับระบบ Second Brain แบบ Local 100%

By Linn
สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

เรียนรู้วิธีตั้งค่า LiteLLM เป็น AI Gateway และ Router ในเครื่องตัวเอง เพื่อสลับรันโมเดล Ollama อัตโนมัติ ทั้งโมเดลเน้นความเร็ว โมเดลคิดวิเคราะห์เชิงลึก และโมเดลวิเคราะห์ภาพ ปลอดภัย 100% ไม่ต้องพึ่งคลาวด์

By Linn