mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
docs(guide): add a low-resource deployment guide in 21 languages (#548)
New guide/low-resource page: what runs well on 2 GB machines, a Raspberry Pi / old laptop Compose walkthrough with tuned caps, the env-var knobs that matter on small hardware, and what to skip. Linked from getting-started, the deployment hardware section, and the sidebar. Translated into all 20 non-English locales via the i18n batch pipeline; parity check and VitePress build pass. Admin merge: docs-only PR, the path-filtered required integration contexts never report (#420 precedent). Closes #497
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "ปรับใช้ SnapOtter สู่โปรดักชันด้วย Docker ความต้องการฮาร์ดแวร์ การตั้งค่า GPU และคอนฟิก reverse proxy สำหรับ Nginx, Traefik และ Cloudflare"
|
||||
i18n_output_hash: d21da61a4516
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
ตัวเลขเหล่านี้มาจากการทดสอบประสิทธิภาพบนระบบหลากหลาย ตั้งแต่เวิร์กสเตชัน amd64 รุ่นใหม่ที่มี NVIDIA RTX 4070 ไปจนถึง Raspberry Pi โดยรันแคตตาล็อกเครื่องมือทั้งชุดบนแต่ละเครื่อง และกวาดค่าขีดจำกัดทรัพยากรของ Docker เพื่อหาขีดต่ำสุดที่แท้จริง
|
||||
|
||||
หากใช้งานที่ปลายเล็กสุดของระดับเหล่านี้ (Pi แล็ปท็อปเครื่องเก่า หรือ VPS ขนาด 2 GB) หน้า [Low-Resource Setups](/th/guide/low-resource) จะเปลี่ยนตัวเลขเหล่านี้ให้เป็นคู่มือทีละขั้นที่เป็นรูปธรรม พร้อมขีดจำกัดที่ปรับจูนมาแล้ว
|
||||
|
||||
### Quick Reference {#quick-reference}
|
||||
|
||||
| ระดับ | กรณีใช้งาน | CPU | RAM | GPU | พื้นที่เก็บข้อมูล |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "ติดตั้ง SnapOtter ด้วย Docker ในคำสั่งเดียว รวมถึงการตั้งค่า Docker Compose การ build จากซอร์ส และภาพรวมฟีเจอร์ทั้งหมด"
|
||||
i18n_output_hash: 5353dda97d38
|
||||
i18n_source_hash: 24724b5595b2
|
||||
i18n_source_hash: 68bf7f60b68d
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -19,6 +19,8 @@ docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/sn
|
||||
|
||||
คอนเทนเนอร์เดียวนี้รันทุกอย่างที่จำเป็น: เมื่อไม่ได้ตั้งค่า `DATABASE_URL` มันจะเริ่ม PostgreSQL และ Redis ของตัวเองบนอินเทอร์เฟซ loopback (โหมด embedded) และเก็บข้อมูลทั้งหมดไว้ในวอลุ่ม `SnapOtter-data` นี่คือวิธีที่เร็วที่สุดในการลอง SnapOtter หรือ self-host บน homelab สำหรับโปรดักชัน ให้รันสแตก [Docker Compose](#docker-compose) ด้านล่าง ซึ่งเก็บ PostgreSQL และ Redis ไว้ในคอนเทนเนอร์ของตัวเอง โหมด embedded รันเป็น root (ค่าเริ่มต้น) และปิดโดยอัตโนมัติทันทีที่คุณตั้งค่า `DATABASE_URL`
|
||||
|
||||
หากกำลังติดตั้งบน Raspberry Pi แล็ปท็อปเครื่องเก่า หรือ VPS ขนาดเล็ก ดู [Low-Resource Setups](/th/guide/low-resource) สำหรับคู่มือทีละขั้นที่ปรับจูนมาแล้ว และสิ่งที่ควรคาดหวังจากฮาร์ดแวร์ที่จำกัด
|
||||
|
||||
คุณจะถูกขอให้เปลี่ยนรหัสผ่านตอนล็อกอินครั้งแรก
|
||||
|
||||
::: tip การวิเคราะห์ผลิตภัณฑ์แบบไม่ระบุตัวตน
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 9c3979ddfb1f
|
||||
---
|
||||
# Low-Resource Setups {#low-resource-setups}
|
||||
|
||||
SnapOtter ทำงานได้ดีบนฮาร์ดแวร์ขนาดเล็ก: Raspberry Pi 4 หรือ 5 แล็ปท็อปเครื่องเก่า หรือ VPS ขนาด 2 GB หน้านี้คือคู่มือภาคปฏิบัติสำหรับเครื่องเหล่านั้น: สิ่งที่ควรคาดหวัง การตั้งค่าแบบคัดลอกไปใช้ได้เลยพร้อมขีดจำกัดที่สมเหตุสมผล และฟีเจอร์ใดที่ควรข้าม ข้อมูลการทดสอบประสิทธิภาพฉบับเต็มเบื้องหลังตัวเลขเหล่านี้อยู่ใน [Hardware Requirements](/th/guide/deployment#hardware-requirements)
|
||||
|
||||
ข้อจำกัดตายตัวสองข้อก่อนอื่น:
|
||||
|
||||
- **64 บิตเท่านั้น** อิมเมจถูก build สำหรับ `linux/amd64` และ `linux/arm64` ไม่รองรับ ARM แบบ 32 บิต (`armv7`/`armhf`) ดังนั้น Pi รุ่นแรกและตระกูล Pi Zero จึงใช้ไม่ได้
|
||||
- **หน่วยความจำขั้นต่ำ 2 GB** 512 MB สตาร์ตสแตกไม่ได้ และ 1 GB จะล้มเหลวกับชุดงานหลายไฟล์ 2 GB กับ 2 คอร์คือคอนฟิกที่เล็กที่สุดที่ทำงานได้อย่างสบาย
|
||||
|
||||
## What runs well on small hardware {#what-runs-well}
|
||||
|
||||
เครื่องมือที่ไม่ใช่ AI ทุกตัวทำงานได้บนเครื่อง 2 GB / 2 คอร์: หมวดรูปภาพและไฟล์ทั้งหมด เครื่องมือ PDF และงานวิดีโอ/เสียงแบบ stream copy (ตัด ปิดเสียง เปลี่ยนคอนเทนเนอร์) ส่วนใหญ่เสร็จภายในไม่ถึงหนึ่งวินาที
|
||||
|
||||
เวิร์กโหลดสองแบบคือข้อยกเว้น:
|
||||
|
||||
- **การเข้ารหัสวิดีโอใหม่** (แปลงระหว่าง codec) ถูกจำกัดด้วย CPU คลิป 1080p ที่ใช้เวลา ~40 วินาทีบน CPU เดสก์ท็อปที่เร็ว อาจใช้เวลาหลายนาทีบน CPU ระดับ Pi ส่วนงานแบบ stream copy ยังคงเสร็จแทบจะทันที
|
||||
- **เครื่องมือ AI** ต้องการ RAM (แนะนำ 4 GB) และดิสก์ (บันเดิลขนาดใหญ่กินพื้นที่ชุดละ 4-5 GB) และตัวที่หนัก (การอัปสเกล การฟื้นฟูภาพถ่าย การลบพื้นหลัง) ไม่เหมาะกับ CPU ระดับ Pi ส่วน AI แบบเบา เช่น การตรวจจับใบหน้าและ OCR ยังใช้งานได้ถ้าคุณมีหน่วยความจำพอ
|
||||
|
||||
ทั้งสองอย่างจะไม่ถูกติดตั้งหรือทำงานจนกว่าคุณจะใช้มัน: เมื่อไม่ได้ติดตั้งบันเดิล AI ใด ๆ แอปจะใช้หน่วยความจำตอนว่างราว 360 MB และบันเดิล AI จะถูกดาวน์โหลดก็ต่อเมื่อผู้ดูแลระบบเปิดใช้งานเท่านั้น
|
||||
|
||||
## Raspberry Pi / old laptop walkthrough {#walkthrough}
|
||||
|
||||
นี่คือการติดตั้งด้วย Compose แบบมาตรฐานจาก [Getting Started](/th/guide/getting-started) บวกกับลิมิตทรัพยากรและขีดจำกัดแบบระมัดระวัง โดยสมมติว่าใช้ OS แบบ 64 บิต (บน Pi: Raspberry Pi OS 64-bit หรือ Ubuntu Server arm64)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
snapotter:
|
||||
image: snapotter/snapotter:latest
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- ./snapotter-data:/data
|
||||
environment:
|
||||
- DATABASE_URL=postgres://snapotter:snapotter@db:5432/snapotter
|
||||
- REDIS_URL=redis://redis:6379
|
||||
# Small-box profile: see the table below for what each cap does.
|
||||
- CONCURRENT_JOBS=1
|
||||
- MAX_WORKER_THREADS=2
|
||||
- MAX_BATCH_SIZE=5
|
||||
- MAX_UPLOAD_SIZE_MB=100
|
||||
- MAX_MEGAPIXELS=50
|
||||
- MAX_VIDEO_DURATION_S=300
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "2"
|
||||
memory: 2G
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
restart: unless-stopped
|
||||
|
||||
db:
|
||||
image: postgres:17-alpine
|
||||
environment:
|
||||
- POSTGRES_USER=snapotter
|
||||
- POSTGRES_PASSWORD=snapotter
|
||||
- POSTGRES_DB=snapotter
|
||||
volumes:
|
||||
- ./postgres-data:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
command: redis-server --maxmemory 256mb --maxmemory-policy noeviction
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
หมายเหตุสำหรับเครื่องระดับ Pi:
|
||||
|
||||
- **เลือกใช้ SSD แบบ USB แทนการ์ด SD** สำหรับวอลุ่มข้อมูลและ Postgres เวิร์กสเปซของงานมีการอ่านเขียนดิสก์จริง และการ์ด SD ทั้งช้าและสึกหรอเร็ว
|
||||
- **คอนเทนเนอร์เดียวแบบ all-in-one ก็ใช้ได้ที่นี่เช่นกัน** (Postgres และ Redis แบบ embedded เมื่อไม่ได้ตั้งค่า `DATABASE_URL`/`REDIS_URL`) และบนโฮสต์ที่หน่วยความจำจำกัด คุณควรลดเพดานของ Redis แบบ embedded ด้วย `REDIS_MAXMEMORY` (ดู [Configuration](/th/guide/configuration)) แต่ Compose ให้การควบคุมรายเซอร์วิสที่ละเอียดกว่า ซึ่งเป็นเหตุผลที่คู่มือนี้ใช้ Compose
|
||||
- **เพิ่ม swap บนอุปกรณ์ 2 GB** มันช่วยไม่ให้สไปก์ที่นาน ๆ เกิดที (PDF ขนาดใหญ่ หรือชุดงานที่คุณลืมจำกัด) จบลงด้วยการถูกฆ่าโปรเซสเพราะหน่วยความจำหมด ตัวเลือกที่เป็นมิตรกับการ์ด SD คือ zram
|
||||
- อิมเมจ arm64 ใช้ได้เฉพาะ CPU ไม่มี CUDA บนบอร์ด ARM
|
||||
|
||||
## The tuning knobs {#tuning-knobs}
|
||||
|
||||
ขีดจำกัดทั้งหมดเป็นตัวแปรสภาพแวดล้อม ซึ่งมีเอกสารครบถ้วนใน [Configuration](/th/guide/configuration) โดย `0` หมายถึงไม่จำกัดหรืออัตโนมัติ ตัวที่สำคัญบนฮาร์ดแวร์ขนาดเล็กได้แก่:
|
||||
|
||||
| ตัวแปร | ค่าแนะนำสำหรับเครื่องเล็ก | สิ่งที่มันป้องกัน |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | จำนวนงานที่รันพร้อมกัน การตรวจจับอัตโนมัติใช้จำนวนคอร์ CPU ลบหนึ่ง ซึ่งดีบนเครื่องใหญ่ แต่มากเกินไปบนเครื่อง 2 คอร์ที่หน่วยความจำตึงตัว |
|
||||
| `MAX_WORKER_THREADS` | `2` | เธรดพูลของการประมวลผลรูปภาพ |
|
||||
| `MAX_BATCH_SIZE` | `5` | ชุดงานคือจุดที่เครื่อง 1-2 GB หน่วยความจำหมดเป็นอย่างแรก |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | กันไม่ให้ไฟล์ใหญ่มากเพียงไฟล์เดียวกินพื้นที่เวิร์กสเปซทั้งหมด |
|
||||
| `MAX_MEGAPIXELS` | `50` | การถอดรหัสรูปภาพขนาด 100+ MP กิน RAM ไม่ว่าขนาดไฟล์จะเท่าใด |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | การแปลงรหัสที่ยาวนานยึด CPU เล็ก ๆ ไว้ตั้งแต่หลายนาทีจนถึงหลายชั่วโมง |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | เพดานตายตัวเพื่อให้งานที่หลุดการควบคุมคืนเครื่องให้ในที่สุด |
|
||||
|
||||
ขีดจำกัดเหล่านี้กำหนดสิ่งที่เซิร์ฟเวอร์ยอมรับ ดังนั้นตั้งค่าให้ตรงกับสิ่งที่คุณใช้จริง ไม่ใช่ให้เล็กที่สุดเท่าที่จะทำได้ ถ้าคุณไม่แตะวิดีโอเลย การจำกัด `MAX_VIDEO_DURATION_S` ไม่มีต้นทุนอะไร แต่ถ้าคุณสแกนเอกสารทุกวัน อย่าจำกัด `MAX_PDF_PAGES`
|
||||
|
||||
## What to skip {#what-to-skip}
|
||||
|
||||
- **บันเดิล AI ตัวหนัก** การอัปสเกล การฟื้นฟูภาพถ่าย และการลบพื้นหลังต้องการ GPU หรือ CPU หลายคอร์ที่เร็ว และแต่ละบันเดิลกินดิสก์ 4-5 GB บนเครื่องเล็กก็เพียงแค่อย่าติดตั้งมัน เครื่องมือที่บันเดิลยังไม่ถูกติดตั้งจะแสดงข้อความชวนติดตั้งแทนที่จะรัน
|
||||
- **การเข้ารหัสวิดีโอใหม่เป็นงานประจำ** แปลงรหัสเป็นครั้งคราวไม่มีปัญหา (แค่ช้า) แต่คิวแปลงรหัสที่ไหลเข้าตลอดต้องการคอร์ CPU ไม่ใช่ Pi
|
||||
- **เครื่องมือที่ไม่ได้ใช้โดยทั่วไป** ผู้ดูแลระบบสามารถปิดเครื่องมือรายตัวได้ใน Settings ซึ่งจะเอาเครื่องมือออกจาก UI และหยุดลงทะเบียนเส้นทาง API ของมัน ตัวมันเองไม่ได้ช่วยประหยัดหน่วยความจำ แต่ช่วยกันไม่ให้อินสแตนซ์เล็กที่ใช้ร่วมกันถูกใช้กับเวิร์กโหลดเดียวที่ฮาร์ดแวร์รับไม่ไหว
|
||||
|
||||
ถ้าภายหลังคุณย้ายอินสแตนซ์ไปยังฮาร์ดแวร์ที่ใหญ่ขึ้น ให้เอาขีดจำกัดออก (ตั้งกลับเป็น `0`) แล้ววอลุ่มข้อมูลเดิมจะใช้ต่อได้ทันที
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "คู่มือการเสริมความแข็งแกร่งด้านความปลอดภัยสำหรับ SnapOtter ความปลอดภัยของคอนเทนเนอร์ การแยกเครือข่าย Docker secrets การปรับใช้ Kubernetes และอาร์ทิแฟกต์ด้านการปฏิบัติตามข้อกำหนด"
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3c4f44580e5e
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user