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:
@@ -227,6 +227,7 @@ function buildBaseTheme() {
|
||||
{ text: "What SnapOtter collects", link: "/guide/telemetry" },
|
||||
{ text: "Supported Formats", link: "/guide/supported-formats" },
|
||||
{ text: "Hardware requirements", link: "/guide/deployment#hardware-requirements" },
|
||||
{ text: "Low-resource setups", link: "/guide/low-resource" },
|
||||
{ text: "Docker tags", link: "/guide/docker-tags" },
|
||||
{ text: "Developer guide", link: "/guide/developer" },
|
||||
{ text: "Translation guide", link: "/guide/translations" },
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "انشر SnapOtter في بيئة الإنتاج باستخدام Docker. متطلبات العتاد وإعداد GPU وإعدادات الوكيل العكسي لـ Nginx و Traefik و Cloudflare."
|
||||
i18n_output_hash: 44503f8d944c
|
||||
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 جيجابايت)؟ يحوّل [التشغيل على موارد محدودة](/ar/guide/low-resource) هذه الأرقام إلى شرح تطبيقي ملموس بسقوف مضبوطة.
|
||||
|
||||
### مرجع سريع {#quick-reference}
|
||||
|
||||
| المستوى | حالة الاستخدام | المعالج المركزي | الذاكرة | GPU | التخزين |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "ثبّت SnapOtter باستخدام Docker بأمر واحد. يشمل إعداد Docker Compose، والبناء من المصدر، ونظرة عامة كاملة على الميزات."
|
||||
i18n_output_hash: 83a518bd23e4
|
||||
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 الخاصين بها على واجهة الاسترجاع (الوضع المدمج) وتحتفظ بجميع البيانات في وحدة التخزين `SnapOtter-data`. إنها أسرع طريقة لتجربة SnapOtter أو الاستضافة الذاتية على مختبر منزلي. لبيئة الإنتاج، شغّل حزمة [Docker Compose](#docker-compose) أدناه، التي تبقي PostgreSQL و Redis في حاوياتهما الخاصة. يعمل الوضع المدمج كـ root (الافتراضي) ويتوقف تلقائيًا بمجرد تعيينك لـ `DATABASE_URL`.
|
||||
|
||||
هل تثبّت على Raspberry Pi أو حاسوب محمول قديم أو VPS صغير؟ راجع [التشغيل على موارد محدودة](/ar/guide/low-resource) للاطلاع على شرح تطبيقي مضبوط وما يمكن توقعه من العتاد المحدود.
|
||||
|
||||
سيُطلب منك تغيير كلمة مرورك عند أول تسجيل دخول.
|
||||
|
||||
::: tip تحليلات المنتج المجهولة
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 59e380ebd0b8
|
||||
---
|
||||
# التشغيل على موارد محدودة {#low-resource-setups}
|
||||
|
||||
يعمل SnapOtter جيدًا على العتاد الصغير: Raspberry Pi 4 أو 5، أو حاسوب محمول قديم، أو VPS بذاكرة 2 جيجابايت. هذه الصفحة هي الدليل العملي لتلك الأجهزة: ما الذي تتوقعه، وإعداد جاهز للنسخ واللصق بسقوف معقولة، وأي الميزات يُستحسن تجاوزها. بيانات الأداء الكاملة وراء هذه الأرقام موجودة في [متطلبات العتاد](/ar/guide/deployment#hardware-requirements).
|
||||
|
||||
قيدان صارمان بدايةً:
|
||||
|
||||
- **64 بت فقط.** تُبنى الصورة لـ `linux/amd64` و `linux/arm64`. معمارية ARM ذات 32 بت (`armv7`/`armhf`) غير مدعومة، لذا فأجهزة Pi من الجيل الأول وعائلة Pi Zero خارج الحسبان.
|
||||
- **حد أدنى للذاكرة قدره 2 جيجابايت.** لا تكفي 512 ميجابايت لبدء تشغيل المنظومة، وتفشل 1 جيجابايت مع دفعات الملفات المتعددة. أصغر تكوين يعمل بارتياح هو 2 جيجابايت مع نواتين.
|
||||
|
||||
## ما يعمل جيدًا على العتاد الصغير {#what-runs-well}
|
||||
|
||||
كل أداة لا تعتمد على الذكاء الاصطناعي تعمل على جهاز بذاكرة 2 جيجابايت ونواتين: قسما الصور والملفات بالكامل، وأدوات PDF، وعمليات الفيديو والصوت بنسخ التدفق (القص، وكتم الصوت، وتغيير الحاوية). ينتهي معظمها في أقل من ثانية.
|
||||
|
||||
عبءان هما الاستثناء:
|
||||
|
||||
- **إعادة ترميز الفيديو** (التحويل بين برامج الترميز) مقيدة بالمعالج. مقطع 1080p يستغرق نحو 40 ثانية على معالج مكتبي سريع قد يستغرق عدة دقائق على معالج من فئة Pi. أما عمليات نسخ التدفق فتبقى فورية.
|
||||
- **أدوات الذكاء الاصطناعي** تحتاج إلى ذاكرة (يوصى بـ 4 جيجابايت) وقرص (الحزم الأكبر تبلغ 4-5 جيجابايت لكل منها)، والثقيلة منها (رفع الدقة، واستعادة الصور، وإزالة الخلفية) غير عملية على معالجات فئة Pi. الذكاء الاصطناعي الخفيف مثل اكتشاف الوجوه و OCR قابل للاستخدام إن توفرت لديك الذاكرة له.
|
||||
|
||||
لا يُثبَّت أي منهما ولا يعمل ما لم تستخدمه: من دون حزم ذكاء اصطناعي مثبتة يستهلك التطبيق في وضع الخمول نحو 360 ميجابايت، ولا تُنزَّل حزم الذكاء الاصطناعي إلا عندما يفعّلها مدير النظام.
|
||||
|
||||
## شرح تطبيقي: Raspberry Pi / حاسوب محمول قديم {#walkthrough}
|
||||
|
||||
هذا هو تثبيت Compose القياسي من [البدء](/ar/guide/getting-started)، مع إضافة حدود للموارد وسقوف متحفظة. يفترض نظام تشغيل 64 بت (على Pi: نظام Raspberry Pi OS ذو 64 بت أو 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 بطيئة وسريعة التآكل معًا.
|
||||
- **الحاوية الواحدة الشاملة تعمل هنا أيضًا** (PostgreSQL و Redis مدمجان عندما يكون `DATABASE_URL`/`REDIS_URL` غير معيّنين)، وعلى مضيف محدود الذاكرة ينبغي خفض سقف Redis المدمج عبر `REDIS_MAXMEMORY` (انظر [الإعداد](/ar/guide/configuration)). يمنحك Compose تحكمًا أدق في كل خدمة على حدة، ولهذا يستخدمه هذا الشرح.
|
||||
- **أضف مساحة تبديل (swap) على الأجهزة ذات 2 جيجابايت.** فهي تمنع الذروة العارضة (ملف PDF كبير، أو دفعة نسيت تحديد سقفها) من أن تنتهي بإنهاء العملية بسبب نفاد الذاكرة. خيار zram هو الألطف ببطاقات SD.
|
||||
- صورة arm64 تعمل على المعالج فقط؛ لا وجود لـ CUDA على لوحات ARM.
|
||||
|
||||
## مقابض الضبط {#tuning-knobs}
|
||||
|
||||
كل السقوف متغيرات بيئة، موثقة بالكامل في [الإعداد](/ar/guide/configuration). تعني `0` غير محدود أو تلقائي. ما يهم منها على العتاد الصغير:
|
||||
|
||||
| المتغير | الاقتراح للأجهزة الصغيرة | ما يحميه |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | عدد المهام التي تعمل بالتوازي. يستخدم الاكتشاف التلقائي عدد أنوية المعالج ناقص واحد، وهو جيد على الأجهزة الكبيرة ومتحمس أكثر من اللازم على جهاز بنواتين تحت ضغط الذاكرة. |
|
||||
| `MAX_WORKER_THREADS` | `2` | مجمّع خيوط معالجة الصور. |
|
||||
| `MAX_BATCH_SIZE` | `5` | الدفعات هي أول ما تنفد عنده ذاكرة الأجهزة ذات 1-2 جيجابايت. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | يمنع ملفًا ضخمًا واحدًا من شغل مساحة العمل كلها. |
|
||||
| `MAX_MEGAPIXELS` | `50` | فك ترميز صورة تتجاوز 100 ميجابكسل يستهلك ذاكرة بصرف النظر عن حجم الملف. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | تستحوذ عمليات التحويل الطويلة على معالج صغير لدقائق أو ساعات. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | سقف صارم كي تحرر أي مهمة جامحة الجهاز في نهاية المطاف. |
|
||||
|
||||
تنطبق هذه السقوف على ما يقبله الخادم، لذا اضبطها لتطابق ما تستخدمه فعلًا لا لتكون أصغر ما يمكن. إن كنت لا تلمس الفيديو أبدًا فسقف `MAX_VIDEO_DURATION_S` لا يكلفك شيئًا؛ وإن كنت تمسح المستندات ضوئيًا يوميًا فلا تضع سقفًا لـ `MAX_PDF_PAGES`.
|
||||
|
||||
## ما يُستحسن تجاوزه {#what-to-skip}
|
||||
|
||||
- **حزم الذكاء الاصطناعي الثقيلة.** يحتاج رفع الدقة واستعادة الصور وإزالة الخلفية إلى GPU أو معالج سريع متعدد الأنوية، وتكلف كل حزمة 4-5 جيجابايت من القرص. على جهاز صغير، لا تثبتها ببساطة؛ فالأدوات التي تنقصها حزمتها تعرض دعوة إلى التثبيت بدل أن تعمل.
|
||||
- **إعادة ترميز الفيديو كعبء عمل معتاد.** لا بأس بعمليات تحويل عرضية (هي بطيئة فحسب)؛ أما طابور تحويل مستمر فيحتاج إلى أنوية معالج، لا إلى جهاز Pi.
|
||||
- **الأدوات غير المستخدمة عمومًا.** يستطيع مدير النظام إيقاف أدوات بعينها من الإعدادات (Settings)، فتختفي من الواجهة ويتوقف تسجيل مسارات API الخاصة بها. لا يوفر ذلك ذاكرة بحد ذاته، لكنه يمنع استخدام نسخة صغيرة مشتركة في العبء الوحيد الذي لا يحتمله العتاد.
|
||||
|
||||
إذا نقلت النسخة لاحقًا إلى عتاد أكبر، أزل السقوف (أعدها إلى `0`) وستنتقل وحدة تخزين البيانات نفسها كما هي.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "دليل تعزيز أمان SnapOtter. أمان الحاويات، وعزل الشبكة، وأسرار Docker، ونشر Kubernetes، وأدوات الامتثال."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 41275618e244
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "بنية تحتية مفتوحة المصدر وذاتية الاستضافة لمعالجة الملفات. حوّل، واضغط، و OCR، وانسخ نصيًا، وشغّل ذكاءً اصطناعيًا محليًا عبر الصور والفيديو والصوت و PDF والمستندات، عبر الواجهة و REST API وخطوط الأنابيب. استضِف ذاتيًا بأمر Docker واحد. ملفاتك لا تغادر خادمك أبدًا."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2e05f5dfe528
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter mit Docker in die Produktion bringen. Hardware-Anforderungen, GPU-Einrichtung und Reverse-Proxy-Konfigurationen für Nginx, Traefik und Cloudflare."
|
||||
i18n_output_hash: 0ea42bb214de
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Diese Werte stammen aus Benchmarks über eine Reihe von Systemen hinweg, von einer modernen amd64-Workstation mit einer NVIDIA RTX 4070 bis hinunter zu einem Raspberry Pi. Auf jedem wurde der gesamte Tool-Katalog ausgeführt und die Docker-Ressourcenlimits durchlaufen, um die tatsächliche Untergrenze zu ermitteln.
|
||||
|
||||
Du betreibst SnapOtter am unteren Ende dieser Stufen (ein Pi, ein alter Laptop, ein 2-GB-VPS)? [Ressourcenarme Setups](/de/guide/low-resource) macht aus diesen Zahlen eine konkrete Schritt-für-Schritt-Anleitung mit abgestimmten Limits.
|
||||
|
||||
### Kurzübersicht {#quick-reference}
|
||||
|
||||
| Stufe | Anwendungsfall | CPU | RAM | GPU | Speicher |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter mit Docker in einem einzigen Befehl installieren. Enthält Docker-Compose-Einrichtung, Bauen aus dem Quellcode und eine vollständige Funktionsübersicht."
|
||||
i18n_output_hash: 14356fc91e39
|
||||
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
|
||||
|
||||
Dieser einzelne Container führt alles aus, was er benötigt: Ohne gesetztes `DATABASE_URL` startet er sein eigenes PostgreSQL und Redis auf der Loopback-Schnittstelle (Embedded-Modus) und hält alle Daten im `SnapOtter-data`-Volume. Es ist der schnellste Weg, SnapOtter auszuprobieren oder in einem Homelab selbst zu hosten. Für die Produktion führe den [Docker-Compose](#docker-compose)-Stack unten aus, der PostgreSQL und Redis in ihren eigenen Containern hält. Der Embedded-Modus läuft als root (der Standard) und schaltet sich automatisch aus, sobald du `DATABASE_URL` setzt.
|
||||
|
||||
Du installierst auf einem Raspberry Pi, einem alten Laptop oder einem kleinen VPS? Siehe [Ressourcenarme Setups](/de/guide/low-resource) für eine abgestimmte Schritt-für-Schritt-Anleitung und was dich auf eingeschränkter Hardware erwartet.
|
||||
|
||||
Du wirst beim ersten Login aufgefordert, dein Passwort zu ändern.
|
||||
|
||||
::: tip Anonyme Produkt-Analytics
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 3b61925b1289
|
||||
---
|
||||
# Ressourcenarme Setups {#low-resource-setups}
|
||||
|
||||
SnapOtter läuft gut auf kleiner Hardware: einem Raspberry Pi 4 oder 5, einem alten Laptop oder einem 2-GB-VPS. Diese Seite ist der praktische Leitfaden für solche Maschinen: was dich erwartet, ein Copy-Paste-Setup mit vernünftigen Limits und welche Funktionen du auslassen solltest. Die vollständigen Benchmark-Daten hinter diesen Zahlen findest du unter [Hardware-Anforderungen](/de/guide/deployment#hardware-requirements).
|
||||
|
||||
Zwei harte Einschränkungen vorweg:
|
||||
|
||||
- **Nur 64-Bit.** Das Image wird für `linux/amd64` und `linux/arm64` gebaut. 32-Bit-ARM (`armv7`/`armhf`) wird nicht unterstützt; Pis der ersten Generation und die Pi-Zero-Familie fallen damit weg.
|
||||
- **Speicheruntergrenze 2 GB.** Mit 512 MB startet der Stack nicht, und 1 GB scheitert an Stapeln mit mehreren Dateien. 2 GB mit 2 Kernen sind die kleinste Konfiguration, die komfortabel funktioniert.
|
||||
|
||||
## Was auf kleiner Hardware gut läuft {#what-runs-well}
|
||||
|
||||
Jedes Nicht-KI-Tool funktioniert auf einer Maschine mit 2 GB und 2 Kernen: die Bereiche Bild und Dateien komplett, die PDF-Tools und die Stream-Copy-Operationen für Video und Audio (Trimmen, Stummschalten, Container-Remux). Die meisten sind in unter einer Sekunde fertig.
|
||||
|
||||
Zwei Workloads sind die Ausnahme:
|
||||
|
||||
- **Video-Neukodierung** (Konvertieren zwischen Codecs) ist CPU-gebunden. Ein 1080p-Clip, der auf einer schnellen Desktop-CPU ~40 s braucht, kann auf einer CPU der Pi-Klasse mehrere Minuten dauern. Stream-Copy-Operationen bleiben sofort fertig.
|
||||
- **KI-Tools** brauchen RAM (4 GB empfohlen) und Festplattenplatz (die größeren Bundles sind je 4-5 GB groß), und die schweren (Hochskalierung, Foto-Wiederherstellung, Hintergrundentfernung) sind auf CPUs der Pi-Klasse nicht praktikabel. Leichte KI wie Gesichtserkennung und OCR ist nutzbar, wenn der Speicher dafür reicht.
|
||||
|
||||
Beides ist weder installiert noch aktiv, solange du es nicht benutzt: Ohne installierte KI-Bundles braucht die App im Leerlauf rund 360 MB, und KI-Bundles werden erst heruntergeladen, wenn ein Admin sie aktiviert.
|
||||
|
||||
## Schritt für Schritt: Raspberry Pi / alter Laptop {#walkthrough}
|
||||
|
||||
Das ist die Standard-Compose-Installation aus [Erste Schritte](/de/guide/getting-started), plus Ressourcenlimits und konservative Obergrenzen. Sie setzt ein 64-Bit-Betriebssystem voraus (auf einem Pi: Raspberry Pi OS 64-bit oder 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
|
||||
```
|
||||
|
||||
Hinweise für Maschinen der Pi-Klasse:
|
||||
|
||||
- **Nimm lieber eine USB-SSD statt einer SD-Karte** für das Daten-Volume und Postgres. Job-Workspaces erzeugen echtes Disk-IO, und SD-Karten sind langsam und schnell verschlissen.
|
||||
- **Der All-in-One-Einzelcontainer funktioniert hier ebenfalls** (eingebettetes Postgres und Redis, wenn `DATABASE_URL`/`REDIS_URL` nicht gesetzt sind). Auf einem Host mit knappem Speicher solltest du das Limit seines eingebetteten Redis mit `REDIS_MAXMEMORY` senken (siehe [Konfiguration](/de/guide/configuration)). Compose gibt dir feinere Kontrolle pro Service, deshalb nutzt diese Anleitung Compose.
|
||||
- **Richte auf 2-GB-Geräten Swap ein.** Das verhindert, dass die gelegentliche Spitze (ein großes PDF, ein Stapel, den du zu begrenzen vergessen hast) in einem Out-of-Memory-Kill endet. zram ist die SD-Karten-freundliche Variante.
|
||||
- Das arm64-Image ist reine CPU; auf ARM-Boards gibt es kein CUDA.
|
||||
|
||||
## Die Stellschrauben {#tuning-knobs}
|
||||
|
||||
Alle Obergrenzen sind Umgebungsvariablen und vollständig unter [Konfiguration](/de/guide/configuration) dokumentiert. `0` bedeutet unbegrenzt oder automatisch. Die wichtigen auf kleiner Hardware:
|
||||
|
||||
| Variable | Vorschlag für kleine Maschinen | Wovor sie schützt |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Wie viele Jobs parallel laufen. Die Auto-Erkennung nimmt CPU-Kerne minus eins; auf großen Maschinen passt das, auf einer 2-Kern-Box unter Speicherdruck ist es zu forsch. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Thread-Pool der Bildverarbeitung. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Bei Stapeln geht Maschinen mit 1-2 GB zuerst der Speicher aus. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Verhindert, dass eine einzelne riesige Datei den gesamten Workspace belegt. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Das Dekodieren eines Bilds mit 100+ MP kostet RAM, unabhängig von der Dateigröße. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Lange Transkodierungen blockieren eine kleine CPU für Minuten bis Stunden. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Harte Obergrenze, damit ein außer Kontrolle geratener Job die Maschine irgendwann wieder freigibt. |
|
||||
|
||||
Diese Obergrenzen gelten für das, was der Server annimmt. Setze sie also passend zu dem, was du tatsächlich nutzt, nicht so klein wie möglich. Wenn du Video nie anfasst, kostet ein `MAX_VIDEO_DURATION_S`-Limit nichts; wenn du täglich Dokumente scannst, begrenze `MAX_PDF_PAGES` nicht.
|
||||
|
||||
## Was du auslassen solltest {#what-to-skip}
|
||||
|
||||
- **Schwere KI-Bundles.** Hochskalierung, Foto-Wiederherstellung und Hintergrundentfernung wollen eine GPU oder eine schnelle CPU mit vielen Kernen, und jedes Bundle kostet 4-5 GB Festplattenplatz. Auf einer kleinen Maschine installierst du sie einfach nicht; Tools, deren Bundle fehlt, zeigen eine Installationsaufforderung, statt zu laufen.
|
||||
- **Video-Neukodierung als Dauer-Workload.** Gelegentliche Transkodierungen sind in Ordnung (sie sind nur langsam); eine stetige Transcode-Warteschlange braucht CPU-Kerne, keinen Pi.
|
||||
- **Ungenutzte Tools generell.** Ein Admin kann einzelne Tools in den Einstellungen abschalten; das entfernt sie aus der Oberfläche und registriert ihre API-Routen nicht mehr. Für sich genommen spart das keinen Speicher, aber es verhindert, dass eine geteilte kleine Instanz für genau den Workload benutzt wird, den die Hardware nicht stemmen kann.
|
||||
|
||||
Wenn du die Instanz später auf größere Hardware umziehst, entferne die Obergrenzen (setze sie zurück auf `0`); dasselbe Daten-Volume nimmst du einfach mit.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Leitfaden zur Sicherheitshärtung für SnapOtter. Container-Sicherheit, Netzwerkisolierung, Docker-Secrets, Kubernetes-Deployment und Compliance-Artefakte."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 807a330f6ec7
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Open-Source-Infrastruktur zur Dateiverarbeitung, selbst gehostet. Konvertiere, komprimiere, OCR, transkribiere und führe lokale KI über Bild, Video, Audio, PDF und Dokumente aus, per UI, REST-API und Pipelines. Selbst hosten mit einem einzigen Docker-Befehl. Deine Dateien verlassen niemals deinen Server."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f7d4daca0081
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Despliega SnapOtter en producción con Docker. Requisitos de hardware, configuración de GPU y configuraciones de proxy inverso para Nginx, Traefik y Cloudflare."
|
||||
i18n_output_hash: 8d748bf9af34
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Estos números provienen de pruebas de rendimiento en una variedad de sistemas, desde una estación de trabajo amd64 moderna con una NVIDIA RTX 4070 hasta una Raspberry Pi, ejecutando todo el catálogo de herramientas en cada uno y ajustando los límites de recursos de Docker para encontrar el mínimo real.
|
||||
|
||||
¿Estás en el extremo bajo de estos niveles (una Pi, un portátil viejo, un VPS de 2 GB)? [Configuraciones con recursos limitados](/es/guide/low-resource) convierte estos números en una guía paso a paso concreta con topes ajustados.
|
||||
|
||||
### Referencia rápida {#quick-reference}
|
||||
|
||||
| Nivel | Caso de uso | CPU | RAM | GPU | Almacenamiento |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Instala SnapOtter con Docker en un solo comando. Incluye la configuración de Docker Compose, la compilación desde el código fuente y una descripción completa de las funciones."
|
||||
i18n_output_hash: d513d36ca8ba
|
||||
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
|
||||
|
||||
Este único contenedor ejecuta todo lo que necesita: sin `DATABASE_URL` definido, inicia su propio PostgreSQL y Redis en la interfaz de loopback (modo embebido) y mantiene todos los datos en el volumen `SnapOtter-data`. Es la forma más rápida de probar SnapOtter o de autoalojarlo en un homelab. Para producción, ejecuta la pila de [Docker Compose](#docker-compose) que aparece abajo, que mantiene PostgreSQL y Redis en sus propios contenedores. El modo embebido se ejecuta como root (el valor por defecto) y se desactiva automáticamente en cuanto defines `DATABASE_URL`.
|
||||
|
||||
¿Vas a instalar en una Raspberry Pi, un portátil viejo o un VPS pequeño? Consulta [Configuraciones con recursos limitados](/es/guide/low-resource) para una guía paso a paso ajustada y saber qué esperar de un hardware limitado.
|
||||
|
||||
Se te pedirá que cambies tu contraseña en el primer inicio de sesión.
|
||||
|
||||
::: tip Analítica Anónima de Producto
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: c2d85458029e
|
||||
---
|
||||
# Configuraciones con recursos limitados {#low-resource-setups}
|
||||
|
||||
SnapOtter funciona bien en hardware modesto: una Raspberry Pi 4 o 5, un portátil viejo o un VPS de 2 GB. Esta página es la guía práctica para esas máquinas: qué esperar, una instalación de copiar y pegar con topes sensatos, y qué funciones conviene omitir. Los datos de benchmark completos detrás de estas cifras están en [Requisitos de hardware](/es/guide/deployment#hardware-requirements).
|
||||
|
||||
Dos restricciones duras de entrada:
|
||||
|
||||
- **Solo 64 bits.** La imagen se compila para `linux/amd64` y `linux/arm64`. ARM de 32 bits (`armv7`/`armhf`) no está soportado, así que las Pi de primera generación y la familia Pi Zero quedan fuera.
|
||||
- **Mínimo de 2 GB de memoria.** Con 512 MB la pila no arranca, y con 1 GB fallan los lotes de varios archivos. 2 GB con 2 núcleos es la configuración más pequeña que funciona con holgura.
|
||||
|
||||
## Qué funciona bien en hardware modesto {#what-runs-well}
|
||||
|
||||
Todas las herramientas sin IA funcionan en una máquina de 2 GB y 2 núcleos: las secciones de Imagen y Archivos completas, las herramientas de PDF y las operaciones de vídeo y audio por copia de flujo (recortar, silenciar, cambiar de contenedor). La mayoría termina en menos de un segundo.
|
||||
|
||||
Dos cargas de trabajo son la excepción:
|
||||
|
||||
- **La recodificación de vídeo** (convertir entre códecs) está limitada por la CPU. Un clip 1080p que tarda ~40 s en una CPU de escritorio rápida puede tardar varios minutos en una CPU de clase Pi. Las operaciones por copia de flujo siguen siendo instantáneas.
|
||||
- **Las herramientas de IA** necesitan RAM (4 GB recomendados) y disco (los bundles más grandes ocupan 4-5 GB cada uno), y las pesadas (ampliación, restauración de fotos, eliminación de fondo) no son prácticas en CPUs de clase Pi. La IA ligera, como la detección de caras y el OCR, es usable si tienes memoria para ella.
|
||||
|
||||
Nada de esto se instala ni se ejecuta a menos que lo uses: sin bundles de IA instalados, la aplicación consume en reposo unos 360 MB, y los bundles de IA solo se descargan cuando un administrador los habilita.
|
||||
|
||||
## Guía paso a paso: Raspberry Pi / portátil viejo {#walkthrough}
|
||||
|
||||
Es la instalación estándar con Compose de [Primeros pasos](/es/guide/getting-started), más límites de recursos y topes conservadores. Supone un sistema operativo de 64 bits (en una Pi: Raspberry Pi OS de 64 bits o 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
|
||||
```
|
||||
|
||||
Notas para máquinas de clase Pi:
|
||||
|
||||
- **Prefiere un SSD USB antes que una tarjeta SD** para el volumen de datos y Postgres. Los espacios de trabajo de los jobs hacen E/S de disco real, y las tarjetas SD son lentas y se desgastan rápido.
|
||||
- **El contenedor único todo en uno también funciona aquí** (PostgreSQL y Redis embebidos cuando `DATABASE_URL`/`REDIS_URL` no están definidos), y en un host con poca memoria conviene bajar el tope de su Redis embebido con `REDIS_MAXMEMORY` (consulta [Configuración](/es/guide/configuration)). Compose te da un control más fino por servicio, y por eso esta guía lo usa.
|
||||
- **Añade swap en dispositivos de 2 GB.** Evita que el pico ocasional (un PDF grande, un lote que olvidaste limitar) acabe en un cierre por falta de memoria. zram es la opción que menos castiga la tarjeta SD.
|
||||
- La imagen arm64 es solo CPU; no hay CUDA en placas ARM.
|
||||
|
||||
## Los ajustes que importan {#tuning-knobs}
|
||||
|
||||
Todos los topes son variables de entorno, documentadas al completo en [Configuración](/es/guide/configuration). `0` significa ilimitado o automático. Los que importan en hardware modesto:
|
||||
|
||||
| Variable | Sugerencia para máquinas pequeñas | Qué protege |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Cuántos jobs se ejecutan en paralelo. La autodetección usa los núcleos de CPU menos uno, lo cual va bien en máquinas grandes y es demasiado agresivo en una caja de 2 núcleos con presión de memoria. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Grupo de hilos del procesamiento de imágenes. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Los lotes son donde las máquinas de 1-2 GB se quedan sin memoria primero. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Evita que un solo archivo enorme ocupe todo el espacio de trabajo. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Decodificar una imagen de más de 100 MP cuesta RAM sin importar el tamaño del archivo. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Las transcodificaciones largas monopolizan una CPU pequeña durante minutos u horas. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Techo duro para que un job descontrolado libere la máquina en algún momento. |
|
||||
|
||||
Estos topes se aplican a lo que el servidor acepta, así que ajústalos a lo que realmente usas, no lo más bajo posible. Si nunca tocas vídeo, un tope de `MAX_VIDEO_DURATION_S` no cuesta nada; si escaneas documentos a diario, no limites `MAX_PDF_PAGES`.
|
||||
|
||||
## Qué omitir {#what-to-skip}
|
||||
|
||||
- **Los bundles de IA pesados.** La ampliación, la restauración de fotos y la eliminación de fondo piden una GPU o una CPU rápida de muchos núcleos, y cada bundle cuesta 4-5 GB de disco. En una máquina pequeña, simplemente no los instales; las herramientas cuyo bundle falta muestran un aviso de instalación en lugar de ejecutarse.
|
||||
- **La recodificación de vídeo como carga habitual.** Las transcodificaciones ocasionales están bien (solo son lentas); una cola de transcodificación constante pide núcleos de CPU, no una Pi.
|
||||
- **Las herramientas sin uso, en general.** Un administrador puede desactivar herramientas individuales en Ajustes, lo que las quita de la interfaz y deja de registrar sus rutas de API. Eso por sí solo no ahorra memoria, pero evita que una instancia pequeña compartida se use justo para la carga que el hardware no aguanta.
|
||||
|
||||
Si más adelante mueves la instancia a hardware más potente, quita los topes (devuélvelos a `0`) y el mismo volumen de datos se conserva tal cual.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Guía de fortalecimiento de seguridad para SnapOtter. Seguridad de contenedores, aislamiento de red, secretos de Docker, despliegue en Kubernetes y artefactos de cumplimiento."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ab6055b24928
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "Documentación de SnapOtter"
|
||||
description: "Infraestructura de procesamiento de archivos de código abierto y autoalojada. Convierte, comprime, aplica OCR, transcribe y ejecuta IA local en imágenes, vídeo, audio, PDF y documentos, mediante la interfaz, la API REST y las canalizaciones. Autoalójala con un solo comando de Docker. Tus archivos nunca salen de tu servidor."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0430b24a5120
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Déployez SnapOtter en production avec Docker. Exigences matérielles, configuration GPU et configs de reverse proxy pour Nginx, Traefik et Cloudflare."
|
||||
i18n_output_hash: 61b221ad6255
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Ces chiffres proviennent de tests de performance sur toute une gamme de systèmes, d'un poste de travail amd64 moderne équipé d'une NVIDIA RTX 4070 jusqu'à un Raspberry Pi, en exécutant l'intégralité du catalogue d'outils sur chacun et en balayant les limites de ressources Docker pour trouver le plancher réel.
|
||||
|
||||
Vous tournez au bas de ces niveaux (un Pi, un vieux portable, un VPS de 2 Go) ? [Configurations à ressources limitées](/fr/guide/low-resource) transforme ces chiffres en un pas à pas concret avec des plafonds ajustés.
|
||||
|
||||
### Référence rapide {#quick-reference}
|
||||
|
||||
| Niveau | Cas d'usage | CPU | RAM | GPU | Stockage |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Installez SnapOtter avec Docker en une seule commande. Inclut la configuration Docker Compose, la construction depuis les sources et un aperçu complet des fonctionnalités."
|
||||
i18n_output_hash: 2c2f3f2e8ae1
|
||||
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
|
||||
|
||||
Ce conteneur unique exécute tout ce dont il a besoin : sans `DATABASE_URL` défini, il démarre ses propres PostgreSQL et Redis sur l'interface de bouclage (mode embarqué) et conserve toutes les données dans le volume `SnapOtter-data`. C'est le moyen le plus rapide d'essayer SnapOtter ou de l'auto-héberger sur un homelab. Pour la production, exécutez la pile [Docker Compose](#docker-compose) ci-dessous, qui garde PostgreSQL et Redis dans leurs propres conteneurs. Le mode embarqué s'exécute en root (le défaut) et se désactive automatiquement dès que vous définissez `DATABASE_URL`.
|
||||
|
||||
Vous installez sur un Raspberry Pi, un vieux portable ou un petit VPS ? Consultez [Configurations à ressources limitées](/fr/guide/low-resource) pour un guide pas à pas adapté et savoir à quoi vous attendre sur du matériel contraint.
|
||||
|
||||
Il vous sera demandé de changer votre mot de passe à la première connexion.
|
||||
|
||||
::: tip Analytique produit anonyme
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 8abf658cb1e3
|
||||
---
|
||||
# Configurations à ressources limitées {#low-resource-setups}
|
||||
|
||||
SnapOtter tourne bien sur du petit matériel : un Raspberry Pi 4 ou 5, un vieux portable ou un VPS de 2 Go. Cette page est le guide pratique pour ces machines : à quoi s'attendre, une installation à copier-coller avec des plafonds raisonnables, et quelles fonctionnalités laisser de côté. Les données de benchmark complètes derrière ces chiffres se trouvent dans [Exigences matérielles](/fr/guide/deployment#hardware-requirements).
|
||||
|
||||
Deux contraintes strictes d'emblée :
|
||||
|
||||
- **64 bits uniquement.** L'image est construite pour `linux/amd64` et `linux/arm64`. L'ARM 32 bits (`armv7`/`armhf`) n'est pas pris en charge : les Pi de première génération et la famille Pi Zero sont donc exclus.
|
||||
- **Plancher mémoire de 2 Go.** 512 Mo ne suffisent pas à démarrer la pile, et 1 Go échoue sur les lots multi-fichiers. 2 Go avec 2 cœurs est la plus petite configuration qui fonctionne confortablement.
|
||||
|
||||
## Ce qui tourne bien sur du petit matériel {#what-runs-well}
|
||||
|
||||
Tous les outils non-IA fonctionnent sur une machine à 2 Go / 2 cœurs : l'intégralité des sections Image et Fichiers, les outils PDF et les opérations vidéo et audio en copie de flux (couper, couper le son, changement de conteneur). La plupart se terminent en moins d'une seconde.
|
||||
|
||||
Deux charges de travail font exception :
|
||||
|
||||
- **Le réencodage vidéo** (conversion entre codecs) est limité par le CPU. Un clip 1080p qui prend ~40 s sur un CPU de bureau rapide peut prendre plusieurs minutes sur un CPU de classe Pi. Les opérations en copie de flux restent instantanées.
|
||||
- **Les outils IA** demandent de la RAM (4 Go recommandés) et du disque (les bundles les plus gros font 4-5 Go chacun), et les plus lourds (mise à l'échelle, restauration de photos, suppression d'arrière-plan) ne sont pas praticables sur des CPU de classe Pi. L'IA légère comme la détection de visages et l'OCR reste utilisable si vous avez la mémoire nécessaire.
|
||||
|
||||
Rien de tout cela n'est installé ni actif tant que vous ne l'utilisez pas : sans bundle IA installé, l'application tourne au repos autour de 360 Mo, et les bundles IA ne se téléchargent que lorsqu'un admin les active.
|
||||
|
||||
## Pas à pas : Raspberry Pi / vieux portable {#walkthrough}
|
||||
|
||||
C'est l'installation Compose standard de [Prise en main](/fr/guide/getting-started), plus des limites de ressources et des plafonds prudents. Elle suppose un OS 64 bits (sur un Pi : Raspberry Pi OS 64 bits ou 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
|
||||
```
|
||||
|
||||
Remarques pour les machines de classe Pi :
|
||||
|
||||
- **Préférez un SSD USB à une carte SD** pour le volume de données et Postgres. Les espaces de travail des jobs font de vraies E/S disque, et les cartes SD sont à la fois lentes et vite usées.
|
||||
- **Le conteneur unique tout-en-un fonctionne aussi ici** (PostgreSQL et Redis embarqués quand `DATABASE_URL`/`REDIS_URL` ne sont pas définis), et sur un hôte à mémoire contrainte, abaissez le plafond de son Redis embarqué avec `REDIS_MAXMEMORY` (voir [Configuration](/fr/guide/configuration)). Compose vous donne un contrôle plus fin par service, c'est pourquoi ce pas à pas l'utilise.
|
||||
- **Ajoutez du swap sur les appareils à 2 Go.** Cela évite qu'un pic occasionnel (un gros PDF, un lot que vous avez oublié de plafonner) se termine en arrêt pour manque de mémoire. zram est l'option qui ménage les cartes SD.
|
||||
- L'image arm64 est CPU uniquement ; il n'y a pas de CUDA sur les cartes ARM.
|
||||
|
||||
## Les leviers de réglage {#tuning-knobs}
|
||||
|
||||
Tous les plafonds sont des variables d'environnement, documentées en détail dans [Configuration](/fr/guide/configuration). `0` signifie illimité ou automatique. Ceux qui comptent sur du petit matériel :
|
||||
|
||||
| Variable | Suggestion petite machine | Ce que ce plafond protège |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Combien de jobs s'exécutent en parallèle. L'auto-détection prend les cœurs CPU moins un : très bien sur une grosse machine, trop gourmand sur une boîte à 2 cœurs sous pression mémoire. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Pool de threads du traitement d'image. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Les lots sont le premier endroit où les machines à 1-2 Go manquent de mémoire. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Empêche un seul fichier énorme d'occuper tout l'espace de travail. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Décoder une image de plus de 100 MP coûte de la RAM, quelle que soit la taille du fichier. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Les longs transcodages monopolisent un petit CPU pendant des minutes, voire des heures. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Plafond dur pour qu'un job hors de contrôle finisse par libérer la machine. |
|
||||
|
||||
Ces plafonds s'appliquent à ce que le serveur accepte : réglez-les donc selon ce que vous utilisez réellement, pas au plus bas possible. Si vous ne touchez jamais à la vidéo, un plafond `MAX_VIDEO_DURATION_S` ne coûte rien ; si vous numérisez des documents tous les jours, ne plafonnez pas `MAX_PDF_PAGES`.
|
||||
|
||||
## Ce qu'il faut laisser de côté {#what-to-skip}
|
||||
|
||||
- **Les bundles IA lourds.** La mise à l'échelle, la restauration de photos et la suppression d'arrière-plan demandent un GPU ou un CPU rapide à nombreux cœurs, et chaque bundle coûte 4-5 Go de disque. Sur une petite machine, ne les installez tout simplement pas ; les outils dont le bundle manque affichent une invite d'installation au lieu de s'exécuter.
|
||||
- **Le réencodage vidéo comme charge de travail régulière.** Des transcodages occasionnels ne posent pas de problème (ils sont juste lents) ; une file de transcodage continue demande des cœurs CPU, pas un Pi.
|
||||
- **Les outils inutilisés en général.** Un admin peut désactiver des outils individuels dans Settings, ce qui les retire de l'interface et cesse d'enregistrer leurs routes API. Cela ne libère pas de mémoire en soi, mais évite qu'une petite instance partagée serve précisément à la charge de travail que le matériel ne peut pas encaisser.
|
||||
|
||||
Si vous déplacez plus tard l'instance vers du matériel plus puissant, retirez les plafonds (remettez-les à `0`) et le même volume de données suit tel quel.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Guide de durcissement de la sécurité pour SnapOtter. Sécurité des conteneurs, isolation réseau, secrets Docker, déploiement Kubernetes et artefacts de conformité."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8bb727ee4418
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Infrastructure de traitement de fichiers open source et auto-hébergée. Convertissez, compressez, OCRisez, transcrivez et exécutez de l'IA locale sur les images, vidéos, audios, PDF et documents, via une interface, une API REST et des pipelines. Auto-hébergez avec une seule commande Docker. Vos fichiers ne quittent jamais votre serveur."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 693fe3c716cc
|
||||
---
|
||||
|
||||
|
||||
@@ -209,6 +209,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
These numbers come from benchmarks across a range of systems, from a modern amd64 workstation with an NVIDIA RTX 4070 down to a Raspberry Pi, running the whole tool catalog on each and sweeping Docker resource limits to find the real floor.
|
||||
|
||||
Running at the small end of these tiers (a Pi, an old laptop, a 2 GB VPS)? [Low-Resource Setups](/guide/low-resource) turns these numbers into a concrete walkthrough with tuned caps.
|
||||
|
||||
### Quick Reference {#quick-reference}
|
||||
|
||||
| Tier | Use Case | CPU | RAM | GPU | Storage |
|
||||
|
||||
@@ -16,6 +16,8 @@ docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/sn
|
||||
|
||||
This single container runs everything it needs: with no `DATABASE_URL` set, it starts its own PostgreSQL and Redis on the loopback interface (embedded mode) and keeps all data in the `SnapOtter-data` volume. It is the fastest way to try SnapOtter or self-host on a homelab. For production, run the [Docker Compose](#docker-compose) stack below, which keeps PostgreSQL and Redis in their own containers. Embedded mode runs as root (the default) and turns off automatically as soon as you set `DATABASE_URL`.
|
||||
|
||||
Installing on a Raspberry Pi, an old laptop, or a small VPS? See [Low-Resource Setups](/guide/low-resource) for a tuned walkthrough and what to expect from constrained hardware.
|
||||
|
||||
You will be asked to change your password on first login.
|
||||
|
||||
::: tip Anonymous Product Analytics
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
# Low-Resource Setups {#low-resource-setups}
|
||||
|
||||
SnapOtter runs well on small hardware: a Raspberry Pi 4 or 5, an old laptop, or a 2 GB VPS. This page is the practical guide for those machines: what to expect, a copy-paste setup with sensible caps, and which features to skip. The full benchmark data behind these numbers lives in [Hardware Requirements](/guide/deployment#hardware-requirements).
|
||||
|
||||
Two hard constraints up front:
|
||||
|
||||
- **64-bit only.** The image is built for `linux/amd64` and `linux/arm64`. 32-bit ARM (`armv7`/`armhf`) is not supported, so first-generation Pis and the Pi Zero family are out.
|
||||
- **2 GB memory floor.** 512 MB cannot start the stack, and 1 GB fails on multi-file batches. 2 GB with 2 cores is the smallest configuration that works comfortably.
|
||||
|
||||
## What runs well on small hardware {#what-runs-well}
|
||||
|
||||
Every non-AI tool works on a 2 GB / 2-core machine: the whole Image and Files sections, PDF tools, and the stream-copy video and audio operations (trim, mute, container remux). Most finish in under a second.
|
||||
|
||||
Two workloads are the exceptions:
|
||||
|
||||
- **Video re-encoding** (converting between codecs) is CPU-bound. A 1080p clip that takes ~40 s on a fast desktop CPU can take several minutes on a Pi-class CPU. Stream-copy operations stay instant.
|
||||
- **AI tools** need RAM (4 GB recommended) and disk (the larger bundles are 4-5 GB each), and the heavy ones (upscaling, photo restoration, background removal) are not practical on Pi-class CPUs. Light AI such as face detection and OCR is usable if you have the memory for it.
|
||||
|
||||
Neither is installed or running unless you use it: with no AI bundles installed the app idles around 360 MB, and AI bundles only download when an admin enables them.
|
||||
|
||||
## Raspberry Pi / old laptop walkthrough {#walkthrough}
|
||||
|
||||
This is the standard Compose install from [Getting Started](/guide/getting-started), plus resource limits and conservative caps. It assumes a 64-bit OS (on a Pi: Raspberry Pi OS 64-bit or 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
|
||||
```
|
||||
|
||||
Notes for Pi-class machines:
|
||||
|
||||
- **Prefer a USB SSD over an SD card** for the data volume and Postgres. Job workspaces do real disk IO, and SD cards are both slow and quick to wear out.
|
||||
- **The all-in-one single container also works here** (embedded Postgres and Redis when `DATABASE_URL`/`REDIS_URL` are unset), and on a memory-constrained host you should lower its embedded Redis cap with `REDIS_MAXMEMORY` (see [Configuration](/guide/configuration)). Compose gives you finer per-service control, which is why this walkthrough uses it.
|
||||
- **Add swap on 2 GB devices.** It keeps the occasional spike (a large PDF, a batch you forgot to cap) from ending in an out-of-memory kill. zram is the SD-card-friendly option.
|
||||
- The arm64 image is CPU-only; there is no CUDA on ARM boards.
|
||||
|
||||
## The tuning knobs {#tuning-knobs}
|
||||
|
||||
All caps are environment variables, documented fully in [Configuration](/guide/configuration). `0` means unlimited or auto. The ones that matter on small hardware:
|
||||
|
||||
| Variable | Small-box suggestion | What it protects |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | How many jobs run in parallel. Auto-detect uses CPU cores minus one, which is fine on big machines and too eager on a 2-core box under memory pressure. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Image-processing thread pool. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Batches are where 1-2 GB machines run out of memory first. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Keeps a single huge file from occupying the whole workspace. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Decoding a 100+ MP image costs RAM regardless of file size. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Long transcodes monopolize a small CPU for minutes to hours. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Hard ceiling so a runaway job frees the box eventually. |
|
||||
|
||||
These caps apply to what the server accepts, so set them to match what you actually use rather than as small as possible. If you never touch video, a `MAX_VIDEO_DURATION_S` cap costs nothing; if you scan documents daily, do not cap `MAX_PDF_PAGES`.
|
||||
|
||||
## What to skip {#what-to-skip}
|
||||
|
||||
- **Heavy AI bundles.** Upscaling, photo restoration, and background removal want a GPU or a fast many-core CPU, and each bundle costs 4-5 GB of disk. On a small box, simply do not install them; tools whose bundle is missing show an install prompt instead of running.
|
||||
- **Video re-encoding as a routine workload.** Occasional transcodes are fine (they are just slow); a steady transcode queue wants CPU cores, not a Pi.
|
||||
- **Unused tools generally.** An admin can turn off individual tools in Settings, which removes them from the UI and stops registering their API routes. That does not save memory by itself, but it keeps a shared small instance from being used for the one workload the hardware cannot take.
|
||||
|
||||
If you later move the instance to bigger hardware, remove the caps (set them back to `0`) and the same data volume carries over.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter को Docker के साथ प्रोडक्शन में डिप्लॉय करें। हार्डवेयर आवश्यकताएँ, GPU सेटअप, और Nginx, Traefik, तथा Cloudflare के लिए रिवर्स प्रॉक्सी कॉन्फ़िग।"
|
||||
i18n_output_hash: 23f4f331a239
|
||||
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, पुराना लैपटॉप, 2 GB VPS)? [कम संसाधन वाले सेटअप](/hi/guide/low-resource) इन संख्याओं को ट्यून की गई सीमाओं के साथ एक ठोस वॉकथ्रू में बदल देता है।
|
||||
|
||||
### Quick Reference {#quick-reference}
|
||||
|
||||
| टियर | उपयोग परिदृश्य | CPU | RAM | GPU | स्टोरेज |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter को एक ही कमांड में Docker के साथ इंस्टॉल करें। इसमें Docker Compose सेटअप, सोर्स से बिल्ड करना, और एक पूर्ण फ़ीचर अवलोकन शामिल है।"
|
||||
i18n_output_hash: bc1ecfa22bef
|
||||
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 शुरू करता है (एंबेडेड मोड) और सारा डेटा `SnapOtter-data` वॉल्यूम में रखता है। यह SnapOtter को आज़माने या किसी homelab पर सेल्फ़-होस्ट करने का सबसे तेज़ तरीका है। प्रोडक्शन के लिए, नीचे दिया गया [Docker Compose](#docker-compose) स्टैक चलाएँ, जो PostgreSQL और Redis को उनके अपने कंटेनरों में रखता है। एंबेडेड मोड root के रूप में चलता है (डिफ़ॉल्ट) और जैसे ही आप `DATABASE_URL` सेट करते हैं, यह स्वचालित रूप से बंद हो जाता है।
|
||||
|
||||
Raspberry Pi, किसी पुराने लैपटॉप, या छोटे VPS पर इंस्टॉल कर रहे हैं? ट्यून की गई वॉकथ्रू और सीमित हार्डवेयर से क्या अपेक्षा करें, इसके लिए [कम संसाधन वाले सेटअप](/hi/guide/low-resource) देखें।
|
||||
|
||||
पहले लॉगिन पर आपसे अपना पासवर्ड बदलने को कहा जाएगा।
|
||||
|
||||
::: tip अनाम उत्पाद एनालिटिक्स
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 9e03d6f8c387
|
||||
---
|
||||
# कम संसाधन वाले सेटअप {#low-resource-setups}
|
||||
|
||||
SnapOtter छोटे हार्डवेयर पर अच्छी तरह चलता है: Raspberry Pi 4 या 5, कोई पुराना लैपटॉप, या 2 GB का VPS। यह पेज ऐसी मशीनों के लिए व्यावहारिक गाइड है: क्या अपेक्षा करें, समझदार सीमाओं के साथ एक कॉपी-पेस्ट सेटअप, और कौन से फ़ीचर छोड़ देने चाहिए। इन संख्याओं के पीछे का पूरा बेंचमार्क डेटा [Hardware Requirements](/hi/guide/deployment#hardware-requirements) में है।
|
||||
|
||||
शुरू में ही दो सख़्त सीमाएँ:
|
||||
|
||||
- **केवल 64-बिट।** इमेज `linux/amd64` और `linux/arm64` के लिए बनाई जाती है। 32-बिट ARM (`armv7`/`armhf`) समर्थित नहीं है, इसलिए पहली पीढ़ी के Pi और Pi Zero परिवार बाहर हैं।
|
||||
- **2 GB मेमोरी की न्यूनतम सीमा।** 512 MB स्टैक शुरू ही नहीं कर सकता, और 1 GB बहु-फ़ाइल बैचों पर विफल हो जाता है। 2 कोर के साथ 2 GB सबसे छोटा कॉन्फ़िगरेशन है जो आराम से काम करता है।
|
||||
|
||||
## छोटे हार्डवेयर पर क्या अच्छा चलता है {#what-runs-well}
|
||||
|
||||
हर गैर-AI टूल 2 GB / 2-कोर मशीन पर काम करता है: पूरे Image और Files सेक्शन, PDF टूल, और स्ट्रीम-कॉपी वाले वीडियो व ऑडियो ऑपरेशन (ट्रिम, म्यूट, कंटेनर रीमक्स)। अधिकांश एक सेकंड से भी कम में पूरे हो जाते हैं।
|
||||
|
||||
दो वर्कलोड अपवाद हैं:
|
||||
|
||||
- **वीडियो री-एन्कोडिंग** (कोडेक के बीच रूपांतरण) CPU-बाउंड है। जो 1080p क्लिप किसी तेज़ डेस्कटॉप CPU पर ~40 सेकंड लेती है, वह Pi-श्रेणी के CPU पर कई मिनट ले सकती है। स्ट्रीम-कॉपी ऑपरेशन तब भी तुरंत ही होते हैं।
|
||||
- **AI टूलों** को RAM (4 GB अनुशंसित) और डिस्क चाहिए (बड़े बंडल 4-5 GB प्रत्येक होते हैं), और भारी वाले (अपस्केलिंग, फोटो बहाली, पृष्ठभूमि हटाना) Pi-श्रेणी के CPU पर व्यावहारिक नहीं हैं। चेहरा पहचान और OCR जैसा हल्का AI उपयोग करने योग्य है, बशर्ते आपके पास उसके लिए मेमोरी हो।
|
||||
|
||||
जब तक आप इनका उपयोग नहीं करते, इनमें से कुछ भी इंस्टॉल या चालू नहीं होता: बिना किसी AI बंडल के ऐप लगभग 360 MB पर निष्क्रिय रहता है, और AI बंडल केवल तभी डाउनलोड होते हैं जब कोई एडमिन उन्हें सक्षम करता है।
|
||||
|
||||
## Raspberry Pi / पुराने लैपटॉप की वॉकथ्रू {#walkthrough}
|
||||
|
||||
यह [Getting Started](/hi/guide/getting-started) वाला ही स्टैंडर्ड Compose इंस्टॉल है, साथ में रिसोर्स लिमिट और सतर्क सीमाएँ। यह 64-बिट OS मानकर चलता है (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-श्रेणी की मशीनों के लिए नोट्स:
|
||||
|
||||
- **डेटा वॉल्यूम और Postgres के लिए SD कार्ड के बजाय USB SSD चुनें।** जॉब वर्कस्पेस असली डिस्क IO करते हैं, और SD कार्ड धीमे भी होते हैं और जल्दी घिस भी जाते हैं।
|
||||
- **ऑल-इन-वन एकल कंटेनर यहाँ भी काम करता है** (`DATABASE_URL`/`REDIS_URL` अनसेट होने पर एंबेडेड Postgres और Redis), और मेमोरी की तंगी वाले होस्ट पर आपको `REDIS_MAXMEMORY` से इसकी एंबेडेड Redis सीमा घटा देनी चाहिए ([Configuration](/hi/guide/configuration) देखें)। Compose हर सेवा पर बारीक नियंत्रण देता है, इसीलिए यह वॉकथ्रू उसी का उपयोग करती है।
|
||||
- **2 GB डिवाइसों पर स्वैप जोड़ें।** इससे कभी-कभार का स्पाइक (कोई बड़ी PDF, कोई बैच जिस पर सीमा लगाना आप भूल गए) आउट-ऑफ़-मेमोरी किल में खत्म नहीं होता। zram SD-कार्ड के लिए अनुकूल विकल्प है।
|
||||
- arm64 इमेज केवल CPU वाली है; ARM बोर्डों पर कोई CUDA नहीं है।
|
||||
|
||||
## ट्यूनिंग के विकल्प {#tuning-knobs}
|
||||
|
||||
सभी सीमाएँ एनवायरनमेंट वेरिएबल हैं, जिनका पूरा विवरण [Configuration](/hi/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}
|
||||
|
||||
- **भारी 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: cc08062b0496
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "ओपन-सोर्स, सेल्फ़-होस्टेड फ़ाइल-प्रोसेसिंग इन्फ़्रास्ट्रक्चर। UI, REST API, और पाइपलाइन के माध्यम से इमेज, वीडियो, ऑडियो, PDF, और दस्तावेज़ों में कन्वर्ट, कंप्रेस, OCR, ट्रांसक्राइब करें और स्थानीय AI चलाएँ। एक ही Docker कमांड से सेल्फ़-होस्ट करें। आपकी फ़ाइलें कभी आपके सर्वर से बाहर नहीं जातीं।"
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cb272afac251
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Deploy SnapOtter ke produksi dengan Docker. Persyaratan perangkat keras, penyiapan GPU, dan konfigurasi reverse proxy untuk Nginx, Traefik, dan Cloudflare."
|
||||
i18n_output_hash: 5ed614569b73
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Angka-angka ini berasal dari benchmark di berbagai sistem, mulai dari workstation amd64 modern dengan NVIDIA RTX 4070 hingga Raspberry Pi, menjalankan seluruh katalog perkakas pada masing-masing dan menyapu batas sumber daya Docker untuk menemukan batas bawah yang sebenarnya.
|
||||
|
||||
Berjalan di ujung kecil tingkatan ini (Pi, laptop lama, VPS 2 GB)? [Penyiapan Sumber Daya Rendah](/id/guide/low-resource) mengubah angka-angka ini menjadi panduan konkret dengan batas yang sudah disetel.
|
||||
|
||||
### Referensi Singkat {#quick-reference}
|
||||
|
||||
| Tingkat | Kasus Penggunaan | CPU | RAM | GPU | Penyimpanan |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Pasang SnapOtter dengan Docker dalam satu perintah. Termasuk penyiapan Docker Compose, membangun dari sumber, dan gambaran lengkap fitur."
|
||||
i18n_output_hash: 6df615cedb03
|
||||
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
|
||||
|
||||
Kontainer tunggal ini menjalankan semua yang dibutuhkannya: tanpa `DATABASE_URL` yang diatur, ia memulai PostgreSQL dan Redis sendiri pada antarmuka loopback (mode embedded) dan menyimpan semua data di volume `SnapOtter-data`. Ini adalah cara tercepat untuk mencoba SnapOtter atau self-host di homelab. Untuk produksi, jalankan stack [Docker Compose](#docker-compose) di bawah, yang menjaga PostgreSQL dan Redis di kontainer mereka sendiri. Mode embedded berjalan sebagai root (default) dan mati secara otomatis segera setelah Anda mengatur `DATABASE_URL`.
|
||||
|
||||
Memasang di Raspberry Pi, laptop lama, atau VPS kecil? Lihat [Penyiapan Sumber Daya Rendah](/id/guide/low-resource) untuk panduan yang sudah disetel dan apa yang bisa diharapkan dari perangkat keras terbatas.
|
||||
|
||||
Anda akan diminta mengubah kata sandi Anda saat login pertama.
|
||||
|
||||
::: tip Analitik Produk Anonim
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 9d7672d6f808
|
||||
---
|
||||
# Penyiapan Sumber Daya Rendah {#low-resource-setups}
|
||||
|
||||
SnapOtter berjalan baik di perangkat keras kecil: Raspberry Pi 4 atau 5, laptop lama, atau VPS 2 GB. Halaman ini adalah panduan praktis untuk mesin-mesin tersebut: apa yang bisa diharapkan, penyiapan salin-tempel dengan batas yang masuk akal, dan fitur mana yang sebaiknya dilewati. Data benchmark lengkap di balik angka-angka ini ada di [Persyaratan Perangkat Keras](/id/guide/deployment#hardware-requirements).
|
||||
|
||||
Dua batasan mutlak di awal:
|
||||
|
||||
- **Hanya 64-bit.** Image dibangun untuk `linux/amd64` dan `linux/arm64`. ARM 32-bit (`armv7`/`armhf`) tidak didukung, sehingga Pi generasi pertama dan keluarga Pi Zero tidak bisa dipakai.
|
||||
- **Batas bawah memori 2 GB.** 512 MB tidak dapat memulai stack, dan 1 GB gagal pada batch multi-file. 2 GB dengan 2 core adalah konfigurasi terkecil yang bekerja dengan nyaman.
|
||||
|
||||
## Apa yang berjalan baik di perangkat keras kecil {#what-runs-well}
|
||||
|
||||
Setiap perkakas non-AI bekerja pada mesin 2 GB / 2 core: seluruh bagian Gambar dan File, perkakas PDF, serta operasi video dan audio stream-copy (trim, mute, remux kontainer). Sebagian besar selesai dalam waktu kurang dari satu detik.
|
||||
|
||||
Dua beban kerja menjadi pengecualian:
|
||||
|
||||
- **Re-encoding video** (konversi antar codec) terikat pada CPU. Klip 1080p yang memakan waktu ~40 detik pada CPU desktop yang cepat bisa memakan beberapa menit pada CPU kelas Pi. Operasi stream-copy tetap instan.
|
||||
- **Perkakas AI** membutuhkan RAM (4 GB direkomendasikan) dan disk (bundel yang lebih besar masing-masing 4-5 GB), dan yang berat (peningkatan skala, pemulihan foto, penghapusan latar belakang) tidak praktis pada CPU kelas Pi. AI ringan seperti deteksi wajah dan OCR dapat digunakan jika Anda memiliki memori untuk itu.
|
||||
|
||||
Keduanya tidak terpasang atau berjalan kecuali Anda menggunakannya: tanpa bundel AI terpasang, aplikasi idle di sekitar 360 MB, dan bundel AI hanya diunduh ketika admin mengaktifkannya.
|
||||
|
||||
## Panduan Raspberry Pi / laptop lama {#walkthrough}
|
||||
|
||||
Ini adalah instalasi Compose standar dari [Memulai](/id/guide/getting-started), ditambah batas sumber daya dan batas atas yang konservatif. Panduan ini mengasumsikan OS 64-bit (pada Pi: Raspberry Pi OS 64-bit atau 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
|
||||
```
|
||||
|
||||
Catatan untuk mesin kelas Pi:
|
||||
|
||||
- **Utamakan SSD USB daripada kartu SD** untuk volume data dan Postgres. Ruang kerja job melakukan IO disk yang nyata, dan kartu SD lambat sekaligus cepat aus.
|
||||
- **Kontainer tunggal all-in-one juga bisa dipakai di sini** (Postgres dan Redis embedded ketika `DATABASE_URL`/`REDIS_URL` tidak diatur), dan pada host dengan memori terbatas Anda sebaiknya menurunkan batas Redis embedded-nya dengan `REDIS_MAXMEMORY` (lihat [Konfigurasi](/id/guide/configuration)). Compose memberi Anda kontrol per layanan yang lebih halus, itulah sebabnya panduan ini menggunakannya.
|
||||
- **Tambahkan swap pada perangkat 2 GB.** Ini mencegah lonjakan sesekali (PDF besar, batch yang lupa Anda batasi) berakhir dengan out-of-memory kill. zram adalah pilihan yang ramah kartu SD.
|
||||
- Image arm64 hanya mendukung CPU; tidak ada CUDA di board ARM.
|
||||
|
||||
## Opsi penyetelan {#tuning-knobs}
|
||||
|
||||
Semua batas adalah variabel lingkungan, didokumentasikan lengkap di [Konfigurasi](/id/guide/configuration). `0` berarti tak terbatas atau otomatis. Yang penting pada perangkat keras kecil:
|
||||
|
||||
| Variabel | Saran untuk mesin kecil | Apa yang dilindunginya |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Berapa banyak job yang berjalan paralel. Deteksi otomatis menggunakan jumlah core CPU dikurangi satu, yang tidak masalah di mesin besar tetapi terlalu agresif di mesin 2 core yang memorinya tertekan. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Thread pool pemrosesan gambar. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Batch adalah tempat mesin 1-2 GB pertama kali kehabisan memori. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Mencegah satu file raksasa menghabiskan seluruh ruang kerja. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Mendekode gambar 100+ MP memakan RAM berapa pun ukuran filenya. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Transcode panjang memonopoli CPU kecil selama hitungan menit hingga jam. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Plafon keras agar job yang lepas kendali akhirnya membebaskan mesin. |
|
||||
|
||||
Batas-batas ini berlaku pada apa yang diterima server, jadi aturlah agar sesuai dengan apa yang benar-benar Anda gunakan, bukan sekecil mungkin. Jika Anda tidak pernah menyentuh video, batas `MAX_VIDEO_DURATION_S` tidak merugikan apa pun; jika Anda memindai dokumen setiap hari, jangan batasi `MAX_PDF_PAGES`.
|
||||
|
||||
## Apa yang sebaiknya dilewati {#what-to-skip}
|
||||
|
||||
- **Bundel AI berat.** Peningkatan skala, pemulihan foto, dan penghapusan latar belakang membutuhkan GPU atau CPU banyak-core yang cepat, dan setiap bundel memakan 4-5 GB disk. Di mesin kecil, cukup jangan pasang bundel tersebut; perkakas yang bundelnya tidak ada akan menampilkan ajakan pemasangan alih-alih berjalan.
|
||||
- **Re-encoding video sebagai beban kerja rutin.** Transcode sesekali tidak masalah (hanya lambat); antrean transcode yang terus-menerus membutuhkan core CPU, bukan Pi.
|
||||
- **Perkakas yang tidak terpakai secara umum.** Admin dapat mematikan perkakas satu per satu di Settings, yang menghapusnya dari UI dan menghentikan pendaftaran rute API-nya. Itu sendiri tidak menghemat memori, tetapi mencegah instance kecil yang dipakai bersama digunakan untuk satu-satunya beban kerja yang tidak sanggup ditangani perangkat kerasnya.
|
||||
|
||||
Jika nanti Anda memindahkan instance ke perangkat keras yang lebih besar, hapus batas-batasnya (kembalikan ke `0`) dan volume data yang sama ikut terbawa.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Panduan pengerasan keamanan untuk SnapOtter. Keamanan kontainer, isolasi jaringan, Docker secrets, deployment Kubernetes, dan artefak kepatuhan."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 75b0e460c514
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Infrastruktur pemrosesan file open-source, self-hosted. Konversi, kompresi, OCR, transkripsi, dan jalankan AI lokal di gambar, video, audio, PDF, dan dokumen, melalui UI, REST API, dan pipeline. Self-host dengan satu perintah Docker. File Anda tidak pernah meninggalkan server Anda."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 02b65b4305e6
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Distribuisci SnapOtter in produzione con Docker. Requisiti hardware, configurazione GPU e configurazioni di reverse proxy per Nginx, Traefik e Cloudflare."
|
||||
i18n_output_hash: 28e72d02cd08
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Questi valori provengono da benchmark eseguiti su una gamma di sistemi, da una moderna workstation amd64 con una NVIDIA RTX 4070 fino a un Raspberry Pi, eseguendo l'intero catalogo di strumenti su ciascuno e variando i limiti di risorse Docker per trovare il vero limite minimo.
|
||||
|
||||
Ti trovi all'estremità bassa di questi livelli (un Pi, un vecchio laptop, un VPS da 2 GB)? [Configurazioni a basse risorse](/it/guide/low-resource) trasforma questi numeri in una guida concreta con tetti già calibrati.
|
||||
|
||||
### Riferimento rapido {#quick-reference}
|
||||
|
||||
| Livello | Caso d'uso | CPU | RAM | GPU | Archiviazione |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Installa SnapOtter con Docker in un solo comando. Include la configurazione di Docker Compose, la compilazione dal codice sorgente e una panoramica completa delle funzionalità."
|
||||
i18n_output_hash: 193499a11aa6
|
||||
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
|
||||
|
||||
Questo singolo container esegue tutto ciò di cui ha bisogno: senza alcun `DATABASE_URL` impostato, avvia il proprio PostgreSQL e Redis sull'interfaccia loopback (modalità integrata) e conserva tutti i dati nel volume `SnapOtter-data`. È il modo più rapido per provare SnapOtter o auto-ospitarlo su un homelab. Per la produzione, esegui lo stack [Docker Compose](#docker-compose) qui sotto, che mantiene PostgreSQL e Redis nei loro container. La modalità integrata gira come root (l'impostazione predefinita) e si disattiva automaticamente non appena imposti `DATABASE_URL`.
|
||||
|
||||
Stai installando su un Raspberry Pi, un vecchio laptop o un piccolo VPS? Vedi [Configurazioni a basse risorse](/it/guide/low-resource) per una guida già calibrata e per sapere cosa aspettarti da hardware limitato.
|
||||
|
||||
Ti verrà chiesto di cambiare la password al primo login.
|
||||
|
||||
::: tip Analytics di prodotto anonime
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 81cc593eda8d
|
||||
---
|
||||
# Configurazioni a basse risorse {#low-resource-setups}
|
||||
|
||||
SnapOtter funziona bene su hardware modesto: un Raspberry Pi 4 o 5, un vecchio laptop o un VPS da 2 GB. Questa pagina è la guida pratica per quelle macchine: cosa aspettarsi, una configurazione copia-incolla con limiti ragionevoli e quali funzionalità saltare. I dati completi dei benchmark dietro questi numeri si trovano in [Requisiti hardware](/it/guide/deployment#hardware-requirements).
|
||||
|
||||
Due vincoli rigidi da subito:
|
||||
|
||||
- **Solo a 64 bit.** L'immagine viene creata per `linux/amd64` e `linux/arm64`. ARM a 32 bit (`armv7`/`armhf`) non è supportato, quindi i Pi di prima generazione e la famiglia Pi Zero sono esclusi.
|
||||
- **Soglia minima di memoria: 2 GB.** Con 512 MB lo stack non si avvia nemmeno, e 1 GB fallisce sui batch multi-file. 2 GB con 2 core è la configurazione più piccola che funziona comodamente.
|
||||
|
||||
## Cosa funziona bene su hardware modesto {#what-runs-well}
|
||||
|
||||
Ogni strumento non AI funziona su una macchina da 2 GB / 2 core: le intere sezioni Immagine e File, gli strumenti PDF e le operazioni video e audio in stream-copy (taglio, silenziamento, remux del container). La maggior parte termina in meno di un secondo.
|
||||
|
||||
Due carichi di lavoro fanno eccezione:
|
||||
|
||||
- **La ricodifica video** (conversione tra codec) è vincolata alla CPU. Una clip 1080p che richiede ~40 s su una CPU desktop veloce può richiedere diversi minuti su una CPU di classe Pi. Le operazioni in stream-copy restano istantanee.
|
||||
- **Gli strumenti AI** hanno bisogno di RAM (4 GB consigliati) e di disco (i bundle più grandi pesano 4-5 GB ciascuno), e quelli pesanti (upscaling, ripristino foto, rimozione dello sfondo) non sono praticabili su CPU di classe Pi. L'AI leggera come il rilevamento dei volti e l'OCR è utilizzabile se hai la memoria necessaria.
|
||||
|
||||
Nessuno dei due è installato o in esecuzione finché non lo usi: senza bundle AI installati l'app a riposo occupa circa 360 MB, e i bundle AI vengono scaricati solo quando un amministratore li abilita.
|
||||
|
||||
## Guida passo passo per Raspberry Pi / vecchio laptop {#walkthrough}
|
||||
|
||||
Questa è l'installazione Compose standard di [Per iniziare](/it/guide/getting-started), più limiti di risorse e tetti prudenti. Presuppone un sistema operativo a 64 bit (su un Pi: Raspberry Pi OS 64-bit o 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
|
||||
```
|
||||
|
||||
Note per le macchine di classe Pi:
|
||||
|
||||
- **Preferisci un SSD USB a una scheda SD** per il volume dei dati e Postgres. Gli spazi di lavoro dei job fanno vero IO su disco, e le schede SD sono lente e si usurano in fretta.
|
||||
- **Anche il container unico all-in-one funziona qui** (Postgres e Redis integrati quando `DATABASE_URL`/`REDIS_URL` non sono impostati), e su un host con poca memoria conviene abbassare il tetto del Redis integrato con `REDIS_MAXMEMORY` (vedi [Configurazione](/it/guide/configuration)). Compose offre un controllo più fine per singolo servizio, ed è per questo che questa guida lo usa.
|
||||
- **Aggiungi swap sui dispositivi da 2 GB.** Evita che il picco occasionale (un PDF enorme, un batch che hai dimenticato di limitare) finisca in un out-of-memory kill. zram è l'opzione più delicata con le schede SD.
|
||||
- L'immagine arm64 è solo CPU; non c'è CUDA sulle schede ARM.
|
||||
|
||||
## I parametri di regolazione {#tuning-knobs}
|
||||
|
||||
Tutti i tetti sono variabili d'ambiente, documentate per esteso in [Configurazione](/it/guide/configuration). `0` significa illimitato o automatico. Quelli che contano su hardware modesto:
|
||||
|
||||
| Variabile | Suggerimento per macchine piccole | Cosa protegge |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Quanti job girano in parallelo. Il rilevamento automatico usa i core della CPU meno uno, che va bene sulle macchine grandi ed è troppo aggressivo su una macchina a 2 core sotto pressione di memoria. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Pool di thread per l'elaborazione delle immagini. |
|
||||
| `MAX_BATCH_SIZE` | `5` | I batch sono il punto in cui le macchine da 1-2 GB esauriscono la memoria per prime. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Impedisce che un singolo file enorme occupi l'intero spazio di lavoro. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Decodificare un'immagine da 100+ MP costa RAM a prescindere dalla dimensione del file. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Le transcodifiche lunghe monopolizzano una CPU piccola per minuti o ore. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Tetto rigido perché un job fuori controllo liberi comunque la macchina, prima o poi. |
|
||||
|
||||
Questi tetti si applicano a ciò che il server accetta, quindi impostali in base a ciò che usi davvero, non al minimo possibile. Se non tocchi mai i video, un tetto su `MAX_VIDEO_DURATION_S` non costa nulla; se digitalizzi documenti ogni giorno, non mettere un tetto a `MAX_PDF_PAGES`.
|
||||
|
||||
## Cosa saltare {#what-to-skip}
|
||||
|
||||
- **I bundle AI pesanti.** Upscaling, ripristino foto e rimozione dello sfondo vogliono una GPU o una CPU veloce con molti core, e ogni bundle costa 4-5 GB di disco. Su una macchina piccola, semplicemente non installarli; gli strumenti il cui bundle manca mostrano un invito all'installazione invece di essere eseguiti.
|
||||
- **La ricodifica video come carico di lavoro abituale.** Le transcodifiche occasionali vanno bene (sono solo lente); una coda di transcodifica costante vuole core CPU, non un Pi.
|
||||
- **Gli strumenti inutilizzati in generale.** Un amministratore può disattivare i singoli strumenti nelle Impostazioni, il che li rimuove dall'interfaccia e smette di registrare le loro rotte API. Di per sé non fa risparmiare memoria, ma evita che una piccola istanza condivisa venga usata proprio per l'unico carico di lavoro che l'hardware non può reggere.
|
||||
|
||||
Se in seguito sposti l'istanza su hardware più potente, rimuovi i tetti (riportali a `0`) e lo stesso volume dei dati si trasferisce così com'è.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Guida al rafforzamento della sicurezza per SnapOtter. Sicurezza del container, isolamento di rete, Docker secrets, distribuzione Kubernetes e artefatti di conformità."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 24c63a8f7f16
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "\\\"Infrastruttura open-source e auto-ospitata per l'elaborazione di file. Converti, comprimi, esegui OCR, trascrivi ed esegui AI locale su immagini, video, audio, PDF e documenti, tramite interfaccia, REST API e pipeline. Auto-ospitala con un solo comando Docker. I tuoi file non lasciano mai il tuo server.\\\""
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 17e3b663568c
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter を Docker で本番環境にデプロイします。ハードウェア要件、GPU のセットアップ、Nginx、Traefik、Cloudflare 向けのリバースプロキシ設定を扱います。"
|
||||
i18n_output_hash: 2b65cb4be9d1
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
これらの数値は、NVIDIA RTX 4070 を搭載した最新の amd64 ワークステーションから Raspberry Pi に至るまで、さまざまなシステムでベンチマークを取ったものです。各システムでツールカタログ全体を実行し、Docker のリソース制限をスイープして実際の下限を見極めました。
|
||||
|
||||
これらのティアの下限(Pi、古いラップトップ、2 GB の VPS)で運用していますか?[低リソース環境のセットアップ](/ja/guide/low-resource) は、これらの数値を調整済みの上限を備えた具体的な手順に落とし込んでいます。
|
||||
|
||||
### クイックリファレンス {#quick-reference}
|
||||
|
||||
| ティア | ユースケース | CPU | RAM | GPU | ストレージ |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "1 つのコマンドで SnapOtter を Docker でインストールします。Docker Compose のセットアップ、ソースからのビルド、機能の全体像を含みます。"
|
||||
i18n_output_hash: c84093005283
|
||||
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 を起動し(組み込みモード)、すべてのデータを `SnapOtter-data` ボリュームに保持します。SnapOtter を試す、あるいはホームラボでセルフホストする最速の方法です。本番環境では、下記の [Docker Compose](#docker-compose) スタックを実行してください。こちらは PostgreSQL と Redis をそれぞれ専用のコンテナに保ちます。組み込みモードは root(デフォルト)として実行され、`DATABASE_URL` を設定するとすぐに自動的にオフになります。
|
||||
|
||||
Raspberry Pi、古いラップトップ、小さな VPS にインストールしますか?調整済みの手順と、限られたハードウェアで何が期待できるかについては、[低リソース環境のセットアップ](/ja/guide/low-resource) を参照してください。
|
||||
|
||||
初回ログイン時にパスワードの変更を求められます。
|
||||
|
||||
::: tip 匿名のプロダクトアナリティクス
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 66eba29afc81
|
||||
---
|
||||
# 低リソース環境のセットアップ {#low-resource-setups}
|
||||
|
||||
SnapOtter は小さなハードウェアでも快適に動作します。Raspberry Pi 4 や 5、古いラップトップ、2 GB の VPS などです。このページはそうしたマシンのための実践ガイドです。何が期待できるか、無理のない上限を設定したコピー&ペーストで使えるセットアップ、そしてどの機能を見送るべきかを扱います。これらの数値の裏付けとなる完全なベンチマークデータは [ハードウェア要件](/ja/guide/deployment#hardware-requirements) にあります。
|
||||
|
||||
まず、2 つの厳しい制約があります。
|
||||
|
||||
- **64 ビットのみ。** イメージは `linux/amd64` と `linux/arm64` 向けにビルドされています。32 ビット ARM(`armv7`/`armhf`)はサポートされないため、初代 Pi と Pi Zero ファミリーは対象外です。
|
||||
- **メモリの下限は 2 GB。** 512 MB ではスタックを起動できず、1 GB では複数ファイルのバッチで失敗します。2 コアと 2 GB が、余裕を持って動作する最小構成です。
|
||||
|
||||
## 小さなハードウェアで快適に動くもの {#what-runs-well}
|
||||
|
||||
AI 以外のすべてのツールは 2 GB / 2 コアのマシンで動作します。画像とファイルのセクション全体、PDF ツール、そしてストリームコピーのビデオ・オーディオ操作(トリミング、ミュート、コンテナのリマックス)です。ほとんどは 1 秒未満で完了します。
|
||||
|
||||
例外となるワークロードは 2 つです。
|
||||
|
||||
- **ビデオの再エンコード**(コーデック間の変換)は CPU に依存します。高速なデスクトップ CPU で約 40 秒かかる 1080p のクリップは、Pi クラスの CPU では数分かかることがあります。ストリームコピーの操作は引き続き一瞬で終わります。
|
||||
- **AI ツール**には RAM(4 GB 推奨)とディスク(大きなバンドルは 1 つあたり 4〜5 GB)が必要で、重いもの(アップスケーリング、写真の復元、背景除去)は Pi クラスの CPU では現実的ではありません。顔検出や OCR のような軽い AI は、そのためのメモリがあれば利用できます。
|
||||
|
||||
どちらも使わない限りインストールも実行もされません。AI バンドルを何もインストールしていなければアプリはアイドル時に約 360 MB で動作し、AI バンドルは管理者が有効化したときにのみダウンロードされます。
|
||||
|
||||
## Raspberry Pi / 古いラップトップでの手順 {#walkthrough}
|
||||
|
||||
これは [はじめに](/ja/guide/getting-started) の標準的な Compose インストールに、リソース制限と控えめな上限を加えたものです。64 ビット OS を前提としています(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 クラスのマシン向けの注意点:
|
||||
|
||||
- **データボリュームと Postgres には SD カードより USB SSD を優先してください。** ジョブのワークスペースは実際にディスク IO を行い、SD カードは遅いうえに摩耗も早いためです。
|
||||
- **オールインワンの単一コンテナもここで動作します**(`DATABASE_URL`/`REDIS_URL` が未設定のときに組み込みの Postgres と Redis が使われます)。メモリに余裕のないホストでは、`REDIS_MAXMEMORY` で組み込み Redis の上限を下げてください([設定](/ja/guide/configuration) を参照)。Compose のほうがサービスごとの細かい制御ができるため、この手順では Compose を使っています。
|
||||
- **2 GB のデバイスにはスワップを追加してください。** 時折のスパイク(大きな PDF、上限をかけ忘れたバッチ)がアウトオブメモリのキルで終わるのを防ぎます。zram は SD カードにやさしい選択肢です。
|
||||
- arm64 イメージは CPU のみです。ARM ボードに CUDA はありません。
|
||||
|
||||
## チューニング項目 {#tuning-knobs}
|
||||
|
||||
上限はすべて環境変数で、[設定](/ja/guide/configuration) に完全なドキュメントがあります。`0` は無制限または自動を意味します。小さなハードウェアで重要なのは次のとおりです。
|
||||
|
||||
| 変数 | 小型マシンでの推奨値 | 何を守るか |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | 並列で実行されるジョブの数。自動検出は CPU コア数マイナス 1 を使います。大きなマシンでは適切ですが、メモリが厳しい 2 コアのマシンには積極的すぎます。 |
|
||||
| `MAX_WORKER_THREADS` | `2` | 画像処理のスレッドプール。 |
|
||||
| `MAX_BATCH_SIZE` | `5` | 1〜2 GB のマシンが最初にメモリ不足に陥るのはバッチです。 |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | 1 つの巨大なファイルがワークスペース全体を占有するのを防ぎます。 |
|
||||
| `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}
|
||||
|
||||
- **重い AI バンドル。** アップスケーリング、写真の復元、背景除去は GPU か高速なメニーコア CPU を必要とし、各バンドルはディスクを 4〜5 GB 消費します。小さなマシンでは、そもそもインストールしないでください。バンドルがないツールは、実行される代わりにインストールを促す画面を表示します。
|
||||
- **日常的なワークロードとしてのビデオ再エンコード。** 時折のトランスコードは問題ありません(単に遅いだけです)。継続的なトランスコードのキューに必要なのは CPU コアであって、Pi ではありません。
|
||||
- **使わないツール全般。** 管理者は Settings で個々のツールを無効にでき、無効にしたツールは UI から消え、その API ルートも登録されなくなります。それ自体でメモリが節約されるわけではありませんが、共有の小さなインスタンスが、ハードウェアには耐えられない唯一のワークロードのために使われてしまうのを防げます。
|
||||
|
||||
後でインスタンスをより大きなハードウェアに移す場合は、上限を外せば(`0` に戻せば)、同じデータボリュームをそのまま引き継げます。
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter のセキュリティ強化ガイド。コンテナのセキュリティ、ネットワーク分離、Docker シークレット、Kubernetes デプロイ、コンプライアンス成果物を扱います。"
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: eeed28f9ef0c
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "オープンソースでセルフホスト型のファイル処理インフラ。画像、ビデオ、オーディオ、PDF、ドキュメントにわたって、変換、圧縮、OCR、文字起こしを行い、ローカル AI を実行します。UI、REST API、パイプラインを通じて利用できます。1 つの Docker コマンドでセルフホストできます。あなたのファイルがサーバーから外に出ることはありません。"
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6b82d0d5fade
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Docker로 SnapOtter를 프로덕션에 배포. 하드웨어 요구 사항, GPU 설정, Nginx, Traefik, Cloudflare용 리버스 프록시 구성."
|
||||
i18n_output_hash: a82cc0e64487
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
이 수치는 NVIDIA RTX 4070을 탑재한 최신 amd64 워크스테이션부터 Raspberry Pi에 이르기까지 다양한 시스템에서, 각각 전체 도구 카탈로그를 실행하고 Docker 리소스 제한을 조정하며 실제 하한선을 찾는 벤치마크에서 나온 것이다.
|
||||
|
||||
이 등급의 낮은 쪽 사양(Pi, 오래된 노트북, 2 GB VPS)에서 실행한다면, [저사양 환경 설정](/ko/guide/low-resource)이 이 수치를 조정된 상한이 적용된 구체적인 설치 가이드로 풀어낸다.
|
||||
|
||||
### 빠른 참조 {#quick-reference}
|
||||
|
||||
| 등급 | 사용 사례 | CPU | RAM | GPU | 스토리지 |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "명령 하나로 Docker에 SnapOtter를 설치. Docker Compose 설정, 소스에서 빌드하기, 전체 기능 개요 포함."
|
||||
i18n_output_hash: 55c67edda625
|
||||
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를 시작하고(임베디드 모드) 모든 데이터를 `SnapOtter-data` 볼륨에 보관한다. SnapOtter를 사용해 보거나 홈랩에서 셀프 호스팅하기에 가장 빠른 방법이다. 프로덕션에서는 PostgreSQL과 Redis를 각자의 컨테이너에 두는 아래의 [Docker Compose](#docker-compose) 스택을 실행하라. 임베디드 모드는 root로 실행되며(기본값), `DATABASE_URL`을 설정하는 즉시 자동으로 꺼진다.
|
||||
|
||||
Raspberry Pi나 오래된 노트북, 작은 VPS에 설치할 예정이라면 [저사양 환경 설정](/ko/guide/low-resource)에서 조정된 설치 가이드와 제한된 하드웨어에서 기대할 수 있는 것을 확인하라.
|
||||
|
||||
첫 로그인 시 비밀번호 변경을 요청받는다.
|
||||
|
||||
::: tip 익명 제품 애널리틱스
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 872370570e1a
|
||||
---
|
||||
# 저사양 환경 설정 {#low-resource-setups}
|
||||
|
||||
SnapOtter는 Raspberry Pi 4나 5, 오래된 노트북, 2 GB VPS 같은 작은 하드웨어에서도 잘 실행된다. 이 페이지는 그런 머신을 위한 실용 가이드다: 무엇을 기대할 수 있는지, 합리적인 상한이 적용된 복사해서 붙여넣는 설정, 그리고 건너뛰어야 할 기능. 이 수치의 근거가 되는 전체 벤치마크 데이터는 [하드웨어 요구 사항](/ko/guide/deployment#hardware-requirements)에 있다.
|
||||
|
||||
먼저 두 가지 확실한 제약이 있다:
|
||||
|
||||
- **64비트 전용.** 이미지는 `linux/amd64`와 `linux/arm64`용으로 빌드된다. 32비트 ARM(`armv7`/`armhf`)은 지원되지 않으므로 1세대 Pi와 Pi Zero 계열은 사용할 수 없다.
|
||||
- **메모리 하한선 2 GB.** 512 MB로는 스택이 시작되지 않고, 1 GB는 다중 파일 배치에서 실패한다. 2 GB에 2코어가 무리 없이 동작하는 가장 작은 구성이다.
|
||||
|
||||
## 작은 하드웨어에서 잘 실행되는 것 {#what-runs-well}
|
||||
|
||||
AI가 아닌 모든 도구는 2 GB / 2코어 머신에서 동작한다: 이미지와 파일 섹션 전체, PDF 도구, 그리고 스트림 복사 방식의 비디오·오디오 작업(트림, 음소거, 컨테이너 리먹스). 대부분 1초 안에 끝난다.
|
||||
|
||||
예외는 두 가지 워크로드다:
|
||||
|
||||
- **비디오 재인코딩**(코덱 간 변환)은 CPU에 좌우된다. 빠른 데스크톱 CPU에서 약 40초 걸리는 1080p 클립이 Pi급 CPU에서는 몇 분이 걸릴 수 있다. 스트림 복사 작업은 여전히 즉시 끝난다.
|
||||
- **AI 도구**는 RAM(4 GB 권장)과 디스크(큰 번들은 각각 4-5 GB)가 필요하고, 무거운 도구(업스케일링, 사진 복원, 배경 제거)는 Pi급 CPU에서 실용적이지 않다. 얼굴 감지나 OCR 같은 가벼운 AI는 메모리만 충분하면 쓸 만하다.
|
||||
|
||||
둘 다 사용하지 않는 한 설치되거나 실행되지 않는다: AI 번들이 설치되지 않은 상태에서 앱은 약 360 MB로 유휴 상태를 유지하고, AI 번들은 관리자가 활성화할 때만 다운로드된다.
|
||||
|
||||
## Raspberry Pi / 오래된 노트북 설치 가이드 {#walkthrough}
|
||||
|
||||
[시작하기](/ko/guide/getting-started)의 표준 Compose 설치에 리소스 제한과 보수적인 상한을 더한 구성이다. 64비트 OS를 전제로 한다(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급 머신을 위한 참고 사항:
|
||||
|
||||
- **데이터 볼륨과 Postgres에는 SD 카드보다 USB SSD를 사용하라.** 작업 워크스페이스는 실제 디스크 IO를 일으키고, SD 카드는 느린 데다 빨리 마모된다.
|
||||
- **올인원 단일 컨테이너도 여기서 동작한다**(`DATABASE_URL`/`REDIS_URL`가 설정되지 않으면 임베디드 Postgres와 Redis 사용). 메모리가 부족한 호스트에서는 `REDIS_MAXMEMORY`로 임베디드 Redis 상한을 낮춰야 한다([구성](/ko/guide/configuration) 참고). Compose는 서비스별로 더 세밀한 제어를 제공하며, 이 가이드가 Compose를 사용하는 이유다.
|
||||
- **2 GB 장치에는 스왑을 추가하라.** 가끔 발생하는 스파이크(큰 PDF, 상한을 걸지 않은 배치)가 메모리 부족으로 인한 강제 종료로 이어지는 것을 막아 준다. zram이 SD 카드에 부담이 적은 선택지다.
|
||||
- arm64 이미지는 CPU 전용이다. ARM 보드에는 CUDA가 없다.
|
||||
|
||||
## 튜닝 옵션 {#tuning-knobs}
|
||||
|
||||
모든 상한은 환경 변수이며 [구성](/ko/guide/configuration)에 전부 문서화되어 있다. `0`은 무제한 또는 자동을 의미한다. 작은 하드웨어에서 중요한 항목은 다음과 같다:
|
||||
|
||||
| 변수 | 소형 머신 권장값 | 보호 대상 |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | 동시에 실행되는 작업 수. 자동 감지는 CPU 코어 수에서 1을 뺀 값을 사용하는데, 큰 머신에서는 적절하지만 메모리 압박을 받는 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}
|
||||
|
||||
- **무거운 AI 번들.** 업스케일링, 사진 복원, 배경 제거는 GPU나 빠른 다중 코어 CPU를 원하고, 번들 하나가 디스크 4-5 GB를 차지한다. 작은 머신에서는 그냥 설치하지 마라. 번들이 없는 도구는 실행되는 대신 설치 안내를 표시한다.
|
||||
- **일상적인 워크로드로서의 비디오 재인코딩.** 가끔 하는 트랜스코딩은 괜찮다(느릴 뿐이다). 꾸준한 트랜스코딩 큐에는 Pi가 아니라 CPU 코어가 필요하다.
|
||||
- **사용하지 않는 도구 전반.** 관리자는 Settings에서 개별 도구를 끌 수 있으며, 이렇게 하면 UI에서 사라지고 해당 API 라우트도 등록되지 않는다. 그 자체로 메모리가 절약되지는 않지만, 공유 중인 소형 인스턴스가 하드웨어가 감당하지 못하는 바로 그 워크로드에 쓰이는 것을 막아 준다.
|
||||
|
||||
나중에 인스턴스를 더 큰 하드웨어로 옮기면 상한을 제거하고(다시 `0`로 설정) 동일한 데이터 볼륨을 그대로 가져가면 된다.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter 보안 강화 가이드. 컨테이너 보안, 네트워크 격리, Docker 시크릿, Kubernetes 배포, 컴플라이언스 산출물."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6386fbda69b4
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "오픈소스, 셀프 호스팅 파일 처리 인프라. UI, REST API, 파이프라인을 통해 이미지, 비디오, 오디오, PDF, 문서 전반에서 변환, 압축, OCR, 전사하고 로컬 AI를 실행한다. Docker 명령 하나로 셀프 호스팅. 파일은 사용자의 서버를 절대 떠나지 않는다."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5f0cea1c0e41
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Implementeer SnapOtter in productie met Docker. Hardwarevereisten, GPU-installatie en reverse-proxyconfiguraties voor Nginx, Traefik en Cloudflare."
|
||||
i18n_output_hash: 21ff542fcb0c
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Deze cijfers komen uit benchmarks op een reeks systemen, van een moderne amd64-werkstation met een NVIDIA RTX 4070 tot een Raspberry Pi, waarbij op elk systeem de volledige toolcatalogus werd uitgevoerd en de Docker-resourcelimieten werden doorlopen om de echte ondergrens te vinden.
|
||||
|
||||
Draai je aan de kleine kant van deze niveaus (een Pi, een oude laptop, een VPS met 2 GB)? [Setups met beperkte resources](/nl/guide/low-resource) vertaalt deze cijfers naar een concreet stappenplan met afgestemde limieten.
|
||||
|
||||
### Snelle referentie {#quick-reference}
|
||||
|
||||
| Niveau | Gebruikssituatie | CPU | RAM | GPU | Opslag |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Installeer SnapOtter met Docker in één commando. Inclusief Docker Compose-installatie, bouwen vanaf broncode en een volledig functieoverzicht."
|
||||
i18n_output_hash: d29d27e8097b
|
||||
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
|
||||
|
||||
Deze enkele container draait alles wat hij nodig heeft: zonder ingestelde `DATABASE_URL` start hij zijn eigen PostgreSQL en Redis op de loopback-interface (embedded-modus) en houdt alle data in het `SnapOtter-data`-volume. Het is de snelste manier om SnapOtter te proberen of zelf te hosten op een homelab. Draai voor productie de [Docker Compose](#docker-compose)-stack hieronder, die PostgreSQL en Redis in hun eigen containers houdt. De embedded-modus draait als root (de standaard) en schakelt zichzelf automatisch uit zodra je `DATABASE_URL` instelt.
|
||||
|
||||
Installeer je op een Raspberry Pi, een oude laptop of een kleine VPS? Zie [Setups met beperkte resources](/nl/guide/low-resource) voor een afgestemd stappenplan en wat je van beperkte hardware kunt verwachten.
|
||||
|
||||
Je wordt bij de eerste login gevraagd je wachtwoord te wijzigen.
|
||||
|
||||
::: tip Anonieme Productanalytics
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: ac770c68d171
|
||||
---
|
||||
# Setups met beperkte resources {#low-resource-setups}
|
||||
|
||||
SnapOtter draait goed op kleine hardware: een Raspberry Pi 4 of 5, een oude laptop of een VPS met 2 GB. Deze pagina is de praktische gids voor die machines: wat je kunt verwachten, een copy-paste-setup met verstandige limieten, en welke functies je beter overslaat. De volledige benchmarkdata achter deze cijfers vind je in [Hardwarevereisten](/nl/guide/deployment#hardware-requirements).
|
||||
|
||||
Twee harde beperkingen vooraf:
|
||||
|
||||
- **Uitsluitend 64-bit.** De image wordt gebouwd voor `linux/amd64` en `linux/arm64`. 32-bit ARM (`armv7`/`armhf`) wordt niet ondersteund, dus Pi's van de eerste generatie en de Pi Zero-familie vallen af.
|
||||
- **Geheugenondergrens van 2 GB.** Met 512 MB start de stack niet, en 1 GB faalt bij batches met meerdere bestanden. 2 GB met 2 cores is de kleinste configuratie die comfortabel werkt.
|
||||
|
||||
## Wat goed draait op kleine hardware {#what-runs-well}
|
||||
|
||||
Elke niet-AI-tool werkt op een machine met 2 GB en 2 cores: de volledige secties Afbeelding en Bestanden, de PDF-tools en de stream-copy-bewerkingen voor video en audio (trimmen, dempen, container-remux). De meeste zijn binnen een seconde klaar.
|
||||
|
||||
Twee workloads vormen de uitzondering:
|
||||
|
||||
- **Video-hercodering** (converteren tussen codecs) is CPU-gebonden. Een 1080p-clip die op een snelle desktop-CPU ~40 s duurt, kan op een CPU van Pi-klasse enkele minuten duren. Stream-copy-bewerkingen blijven direct.
|
||||
- **AI-tools** hebben RAM (4 GB aanbevolen) en schijfruimte nodig (de grotere bundels zijn elk 4-5 GB), en de zware (opschaling, fotorestauratie, achtergrondverwijdering) zijn niet praktisch op CPU's van Pi-klasse. Lichte AI zoals gezichtsdetectie en OCR is bruikbaar als je er het geheugen voor hebt.
|
||||
|
||||
Geen van beide wordt geïnstalleerd of draait tenzij je het gebruikt: zonder geïnstalleerde AI-bundels draait de app inactief rond de 360 MB, en AI-bundels worden pas gedownload wanneer een beheerder ze inschakelt.
|
||||
|
||||
## Stappenplan voor Raspberry Pi / oude laptop {#walkthrough}
|
||||
|
||||
Dit is de standaard Compose-installatie uit [Aan de slag](/nl/guide/getting-started), plus resourcelimieten en conservatieve limieten. Het gaat uit van een 64-bit besturingssysteem (op een Pi: Raspberry Pi OS 64-bit of 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
|
||||
```
|
||||
|
||||
Aandachtspunten voor machines van Pi-klasse:
|
||||
|
||||
- **Kies een USB-SSD boven een SD-kaart** voor het datavolume en Postgres. Job-werkruimtes doen echte disk-IO, en SD-kaarten zijn zowel traag als snel versleten.
|
||||
- **De alles-in-één-container werkt hier ook** (embedded Postgres en Redis wanneer `DATABASE_URL`/`REDIS_URL` niet zijn ingesteld), en op een host met weinig geheugen kun je de limiet van de embedded Redis het best verlagen met `REDIS_MAXMEMORY` (zie [Configuratie](/nl/guide/configuration)). Compose geeft je fijnere controle per service, en daarom gebruikt dit stappenplan Compose.
|
||||
- **Voeg swap toe op apparaten met 2 GB.** Dat voorkomt dat een incidentele piek (een grote PDF, een batch die je vergat te begrenzen) eindigt in een out-of-memory-kill. zram is de SD-kaartvriendelijke optie.
|
||||
- De arm64-image is uitsluitend CPU; er is geen CUDA op ARM-boards.
|
||||
|
||||
## De instelknoppen {#tuning-knobs}
|
||||
|
||||
Alle limieten zijn omgevingsvariabelen, volledig gedocumenteerd in [Configuratie](/nl/guide/configuration). `0` betekent onbeperkt of automatisch. Deze doen ertoe op kleine hardware:
|
||||
|
||||
| Variabele | Suggestie voor kleine machines | Wat het beschermt |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Hoeveel jobs er parallel draaien. Autodetectie gebruikt het aantal CPU-cores min één; prima op grote machines, te gretig op een 2-core-machine onder geheugendruk. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Threadpool voor beeldverwerking. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Bij batches raakt het geheugen op machines met 1-2 GB het eerst op. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Voorkomt dat één enorm bestand de hele werkruimte inneemt. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Het decoderen van een afbeelding van 100+ MP kost RAM, ongeacht de bestandsgrootte. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Lange transcodes monopoliseren een kleine CPU minuten- tot urenlang. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Hard plafond zodat een op hol geslagen job de machine uiteindelijk weer vrijgeeft. |
|
||||
|
||||
Deze limieten gelden voor wat de server accepteert, dus stem ze af op wat je daadwerkelijk gebruikt in plaats van ze zo klein mogelijk te maken. Raak je nooit video aan, dan kost een limiet op `MAX_VIDEO_DURATION_S` niets; scan je dagelijks documenten, begrens `MAX_PDF_PAGES` dan niet.
|
||||
|
||||
## Wat je kunt overslaan {#what-to-skip}
|
||||
|
||||
- **Zware AI-bundels.** Opschaling, fotorestauratie en achtergrondverwijdering willen een GPU of een snelle CPU met veel cores, en elke bundel kost 4-5 GB schijfruimte. Installeer ze op een kleine machine simpelweg niet; tools waarvan de bundel ontbreekt, tonen een installatieprompt in plaats van te draaien.
|
||||
- **Video-hercodering als routineworkload.** Incidentele transcodes zijn prima (ze zijn alleen traag); een gestage transcodewachtrij wil CPU-cores, geen Pi.
|
||||
- **Ongebruikte tools in het algemeen.** Een beheerder kan individuele tools uitschakelen in Instellingen, wat ze uit de UI haalt en hun API-routes niet meer registreert. Dat bespaart op zichzelf geen geheugen, maar het voorkomt dat een gedeelde kleine instance wordt gebruikt voor precies die ene workload die de hardware niet aankan.
|
||||
|
||||
Verhuis je de instance later naar grotere hardware, verwijder dan de limieten (zet ze terug op `0`); hetzelfde datavolume gaat gewoon mee.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Handleiding voor beveiligingsverharding van SnapOtter. Containerbeveiliging, netwerkisolatie, Docker-secrets, Kubernetes-implementatie en compliance-artefacten."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2131ba905ef5
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Open-source, zelf-gehoste infrastructuur voor bestandsverwerking. Converteer, comprimeer, OCR, transcribeer en draai lokale AI over afbeelding, video, audio, PDF en documenten, via UI, REST API en pijplijnen. Zelf hosten met één Docker-commando. Je bestanden verlaten nooit je server."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bf9d47c633ac
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Wdroż SnapOtter na produkcję za pomocą Dockera. Wymagania sprzętowe, konfiguracja GPU i konfiguracje reverse proxy dla Nginx, Traefik i Cloudflare."
|
||||
i18n_output_hash: 20b2807dca9c
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Te liczby pochodzą z testów wydajności na różnych systemach, od nowoczesnej stacji roboczej amd64 z NVIDIA RTX 4070 aż po Raspberry Pi, na których uruchomiono cały katalog narzędzi i przeprowadzono zmiany limitów zasobów Dockera, aby znaleźć rzeczywisty próg minimalny.
|
||||
|
||||
Działasz na dolnym końcu tych poziomów (Pi, stary laptop, VPS z 2 GB)? [Konfiguracje o ograniczonych zasobach](/pl/guide/low-resource) zamieniają te liczby w konkretny przewodnik krok po kroku z dostrojonymi limitami.
|
||||
|
||||
### Szybki przegląd {#quick-reference}
|
||||
|
||||
| Poziom | Zastosowanie | CPU | RAM | GPU | Pamięć masowa |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Zainstaluj SnapOtter za pomocą Dockera jednym poleceniem. Zawiera konfigurację Docker Compose, budowanie ze źródeł i pełny przegląd funkcji."
|
||||
i18n_output_hash: 3d17e456c824
|
||||
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
|
||||
|
||||
Ten pojedynczy kontener uruchamia wszystko, czego potrzebuje: bez ustawionego `DATABASE_URL` uruchamia własne PostgreSQL i Redis na interfejsie pętli zwrotnej (tryb wbudowany) i przechowuje wszystkie dane w wolumenie `SnapOtter-data`. To najszybszy sposób, aby wypróbować SnapOtter lub hostować samodzielnie w domowym laboratorium. Na produkcję uruchom stos [Docker Compose](#docker-compose) poniżej, który utrzymuje PostgreSQL i Redis w ich własnych kontenerach. Tryb wbudowany działa jako root (domyślnie) i wyłącza się automatycznie, gdy tylko ustawisz `DATABASE_URL`.
|
||||
|
||||
Instalujesz na Raspberry Pi, starym laptopie albo małym VPS-ie? Zobacz [Konfiguracje o ograniczonych zasobach](/pl/guide/low-resource) po dostrojony przewodnik krok po kroku i to, czego można oczekiwać od ograniczonego sprzętu.
|
||||
|
||||
Przy pierwszym logowaniu zostaniesz poproszony o zmianę hasła.
|
||||
|
||||
::: tip Anonimowa analityka produktu
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: efa60ae10299
|
||||
---
|
||||
# Konfiguracje o ograniczonych zasobach {#low-resource-setups}
|
||||
|
||||
SnapOtter dobrze działa na małym sprzęcie: Raspberry Pi 4 lub 5, starym laptopie czy VPS-ie z 2 GB. Ta strona to praktyczny przewodnik dla takich maszyn: czego się spodziewać, gotowa do wklejenia konfiguracja z rozsądnymi limitami i które funkcje pominąć. Pełne dane z testów wydajności stojące za tymi liczbami znajdziesz w [Wymaganiach sprzętowych](/pl/guide/deployment#hardware-requirements).
|
||||
|
||||
Na początek dwa twarde ograniczenia:
|
||||
|
||||
- **Tylko 64 bity.** Obraz jest budowany dla `linux/amd64` i `linux/arm64`. 32-bitowy ARM (`armv7`/`armhf`) nie jest obsługiwany, więc Pi pierwszej generacji i rodzina Pi Zero odpadają.
|
||||
- **Próg pamięci 2 GB.** 512 MB nie uruchomi stosu, a 1 GB zawodzi przy partiach wielu plików. 2 GB i 2 rdzenie to najmniejsza konfiguracja, która działa komfortowo.
|
||||
|
||||
## Co działa dobrze na małym sprzęcie {#what-runs-well}
|
||||
|
||||
Każde narzędzie niekorzystające z AI działa na maszynie 2 GB / 2 rdzenie: całe sekcje Obraz i Pliki, narzędzia PDF oraz operacje wideo i audio kopiujące strumień (przycinanie, wyciszanie, remux kontenera). Większość kończy się w mniej niż sekundę.
|
||||
|
||||
Wyjątkiem są dwa rodzaje obciążeń:
|
||||
|
||||
- **Ponowne kodowanie wideo** (konwersja między kodekami) jest ograniczone przez CPU. Klip 1080p, który na szybkim procesorze desktopowym zajmuje ~40 s, na procesorze klasy Pi może zająć kilka minut. Operacje kopiowania strumienia pozostają natychmiastowe.
|
||||
- **Narzędzia AI** potrzebują RAM-u (zalecane 4 GB) i dysku (większe pakiety mają po 4-5 GB), a te ciężkie (skalowanie w górę, przywracanie zdjęć, usuwanie tła) nie są praktyczne na procesorach klasy Pi. Lekkie AI, takie jak wykrywanie twarzy i OCR, jest użyteczne, jeśli masz na nie pamięć.
|
||||
|
||||
Żadne z nich nie jest instalowane ani uruchamiane, dopóki go nie używasz: bez zainstalowanych pakietów AI aplikacja w spoczynku zajmuje około 360 MB, a pakiety AI są pobierane dopiero wtedy, gdy administrator je włączy.
|
||||
|
||||
## Przewodnik dla Raspberry Pi / starego laptopa {#walkthrough}
|
||||
|
||||
To standardowa instalacja Compose z [Pierwszych kroków](/pl/guide/getting-started) plus limity zasobów i zachowawcze ograniczenia. Zakłada 64-bitowy system operacyjny (na Pi: Raspberry Pi OS 64-bit lub 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
|
||||
```
|
||||
|
||||
Uwagi dla maszyn klasy Pi:
|
||||
|
||||
- **Wybierz dysk SSD na USB zamiast karty SD** na wolumen danych i Postgres. Przestrzenie robocze zadań generują realne operacje dyskowe, a karty SD są powolne i szybko się zużywają.
|
||||
- **Kontener wszystko-w-jednym też tutaj działa** (wbudowane Postgres i Redis, gdy `DATABASE_URL`/`REDIS_URL` nie są ustawione), a na hoście z małą ilością pamięci warto obniżyć limit wbudowanego Redisa przez `REDIS_MAXMEMORY` (zobacz [Konfigurację](/pl/guide/configuration)). Compose daje dokładniejszą kontrolę nad poszczególnymi usługami i dlatego ten przewodnik z niego korzysta.
|
||||
- **Dodaj swap na urządzeniach z 2 GB.** Dzięki temu okazjonalny skok (duży PDF, partia bez ustawionego limitu) nie skończy się zabiciem procesu z powodu braku pamięci. zram to opcja przyjazna kartom SD.
|
||||
- Obraz arm64 działa wyłącznie na CPU; na płytkach ARM nie ma CUDA.
|
||||
|
||||
## Parametry do dostrojenia {#tuning-knobs}
|
||||
|
||||
Wszystkie limity to zmienne środowiskowe, w pełni udokumentowane w [Konfiguracji](/pl/guide/configuration). `0` oznacza brak limitu lub tryb automatyczny. Na małym sprzęcie znaczenie mają te:
|
||||
|
||||
| Zmienna | Sugestia dla małej maszyny | Co chroni |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Ile zadań działa równolegle. Automatyczne wykrywanie używa liczby rdzeni CPU minus jeden, co jest w porządku na dużych maszynach, a zbyt zachłanne na maszynie z 2 rdzeniami pod presją pamięci. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Pula wątków przetwarzania obrazów. |
|
||||
| `MAX_BATCH_SIZE` | `5` | To przy partiach maszynom z 1-2 GB najpierw kończy się pamięć. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Zapobiega zajęciu całej przestrzeni roboczej przez jeden ogromny plik. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Dekodowanie obrazu 100+ MP kosztuje RAM niezależnie od rozmiaru pliku. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Długie transkodowania monopolizują mały procesor na minuty, a nawet godziny. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Twardy sufit, dzięki któremu zadanie, które wymknęło się spod kontroli, w końcu zwolni maszynę. |
|
||||
|
||||
Te limity dotyczą tego, co serwer przyjmuje, więc ustaw je pod to, czego faktycznie używasz, a nie możliwie najniżej. Jeśli nigdy nie dotykasz wideo, limit `MAX_VIDEO_DURATION_S` nic nie kosztuje; jeśli codziennie skanujesz dokumenty, nie ograniczaj `MAX_PDF_PAGES`.
|
||||
|
||||
## Co pominąć {#what-to-skip}
|
||||
|
||||
- **Ciężkie pakiety AI.** Skalowanie w górę, przywracanie zdjęć i usuwanie tła chcą GPU albo szybkiego procesora z wieloma rdzeniami, a każdy pakiet kosztuje 4-5 GB dysku. Na małej maszynie po prostu ich nie instaluj; narzędzia, którym brakuje pakietu, pokazują monit o instalację zamiast się uruchamiać.
|
||||
- **Ponowne kodowanie wideo jako rutynowe obciążenie.** Okazjonalne transkodowania są w porządku (są po prostu wolne); stała kolejka transkodowania potrzebuje rdzeni CPU, nie Pi.
|
||||
- **Ogólnie nieużywane narzędzia.** Administrator może wyłączyć poszczególne narzędzia w Ustawieniach, co usuwa je z interfejsu i przestaje rejestrować ich trasy API. Samo w sobie nie oszczędza to pamięci, ale chroni współdzieloną małą instancję przed użyciem jej do tego jednego obciążenia, którego sprzęt nie udźwignie.
|
||||
|
||||
Jeśli później przeniesiesz instancję na większy sprzęt, usuń limity (ustaw je z powrotem na `0`), a ten sam wolumen danych przejdzie razem z nią.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Przewodnik po wzmacnianiu bezpieczeństwa SnapOtter. Bezpieczeństwo kontenerów, izolacja sieci, sekrety Docker, wdrożenie Kubernetes i artefakty zgodności."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c616d661a5d1
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "Dokumentacja SnapOtter"
|
||||
description: "Otwartoźródłowa, samodzielnie hostowana infrastruktura do przetwarzania plików. Konwertuj, kompresuj, rozpoznawaj tekst (OCR), transkrybuj i uruchamiaj lokalne AI dla obrazów, wideo, audio, PDF i dokumentów, przez interfejs, REST API i potoki. Hostuj samodzielnie jednym poleceniem Docker. Twoje pliki nigdy nie opuszczają twojego serwera."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6c61901c16b9
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Implante o SnapOtter em produção com Docker. Requisitos de hardware, configuração de GPU e configs de proxy reverso para Nginx, Traefik e Cloudflare."
|
||||
i18n_output_hash: b3176447b423
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Estes números vêm de benchmarks em uma variedade de sistemas, de uma workstation amd64 moderna com uma NVIDIA RTX 4070 até um Raspberry Pi, rodando todo o catálogo de ferramentas em cada um e variando os limites de recursos do Docker para encontrar o piso real.
|
||||
|
||||
Vai rodar na ponta menor desses níveis (um Pi, um notebook antigo, um VPS de 2 GB)? [Ambientes com Poucos Recursos](/pt-BR/guide/low-resource) transforma esses números em um passo a passo concreto com limites ajustados.
|
||||
|
||||
### Referência Rápida {#quick-reference}
|
||||
|
||||
| Nível | Caso de Uso | CPU | RAM | GPU | Armazenamento |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Instale o SnapOtter com Docker em um único comando. Inclui configuração de Docker Compose, build a partir do código-fonte e uma visão geral completa das features."
|
||||
i18n_output_hash: 8584b5780f52
|
||||
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
|
||||
|
||||
Este contêiner único roda tudo de que precisa: sem um `DATABASE_URL` definido, ele inicia seu próprio PostgreSQL e Redis na interface de loopback (modo embutido) e mantém todos os dados no volume `SnapOtter-data`. É a maneira mais rápida de experimentar o SnapOtter ou fazer self-host em um homelab. Para produção, rode a stack do [Docker Compose](#docker-compose) abaixo, que mantém o PostgreSQL e o Redis em seus próprios contêineres. O modo embutido roda como root (o padrão) e se desliga automaticamente assim que você define `DATABASE_URL`.
|
||||
|
||||
Vai instalar em um Raspberry Pi, um notebook antigo ou um VPS pequeno? Veja [Ambientes com Poucos Recursos](/pt-BR/guide/low-resource) para um passo a passo ajustado e o que esperar de hardware limitado.
|
||||
|
||||
Você será solicitado a trocar sua senha no primeiro login.
|
||||
|
||||
::: tip Analytics Anônimos de Produto
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 507cd5624773
|
||||
---
|
||||
# Ambientes com Poucos Recursos {#low-resource-setups}
|
||||
|
||||
O SnapOtter roda bem em hardware modesto: um Raspberry Pi 4 ou 5, um notebook antigo ou um VPS de 2 GB. Esta página é o guia prático para essas máquinas: o que esperar, uma configuração pronta para copiar e colar com limites sensatos e quais features pular. Os dados completos de benchmark por trás desses números estão em [Requisitos de Hardware](/pt-BR/guide/deployment#hardware-requirements).
|
||||
|
||||
Antes de tudo, duas restrições rígidas:
|
||||
|
||||
- **Apenas 64 bits.** A imagem é construída para `linux/amd64` e `linux/arm64`. ARM de 32 bits (`armv7`/`armhf`) não é suportado, então os Pis de primeira geração e a família Pi Zero ficam de fora.
|
||||
- **Piso de memória de 2 GB.** Com 512 MB a stack nem inicia, e 1 GB falha em lotes com vários arquivos. 2 GB com 2 núcleos é a menor configuração que funciona com folga.
|
||||
|
||||
## O que roda bem em hardware modesto {#what-runs-well}
|
||||
|
||||
Toda ferramenta sem IA funciona em uma máquina de 2 GB / 2 núcleos: as seções de Imagem e Arquivos inteiras, as ferramentas de PDF e as operações de vídeo e áudio por stream-copy (cortar, silenciar, remux de contêiner). A maioria termina em menos de um segundo.
|
||||
|
||||
Duas cargas de trabalho são as exceções:
|
||||
|
||||
- **Recodificação de vídeo** (converter entre codecs) é limitada pela CPU. Um clipe 1080p que leva ~40 s em uma CPU de desktop rápida pode levar vários minutos em uma CPU da classe do Pi. As operações de stream-copy continuam instantâneas.
|
||||
- **Ferramentas de IA** precisam de RAM (4 GB recomendados) e disco (os bundles maiores têm 4-5 GB cada), e as pesadas (upscale, restauração de fotos, remoção de fundo) não são práticas em CPUs da classe do Pi. IA leve, como detecção de rosto e OCR, é utilizável se você tiver memória para isso.
|
||||
|
||||
Nenhuma das duas é instalada ou fica rodando a menos que você a use: sem bundles de IA instalados, o aplicativo fica ocioso em torno de 360 MB, e os bundles de IA só são baixados quando um admin os habilita.
|
||||
|
||||
## Passo a passo para Raspberry Pi / notebook antigo {#walkthrough}
|
||||
|
||||
Esta é a instalação padrão com Compose de [Primeiros Passos](/pt-BR/guide/getting-started), mais limites de recursos e tetos conservadores. Ela pressupõe um sistema operacional de 64 bits (em um Pi: Raspberry Pi OS 64-bit ou 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
|
||||
```
|
||||
|
||||
Observações para máquinas da classe do Pi:
|
||||
|
||||
- **Prefira um SSD USB a um cartão SD** para o volume de dados e o Postgres. As áreas de trabalho dos jobs fazem IO de disco de verdade, e cartões SD são lentos e se desgastam rápido.
|
||||
- **O contêiner único tudo-em-um também funciona aqui** (Postgres e Redis embutidos quando `DATABASE_URL`/`REDIS_URL` não estão definidos), e em um host com pouca memória você deve reduzir o teto do Redis embutido com `REDIS_MAXMEMORY` (veja [Configuração](/pt-BR/guide/configuration)). O Compose dá um controle mais fino por serviço, e é por isso que este passo a passo o utiliza.
|
||||
- **Adicione swap em dispositivos de 2 GB.** Isso evita que um pico ocasional (um PDF grande, um lote que você esqueceu de limitar) termine em um kill por falta de memória. zram é a opção amigável ao cartão SD.
|
||||
- A imagem arm64 é apenas CPU; não há CUDA em placas ARM.
|
||||
|
||||
## Os ajustes disponíveis {#tuning-knobs}
|
||||
|
||||
Todos os limites são variáveis de ambiente, documentadas por completo em [Configuração](/pt-BR/guide/configuration). `0` significa ilimitado ou automático. Os que importam em hardware modesto:
|
||||
|
||||
| Variável | Sugestão para máquinas pequenas | O que protege |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Quantos jobs rodam em paralelo. A detecção automática usa o número de núcleos de CPU menos um, o que funciona bem em máquinas grandes e é agressivo demais em uma máquina de 2 núcleos sob pressão de memória. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Pool de threads de processamento de imagem. |
|
||||
| `MAX_BATCH_SIZE` | `5` | É nos lotes que máquinas de 1-2 GB ficam sem memória primeiro. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Impede que um único arquivo enorme ocupe toda a área de trabalho. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Decodificar uma imagem de 100+ MP custa RAM independentemente do tamanho do arquivo. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Transcodificações longas monopolizam uma CPU pequena por minutos ou horas. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Teto rígido para que um job descontrolado acabe liberando a máquina. |
|
||||
|
||||
Esses limites se aplicam ao que o servidor aceita, então defina-os de acordo com o que você realmente usa, e não com o menor valor possível. Se você nunca mexe com vídeo, um limite em `MAX_VIDEO_DURATION_S` não custa nada; se você digitaliza documentos todos os dias, não limite `MAX_PDF_PAGES`.
|
||||
|
||||
## O que pular {#what-to-skip}
|
||||
|
||||
- **Bundles de IA pesados.** Upscale, restauração de fotos e remoção de fundo pedem uma GPU ou uma CPU rápida com muitos núcleos, e cada bundle custa 4-5 GB de disco. Em uma máquina pequena, simplesmente não os instale; ferramentas cujo bundle está ausente mostram um aviso de instalação em vez de rodar.
|
||||
- **Recodificação de vídeo como carga de trabalho rotineira.** Transcodificações ocasionais são aceitáveis (só são lentas); uma fila constante de transcodificação pede núcleos de CPU, não um Pi.
|
||||
- **Ferramentas não usadas em geral.** Um admin pode desligar ferramentas individuais em Configurações, o que as remove da interface e deixa de registrar suas rotas de API. Isso por si só não economiza memória, mas evita que uma instância pequena compartilhada seja usada justamente para a carga de trabalho que o hardware não aguenta.
|
||||
|
||||
Se mais tarde você mover a instância para um hardware maior, remova os limites (defina-os de volta para `0`) e o mesmo volume de dados vai junto.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Guia de hardening de segurança para o SnapOtter. Segurança de contêineres, isolamento de rede, Docker secrets, implantação em Kubernetes e artefatos de conformidade."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fe0dc1598bab
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "Documentação do SnapOtter"
|
||||
description: "Infraestrutura de processamento de arquivos open-source e self-hosted. Converta, comprima, faça OCR, transcreva e rode IA local em imagem, vídeo, áudio, PDF e documentos, via interface, API REST e pipelines. Faça self-host com um único comando Docker. Seus arquivos nunca saem do seu servidor."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 00620f544cba
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Разверните SnapOtter в продакшене с помощью Docker. Требования к оборудованию, настройка GPU и конфигурации обратного прокси для Nginx, Traefik и Cloudflare."
|
||||
i18n_output_hash: b5d2efef5f93
|
||||
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 ГБ)? Раздел [Установка на маломощном оборудовании](/ru/guide/low-resource) превращает эти цифры в конкретное пошаговое руководство с подобранными лимитами.
|
||||
|
||||
### Краткая справка {#quick-reference}
|
||||
|
||||
| Уровень | Сценарий использования | CPU | RAM | GPU | Хранилище |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Установите SnapOtter с помощью Docker одной командой. Включает настройку Docker Compose, сборку из исходников и полный обзор функций."
|
||||
i18n_output_hash: 92434430b233
|
||||
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-интерфейсе (встроенный режим) и хранит все данные в томе `SnapOtter-data`. Это самый быстрый способ попробовать SnapOtter или развернуть на своём homelab. Для продакшена запустите стек [Docker Compose](#docker-compose) ниже, который держит PostgreSQL и Redis в их собственных контейнерах. Встроенный режим работает от имени root (по умолчанию) и автоматически отключается, как только вы установите `DATABASE_URL`.
|
||||
|
||||
Устанавливаете SnapOtter на Raspberry Pi, старый ноутбук или небольшой VPS? В разделе [Установка на маломощном оборудовании](/ru/guide/low-resource) есть пошаговое руководство с подобранными лимитами и описание того, чего ожидать от ограниченного оборудования.
|
||||
|
||||
При первом входе вам будет предложено сменить пароль.
|
||||
|
||||
::: tip Анонимная продуктовая аналитика
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: e66e6e2d05d0
|
||||
---
|
||||
# Установка на маломощном оборудовании {#low-resource-setups}
|
||||
|
||||
SnapOtter хорошо работает на маломощном оборудовании: Raspberry Pi 4 или 5, старом ноутбуке или VPS с 2 ГБ памяти. Эта страница служит практическим руководством для таких машин: чего ожидать, готовая для копирования конфигурация с разумными лимитами и какие функции лучше пропустить. Полные данные бенчмарков, на которых основаны эти цифры, находятся в разделе [Требования к оборудованию](/ru/guide/deployment#hardware-requirements).
|
||||
|
||||
Два жёстких ограничения с самого начала:
|
||||
|
||||
- **Только 64 бита.** Образ собирается для `linux/amd64` и `linux/arm64`. 32-битный ARM (`armv7`/`armhf`) не поддерживается, поэтому Pi первого поколения и семейство Pi Zero отпадают.
|
||||
- **Минимум 2 ГБ памяти.** С 512 МБ стек не запускается, а 1 ГБ не хватает на многофайловых пакетах. Наименьшая комфортно работающая конфигурация: 2 ГБ и 2 ядра.
|
||||
|
||||
## Что хорошо работает на маломощном оборудовании {#what-runs-well}
|
||||
|
||||
Каждый инструмент без ИИ работает на машине с 2 ГБ и 2 ядрами: разделы «Изображения» и «Файлы» целиком, PDF-инструменты, а также видео- и аудиооперации с копированием потока (обрезка, отключение звука, смена контейнера). Большинство завершается менее чем за секунду.
|
||||
|
||||
Исключение составляют два типа нагрузки:
|
||||
|
||||
- **Перекодирование видео** (конвертация между кодеками) упирается в CPU. Клип 1080p, который занимает ~40 с на быстром десктопном CPU, может обрабатываться несколько минут на CPU класса Pi. Операции с копированием потока остаются мгновенными.
|
||||
- **ИИ-инструментам** нужны RAM (рекомендуется 4 ГБ) и диск (крупные наборы моделей занимают по 4-5 ГБ каждый), а тяжёлые из них (апскейл, восстановление фото, удаление фона) непрактичны на CPU класса Pi. Лёгкий ИИ, такой как распознавание лиц и OCR, вполне пригоден, если на него хватает памяти.
|
||||
|
||||
Ничто из этого не устанавливается и не работает, пока вы этим не пользуетесь: без установленных ИИ-наборов приложение в простое занимает около 360 МБ, а ИИ-наборы скачиваются только тогда, когда администратор их включает.
|
||||
|
||||
## Пошаговая установка на Raspberry Pi / старом ноутбуке {#walkthrough}
|
||||
|
||||
Это стандартная установка через Compose из раздела [Начало работы](/ru/guide/getting-started) плюс лимиты ресурсов и консервативные ограничения. Предполагается 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:
|
||||
|
||||
- **Предпочитайте USB SSD, а не SD-карту** для тома данных и Postgres. Рабочие каталоги заданий создают реальную дисковую нагрузку, а SD-карты и медленные, и быстро изнашиваются.
|
||||
- **Единый контейнер «всё в одном» здесь тоже работает** (встроенные Postgres и Redis, когда `DATABASE_URL`/`REDIS_URL` не заданы), и на хосте с ограниченной памятью стоит снизить лимит его встроенного Redis через `REDIS_MAXMEMORY` (см. [Конфигурация](/ru/guide/configuration)). Compose даёт более тонкий контроль по каждому сервису, поэтому в этом руководстве используется именно он.
|
||||
- **Добавьте swap на устройствах с 2 ГБ.** Он не даёт случайному всплеску (большой PDF, пакет, который вы забыли ограничить) закончиться завершением процесса из-за нехватки памяти. Вариант, щадящий SD-карту: zram.
|
||||
- Образ arm64 работает только на CPU; CUDA на платах ARM нет.
|
||||
|
||||
## Параметры настройки {#tuning-knobs}
|
||||
|
||||
Все лимиты задаются переменными окружения и полностью документированы в разделе [Конфигурация](/ru/guide/configuration). `0` означает «без ограничений» или «авто». Вот те, что важны на маломощном оборудовании:
|
||||
|
||||
| Переменная | Рекомендация для маломощной машины | Что она защищает |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Сколько заданий выполняется параллельно. Автоопределение берёт число ядер CPU минус одно: это нормально на больших машинах и слишком агрессивно на 2-ядерной машине при нехватке памяти. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Пул потоков обработки изображений. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Пакетная обработка: именно на ней машинам с 1-2 ГБ первым делом не хватает памяти. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Не даёт одному огромному файлу занять всё рабочее пространство. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Декодирование изображения на 100+ Мп расходует RAM независимо от размера файла. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Долгие перекодирования занимают слабый CPU на минуты и даже часы. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Жёсткий потолок, чтобы вышедшее из-под контроля задание рано или поздно освободило машину. |
|
||||
|
||||
Эти лимиты определяют, что сервер принимает, поэтому настраивайте их под то, чем вы реально пользуетесь, а не как можно меньше. Если вы не работаете с видео, ограничение `MAX_VIDEO_DURATION_S` ничего не стоит; если вы ежедневно сканируете документы, не ограничивайте `MAX_PDF_PAGES`.
|
||||
|
||||
## Что пропустить {#what-to-skip}
|
||||
|
||||
- **Тяжёлые ИИ-наборы.** Апскейлу, восстановлению фото и удалению фона нужен GPU или быстрый многоядерный CPU, а каждый набор занимает 4-5 ГБ на диске. На маломощной машине просто не устанавливайте их; инструменты, чей набор не установлен, показывают предложение установки вместо запуска.
|
||||
- **Перекодирование видео как регулярная нагрузка.** Разовые перекодирования допустимы (они просто медленные); постоянной очереди перекодирования нужны ядра CPU, а не Pi.
|
||||
- **Неиспользуемые инструменты в целом.** Администратор может отключать отдельные инструменты в Settings: они исчезают из интерфейса, а их API-маршруты перестают регистрироваться. Само по себе это не экономит память, но не даёт использовать общий небольшой экземпляр под ту единственную нагрузку, которую оборудование не потянет.
|
||||
|
||||
Если позже вы перенесёте экземпляр на более мощное оборудование, уберите лимиты (верните их в `0`), и тот же том данных продолжит работать.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Руководство по усилению безопасности SnapOtter. Безопасность контейнеров, сетевая изоляция, Docker secrets, развёртывание в Kubernetes и артефакты соответствия требованиям."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 712ae054624d
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "Документация SnapOtter"
|
||||
description: "Открытая, самостоятельно размещаемая инфраструктура обработки файлов. Конвертируйте, сжимайте, распознавайте текст (OCR), транскрибируйте и запускайте локальный ИИ для изображений, видео, аудио, PDF и документов через UI, REST API и конвейеры. Разверните на своём сервере одной командой Docker. Ваши файлы никогда не покидают ваш сервер."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ae5096806759
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Distribuera SnapOtter till produktion med Docker. Hårdvarukrav, GPU-konfiguration och konfigurationer för omvänd proxy för Nginx, Traefik och Cloudflare."
|
||||
i18n_output_hash: c280952d9d27
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Dessa siffror kommer från benchmarktester över en rad system, från en modern amd64-arbetsstation med en NVIDIA RTX 4070 ner till en Raspberry Pi, där hela verktygskatalogen kördes på var och en och Docker-resursgränserna svepte över värdena för att hitta det verkliga golvet.
|
||||
|
||||
Kör du i den nedre änden av dessa nivåer (en Pi, en gammal bärbar dator, en VPS med 2 GB)? [Resurssnåla installationer](/sv/guide/low-resource) omvandlar dessa siffror till en konkret genomgång med anpassade tak.
|
||||
|
||||
### Snabbreferens {#quick-reference}
|
||||
|
||||
| Nivå | Användningsfall | CPU | RAM | GPU | Lagring |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Installera SnapOtter med Docker i ett enda kommando. Inkluderar Docker Compose-konfiguration, byggande från källkod och en fullständig funktionsöversikt."
|
||||
i18n_output_hash: 4b247783a830
|
||||
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
|
||||
|
||||
Denna enda container kör allt den behöver: utan `DATABASE_URL` angivet startar den sin egen PostgreSQL och Redis på loopback-gränssnittet (inbäddat läge) och håller all data i `SnapOtter-data`-volymen. Det är det snabbaste sättet att prova SnapOtter eller att själv hosta i ett hemmalabb. För produktion, kör [Docker Compose](#docker-compose)-stacken nedan, som håller PostgreSQL och Redis i sina egna containrar. Inbäddat läge körs som root (standardvärdet) och stängs av automatiskt så snart du anger `DATABASE_URL`.
|
||||
|
||||
Installerar du på en Raspberry Pi, en gammal bärbar dator eller en liten VPS? Se [Resurssnåla installationer](/sv/guide/low-resource) för en anpassad genomgång och vad du kan förvänta dig av begränsad hårdvara.
|
||||
|
||||
Du kommer att ombes att ändra ditt lösenord vid första inloggningen.
|
||||
|
||||
::: tip Anonym produktanalys
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 4ad5655688ed
|
||||
---
|
||||
# Resurssnåla installationer {#low-resource-setups}
|
||||
|
||||
SnapOtter fungerar bra på liten hårdvara: en Raspberry Pi 4 eller 5, en gammal bärbar dator eller en VPS med 2 GB. Den här sidan är den praktiska guiden för sådana maskiner: vad du kan förvänta dig, en kopieringsklar konfiguration med rimliga tak och vilka funktioner du bör hoppa över. Den fullständiga benchmarkdatan bakom dessa siffror finns i [Hårdvarukrav](/sv/guide/deployment#hardware-requirements).
|
||||
|
||||
Två hårda begränsningar direkt:
|
||||
|
||||
- **Endast 64 bitar.** Avbildningen byggs för `linux/amd64` och `linux/arm64`. 32-bitars ARM (`armv7`/`armhf`) stöds inte, så första generationens Pi och Pi Zero-familjen faller bort.
|
||||
- **2 GB minne som golv.** Med 512 MB kan stacken inte starta, och 1 GB misslyckas vid batchar med flera filer. 2 GB med 2 kärnor är den minsta konfigurationen som fungerar bekvämt.
|
||||
|
||||
## Vad som fungerar bra på liten hårdvara {#what-runs-well}
|
||||
|
||||
Alla verktyg utan AI fungerar på en maskin med 2 GB / 2 kärnor: hela sektionerna för bilder och filer, PDF-verktygen samt video- och ljudoperationerna med stream copy (trimma, tysta, byta container). De flesta blir klara på under en sekund.
|
||||
|
||||
Två arbetslaster är undantagen:
|
||||
|
||||
- **Omkodning av video** (konvertering mellan codecs) begränsas av CPU:n. Ett 1080p-klipp som tar ~40 s på en snabb stationär CPU kan ta flera minuter på en CPU i Pi-klass. Stream copy-operationer förblir omedelbara.
|
||||
- **AI-verktyg** behöver RAM (4 GB rekommenderas) och disk (de större paketen är 4-5 GB vardera), och de tunga (uppskalning, fotorestaurering, bakgrundsborttagning) är inte praktiska på CPU:er i Pi-klass. Lätt AI som ansiktsdetektering och OCR är användbart om du har minne för det.
|
||||
|
||||
Inget av detta installeras eller körs om du inte använder det: utan installerade AI-paket vilar appen på runt 360 MB, och AI-paket laddas bara ner när en administratör aktiverar dem.
|
||||
|
||||
## Genomgång för Raspberry Pi / gammal bärbar dator {#walkthrough}
|
||||
|
||||
Detta är standardinstallationen med Compose från [Kom igång](/sv/guide/getting-started), plus resursgränser och konservativa tak. Den förutsätter ett 64-bitars operativsystem (på en Pi: Raspberry Pi OS 64-bit eller 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
|
||||
```
|
||||
|
||||
Anteckningar för maskiner i Pi-klass:
|
||||
|
||||
- **Föredra en USB-SSD framför ett SD-kort** för datavolymen och Postgres. Jobbens arbetsytor gör verklig disk-IO, och SD-kort är både långsamma och snabba på att slitas ut.
|
||||
- **Allt-i-ett-containern fungerar också här** (inbäddad Postgres och Redis när `DATABASE_URL`/`REDIS_URL` inte är satta), och på en värd med begränsat minne bör du sänka taket för dess inbäddade Redis med `REDIS_MAXMEMORY` (se [Konfiguration](/sv/guide/configuration)). Compose ger dig finare kontroll per tjänst, och det är därför den här genomgången använder det.
|
||||
- **Lägg till swap på enheter med 2 GB.** Det hindrar den enstaka toppen (en stor PDF, en batch du glömde att begränsa) från att sluta i en out-of-memory-kill. zram är det SD-kortvänliga alternativet.
|
||||
- arm64-avbildningen är endast CPU; det finns ingen CUDA på ARM-kort.
|
||||
|
||||
## Justeringsrattarna {#tuning-knobs}
|
||||
|
||||
Alla tak är miljövariabler och dokumenteras fullständigt i [Konfiguration](/sv/guide/configuration). `0` betyder obegränsat eller auto. De som spelar roll på liten hårdvara:
|
||||
|
||||
| Variabel | Förslag för små maskiner | Vad den skyddar |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Hur många jobb som körs parallellt. Autodetekteringen använder antalet CPU-kärnor minus en, vilket är bra på stora maskiner och för ivrigt på en 2-kärnig låda under minnestryck. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Trådpool för bildbehandling. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Batchar är där maskiner med 1-2 GB får slut på minne först. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Hindrar en enda enorm fil från att uppta hela arbetsytan. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Att avkoda en bild på 100+ MP kostar RAM oavsett filstorlek. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Långa omkodningar lägger beslag på en liten CPU i minuter till timmar. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Hårt tak så att ett skenande jobb till slut frigör maskinen. |
|
||||
|
||||
Dessa tak gäller vad servern accepterar, så ställ in dem efter vad du faktiskt använder snarare än så lågt som möjligt. Om du aldrig rör video kostar ett `MAX_VIDEO_DURATION_S`-tak ingenting; om du skannar dokument dagligen ska du inte sätta något tak på `MAX_PDF_PAGES`.
|
||||
|
||||
## Vad du bör hoppa över {#what-to-skip}
|
||||
|
||||
- **Tunga AI-paket.** Uppskalning, fotorestaurering och bakgrundsborttagning vill ha en GPU eller en snabb CPU med många kärnor, och varje paket kostar 4-5 GB disk. På en liten maskin installerar du dem helt enkelt inte; verktyg vars paket saknas visar en installationsuppmaning i stället för att köras.
|
||||
- **Omkodning av video som rutinarbetslast.** Enstaka omkodningar går bra (de är bara långsamma); en stadig omkodningskö vill ha CPU-kärnor, inte en Pi.
|
||||
- **Oanvända verktyg i allmänhet.** En administratör kan stänga av enskilda verktyg i Settings, vilket tar bort dem från gränssnittet och slutar registrera deras API-rutter. Det sparar inte minne i sig, men det hindrar en delad liten instans från att användas för just den arbetslast som hårdvaran inte klarar.
|
||||
|
||||
Om du senare flyttar instansen till större hårdvara tar du bort taken (sätt tillbaka dem till `0`) och samma datavolym följer med.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Guide för säkerhetshärdning för SnapOtter. Containersäkerhet, nätverksisolering, Docker-hemligheter, Kubernetes-distribution och efterlevnadsartefakter."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a8e16c353a09
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Öppen källkod, självhostad infrastruktur för filbearbetning. Konvertera, komprimera, OCR, transkribera och kör lokal AI över bild, video, ljud, PDF och dokument, via UI, REST API och pipelines. Självhosta med ett enda Docker-kommando. Dina filer lämnar aldrig din server."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 24182c30596f
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "\\\"โครงสร้างพื้นฐานการประมวลผลไฟล์แบบโอเพนซอร์ส self-hosted แปลง บีบอัด OCR ถอดเสียง และรัน AI ในเครื่องข้ามรูปภาพ วิดีโอ เสียง PDF และเอกสาร ผ่าน UI, REST API และไปป์ไลน์ Self-host ด้วยคำสั่ง Docker เดียว ไฟล์ของคุณไม่เคยออกจากเซิร์ฟเวอร์ของคุณ\\\""
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b09f2b28a021
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter'ı Docker ile üretime dağıtın. Donanım gereksinimleri, GPU kurulumu ve Nginx, Traefik ve Cloudflare için ters proxy yapılandırmaları."
|
||||
i18n_output_hash: 4fadf7841bd7
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Bu sayılar, NVIDIA RTX 4070'li modern bir amd64 iş istasyonundan Raspberry Pi'ye kadar çeşitli sistemlerde yapılan kıyaslamalardan gelmektedir; her birinde tüm araç kataloğu çalıştırılmış ve gerçek alt sınırı bulmak için Docker kaynak limitleri taranmıştır.
|
||||
|
||||
Bu seviyelerin alt ucunda mı çalışıyorsunuz (bir Pi, eski bir dizüstü, 2 GB'lık bir VPS)? [Düşük Kaynaklı Kurulumlar](/tr/guide/low-resource) bu sayıları, ayarlanmış sınırlar içeren somut bir adım adım kılavuza dönüştürür.
|
||||
|
||||
### Hızlı Referans {#quick-reference}
|
||||
|
||||
| Seviye | Kullanım Senaryosu | CPU | RAM | GPU | Depolama |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter'ı Docker ile tek komutla kurun. Docker Compose kurulumu, kaynaktan derleme ve tam özellik genel bakışı içerir."
|
||||
i18n_output_hash: 715756b0b772
|
||||
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
|
||||
|
||||
Bu tek konteyner ihtiyaç duyduğu her şeyi çalıştırır: `DATABASE_URL` ayarlanmadığında, geri döngü arayüzünde kendi PostgreSQL ve Redis'ini başlatır (gömülü mod) ve tüm verileri `SnapOtter-data` biriminde tutar. SnapOtter'ı denemenin veya bir ev laboratuvarında kendiniz barındırmanın en hızlı yoludur. Üretim için, PostgreSQL ve Redis'i kendi konteynerlerinde tutan aşağıdaki [Docker Compose](#docker-compose) yığınını çalıştırın. Gömülü mod root olarak çalışır (varsayılan) ve `DATABASE_URL` ayarladığınız anda otomatik olarak kapanır.
|
||||
|
||||
Bir Raspberry Pi'ye, eski bir dizüstüne veya küçük bir VPS'e mi kuruyorsunuz? Ayarlanmış adım adım kurulum ve kısıtlı donanımdan neler bekleyeceğiniz için [Düşük Kaynaklı Kurulumlar](/tr/guide/low-resource) bölümüne bakın.
|
||||
|
||||
İlk oturum açmada parolanızı değiştirmeniz istenecektir.
|
||||
|
||||
::: tip Anonim Ürün Analitiği
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: b343bad72549
|
||||
---
|
||||
# Düşük Kaynaklı Kurulumlar {#low-resource-setups}
|
||||
|
||||
SnapOtter küçük donanımda iyi çalışır: bir Raspberry Pi 4 veya 5, eski bir dizüstü bilgisayar ya da 2 GB'lık bir VPS. Bu sayfa, bu makineler için pratik kılavuzdur: neler beklemeniz gerektiği, makul sınırlarla kopyala-yapıştır bir kurulum ve hangi özelliklerin atlanacağı. Bu sayıların arkasındaki tam kıyaslama verileri [Donanım Gereksinimleri](/tr/guide/deployment#hardware-requirements) bölümündedir.
|
||||
|
||||
Baştan iki kesin kısıt:
|
||||
|
||||
- **Yalnızca 64 bit.** İmaj `linux/amd64` ve `linux/arm64` için derlenir. 32 bit ARM (`armv7`/`armhf`) desteklenmez; bu yüzden birinci nesil Pi'ler ve Pi Zero ailesi devre dışıdır.
|
||||
- **2 GB bellek tabanı.** 512 MB yığını başlatamaz, 1 GB ise çok dosyalı toplu işlerde başarısız olur. Rahat çalışan en küçük yapılandırma 2 çekirdekli 2 GB'dir.
|
||||
|
||||
## Küçük donanımda neler iyi çalışır {#what-runs-well}
|
||||
|
||||
AI olmayan her araç 2 GB / 2 çekirdekli bir makinede çalışır: Görsel ve Dosyalar bölümlerinin tamamı, PDF araçları ve stream copy ile yapılan video ve ses işlemleri (kırpma, sesi kapatma, kapsayıcı değişimi). Çoğu bir saniyenin altında tamamlanır.
|
||||
|
||||
İki iş yükü istisnadır:
|
||||
|
||||
- **Videoyu yeniden kodlama** (codec'ler arasında dönüştürme) CPU'ya bağlıdır. Hızlı bir masaüstü CPU'sunda ~40 sn süren bir 1080p klip, Pi sınıfı bir CPU'da birkaç dakika sürebilir. Stream copy işlemleri anlık kalır.
|
||||
- **AI araçları** RAM (4 GB önerilir) ve disk ister (büyük paketlerin her biri 4-5 GB'dir) ve ağır olanlar (ölçeklendirme, fotoğraf restorasyonu, arka plan kaldırma) Pi sınıfı CPU'larda pratik değildir. Yüz algılama ve OCR gibi hafif AI, belleğiniz yetiyorsa kullanılabilir.
|
||||
|
||||
İkisi de siz kullanmadıkça kurulmaz ve çalışmaz: hiçbir AI paketi kurulu değilken uygulama boşta yaklaşık 360 MB kullanır ve AI paketleri yalnızca bir yönetici etkinleştirdiğinde indirilir.
|
||||
|
||||
## Raspberry Pi / eski dizüstü için adım adım kurulum {#walkthrough}
|
||||
|
||||
Bu, [Başlarken](/tr/guide/getting-started) bölümündeki standart Compose kurulumunun kaynak limitleri ve temkinli sınırlar eklenmiş hâlidir. 64 bit bir işletim sistemi varsayar (bir Pi'de: Raspberry Pi OS 64-bit veya 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 sınıfı makineler için notlar:
|
||||
|
||||
- **SD kart yerine bir USB SSD tercih edin**; veri birimi ve Postgres bunun üzerinde dursun. İş çalışma alanları gerçek disk G/Ç'si yapar ve SD kartlar hem yavaştır hem de çabuk aşınır.
|
||||
- **Hepsi bir arada tek konteyner burada da çalışır** (`DATABASE_URL`/`REDIS_URL` ayarlanmadığında gömülü Postgres ve Redis) ve belleği kısıtlı bir ana makinede gömülü Redis sınırını `REDIS_MAXMEMORY` ile düşürmelisiniz (bkz. [Yapılandırma](/tr/guide/configuration)). Compose servis başına daha ince denetim sağlar; bu kılavuzun Compose kullanmasının nedeni de budur.
|
||||
- **2 GB'lık cihazlara swap ekleyin.** Bu, ara sıra oluşan bir sıçramanın (büyük bir PDF, sınırlamayı unuttuğunuz bir toplu iş) bellek yetersizliğinden süreç sonlandırmayla bitmesini önler. zram, SD kart dostu seçenektir.
|
||||
- arm64 imajı yalnızca CPU içindir; ARM kartlarda CUDA yoktur.
|
||||
|
||||
## Ayar düğmeleri {#tuning-knobs}
|
||||
|
||||
Tüm sınırlar ortam değişkenleridir ve [Yapılandırma](/tr/guide/configuration) bölümünde eksiksiz belgelenmiştir. `0` sınırsız veya otomatik anlamına gelir. Küçük donanımda önemli olanlar:
|
||||
|
||||
| Değişken | Küçük makine önerisi | Neyi korur |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Kaç işin paralel çalıştığı. Otomatik algılama CPU çekirdek sayısının bir eksiğini kullanır; bu büyük makinelerde iyidir, bellek baskısı altındaki 2 çekirdekli bir kutuda ise fazla isteklidir. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Görüntü işleme iş parçacığı havuzu. |
|
||||
| `MAX_BATCH_SIZE` | `5` | 1-2 GB'lık makinelerin belleği ilk önce toplu işlerde tükenir. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Tek bir devasa dosyanın tüm çalışma alanını kaplamasını önler. |
|
||||
| `MAX_MEGAPIXELS` | `50` | 100+ MP bir görseli çözmek, dosya boyutundan bağımsız olarak RAM'e mal olur. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Uzun dönüştürmeler küçük bir CPU'yu dakikalarca, hatta saatlerce meşgul eder. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Kontrolden çıkan bir işin makineyi eninde sonunda serbest bırakması için kesin tavan. |
|
||||
|
||||
Bu sınırlar sunucunun neyi kabul ettiğini belirler; bu yüzden onları olabildiğince küçük değil, gerçekten kullandığınız şeye göre ayarlayın. Videoya hiç dokunmuyorsanız bir `MAX_VIDEO_DURATION_S` sınırının maliyeti yoktur; her gün belge tarıyorsanız `MAX_PDF_PAGES` değişkenine sınır koymayın.
|
||||
|
||||
## Nelerden vazgeçmeli {#what-to-skip}
|
||||
|
||||
- **Ağır AI paketleri.** Ölçeklendirme, fotoğraf restorasyonu ve arka plan kaldırma bir GPU veya çok çekirdekli hızlı bir CPU ister ve her paket 4-5 GB disk kaplar. Küçük bir makinede bunları kurmamanız yeterlidir; paketi eksik olan araçlar çalışmak yerine bir kurulum istemi gösterir.
|
||||
- **Rutin iş yükü olarak video yeniden kodlama.** Ara sıra dönüştürme sorun değildir (yalnızca yavaştır); sürekli bir dönüştürme kuyruğu CPU çekirdeği ister, Pi değil.
|
||||
- **Genel olarak kullanılmayan araçlar.** Bir yönetici Settings içinden tek tek araçları kapatabilir; bu, onları arayüzden kaldırır ve API rotalarının kaydını durdurur. Bu tek başına bellek kazandırmaz, ancak paylaşılan küçük bir örneğin donanımın kaldıramayacağı o tek iş yükü için kullanılmasını engeller.
|
||||
|
||||
Örneği daha sonra daha büyük bir donanıma taşırsanız sınırları kaldırın (`0` değerine geri alın); aynı veri birimi olduğu gibi taşınır.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter için güvenlik sıkılaştırma kılavuzu. Konteyner güvenliği, ağ yalıtımı, Docker secrets, Kubernetes dağıtımı ve uyumluluk yapıtları."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 06ae3b36d6e3
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Açık kaynaklı, kendi kendine barındırılan dosya işleme altyapısı. Görsel, video, ses, PDF ve belgeler arasında; arayüz, REST API ve ardışık düzenler aracılığıyla dönüştürün, sıkıştırın, OCR yapın, transkribe edin ve yerel AI çalıştırın. Tek bir Docker komutuyla kendiniz barındırın. Dosyalarınız asla sunucunuzdan ayrılmaz."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e6d464d0d23a
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Розгорніть SnapOtter у продакшені за допомогою Docker. Вимоги до апаратного забезпечення, налаштування GPU та конфігурації зворотного проксі для Nginx, Traefik і Cloudflare."
|
||||
i18n_output_hash: 4d221e5eaf97
|
||||
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)? Сторінка [Робота на слабкому обладнанні](/uk/guide/low-resource) перетворює ці цифри на конкретний покроковий посібник із підібраними лімітами.
|
||||
|
||||
### Швидка довідка {#quick-reference}
|
||||
|
||||
| Рівень | Сценарій використання | CPU | RAM | GPU | Сховище |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Встановіть SnapOtter за допомогою Docker однією командою. Включає налаштування Docker Compose, збирання з вихідного коду й повний огляд функцій."
|
||||
i18n_output_hash: a97c15d102b5
|
||||
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 (вбудований режим) і зберігає всі дані в томі `SnapOtter-data`. Це найшвидший спосіб спробувати SnapOtter або самостійно розмістити його в homelab. Для продакшену запустіть стек [Docker Compose](#docker-compose) нижче, який тримає PostgreSQL і Redis у власних контейнерах. Вбудований режим працює від root (за замовчуванням) і автоматично вимикається, щойно ви встановлюєте `DATABASE_URL`.
|
||||
|
||||
Встановлюєте на Raspberry Pi, старому ноутбуці чи невеликому VPS? Див. [Робота на слабкому обладнанні](/uk/guide/low-resource): там є покроковий посібник із підібраними налаштуваннями й пояснення, чого очікувати від обмеженого обладнання.
|
||||
|
||||
Під час першого входу вас попросять змінити пароль.
|
||||
|
||||
::: tip Анонімна продуктова аналітика
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 27b701493717
|
||||
---
|
||||
# Робота на слабкому обладнанні {#low-resource-setups}
|
||||
|
||||
SnapOtter добре працює на скромному обладнанні: Raspberry Pi 4 чи 5, старому ноутбуці або VPS із 2 GB пам'яті. Ця сторінка є практичним посібником для таких машин: чого очікувати, готове до копіювання налаштування з розумними лімітами й які функції варто пропустити. Повні дані бенчмарків, на яких ґрунтуються ці цифри, наведено в розділі [Вимоги до апаратного забезпечення](/uk/guide/deployment#hardware-requirements).
|
||||
|
||||
Два жорсткі обмеження одразу:
|
||||
|
||||
- **Тільки 64-бітні системи.** Образ збирається для `linux/amd64` і `linux/arm64`. 32-бітний ARM (`armv7`/`armhf`) не підтримується, тож Pi першого покоління та сімейство Pi Zero відпадають.
|
||||
- **Мінімум 2 GB пам'яті.** 512 MB не запустять стек, а 1 GB не витримує пакетів із кількох файлів. Найменша конфігурація, що працює комфортно: 2 GB і 2 ядра.
|
||||
|
||||
## Що добре працює на слабкому обладнанні {#what-runs-well}
|
||||
|
||||
Кожен інструмент без AI працює на машині з 2 GB і 2 ядрами: цілі розділи «Зображення» та «Файли», PDF-інструменти, а також відео- та аудіооперації з копіюванням потоку (обрізання, вимкнення звуку, зміна контейнера). Більшість завершується менш ніж за секунду.
|
||||
|
||||
Винятками є два типи навантаження:
|
||||
|
||||
- **Перекодування відео** (конвертація між кодеками) обмежене процесором. Кліп 1080p, який на швидкому десктопному CPU займає ~40 с, на процесорі класу Pi може тривати кілька хвилин. Операції з копіюванням потоку залишаються миттєвими.
|
||||
- **AI-інструменти** потребують RAM (рекомендовано 4 GB) і диска (більші бандли займають по 4-5 GB кожен), а важкі з них (масштабування, відновлення фото, видалення фону) непрактичні на процесорах класу Pi. Легкий AI, як-от виявлення облич і OCR, цілком придатний, якщо вистачає пам'яті.
|
||||
|
||||
Жодне з цих навантажень не встановлюється й не запускається, доки ви ним не користуєтеся: без встановлених AI-бандлів застосунок у простої займає близько 360 MB, а AI-бандли завантажуються лише тоді, коли адміністратор їх вмикає.
|
||||
|
||||
## Покрокове налаштування Raspberry Pi / старого ноутбука {#walkthrough}
|
||||
|
||||
Це стандартне встановлення через Compose зі сторінки [Початок роботи](/uk/guide/getting-started), плюс ліміти ресурсів і консервативні обмеження. Передбачається 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:
|
||||
|
||||
- **Віддавайте перевагу USB SSD, а не SD-карті** для тому даних і Postgres. Робочі простори завдань створюють реальне дискове навантаження, а SD-карти водночас повільні й швидко зношуються.
|
||||
- **Універсальний єдиний контейнер тут теж працює** (вбудовані Postgres і Redis, коли `DATABASE_URL`/`REDIS_URL` не встановлені), і на хості з обмеженою пам'яттю варто зменшити ліміт вбудованого Redis через `REDIS_MAXMEMORY` (див. [Конфігурація](/uk/guide/configuration)). Compose дає точніший контроль на рівні окремих сервісів, саме тому цей посібник використовує його.
|
||||
- **Додайте swap на пристроях із 2 GB.** Це вбереже від того, щоб випадковий сплеск (великий PDF, пакет, який ви забули обмежити) закінчився аварійним завершенням через брак пам'яті. Для SD-карт найдружніший варіант: zram.
|
||||
- Образ arm64 працює лише на CPU; CUDA на платах ARM немає.
|
||||
|
||||
## Параметри тонкого налаштування {#tuning-knobs}
|
||||
|
||||
Усі ліміти задаються змінними середовища й повністю задокументовані на сторінці [Конфігурація](/uk/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 мегапікселів коштує RAM незалежно від розміру файлу. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Тривалі перекодування монополізують слабкий CPU на хвилини, а то й години. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Жорстка стеля, щоб завдання, яке вийшло з-під контролю, зрештою звільнило машину. |
|
||||
|
||||
Ці ліміти визначають, що сервер приймає, тож встановлюйте їх відповідно до того, чим ви реально користуєтеся, а не якомога меншими. Якщо ви ніколи не працюєте з відео, ліміт `MAX_VIDEO_DURATION_S` нічого не коштує; якщо ви щодня скануєте документи, не обмежуйте `MAX_PDF_PAGES`.
|
||||
|
||||
## Що варто пропустити {#what-to-skip}
|
||||
|
||||
- **Важкі AI-бандли.** Масштабування, відновлення фото й видалення фону потребують GPU або швидкого багатоядерного CPU, а кожен бандл займає 4-5 GB диска. На слабкій машині просто не встановлюйте їх; інструменти, чий бандл відсутній, показують запит на встановлення замість запуску.
|
||||
- **Перекодування відео як регулярне навантаження.** Поодинокі перекодування цілком прийнятні (вони просто повільні); постійна черга перекодувань потребує ядер CPU, а не Pi.
|
||||
- **Загалом невикористовувані інструменти.** Адміністратор може вимкнути окремі інструменти в Settings, що прибирає їх з інтерфейсу та припиняє реєстрацію їхніх API-маршрутів. Саме по собі це не економить пам'ять, але не дає використовувати спільний невеликий екземпляр для того єдиного навантаження, якого обладнання не витримує.
|
||||
|
||||
Якщо згодом ви перенесете екземпляр на потужніше обладнання, приберіть ліміти (поверніть їх до `0`), і той самий том даних переїде разом з ним.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Посібник із посилення безпеки для SnapOtter. Безпека контейнерів, мережева ізоляція, секрети Docker, розгортання в Kubernetes та артефакти відповідності."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6b9158af7666
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Інфраструктура для обробки файлів з відкритим кодом і самостійним хостингом. Конвертуйте, стискайте, виконуйте OCR, транскрибуйте й запускайте локальний AI для зображень, відео, аудіо, PDF і документів через UI, REST API та конвеєри. Розмістіть самостійно однією командою Docker. Ваші файли ніколи не залишають ваш сервер."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c735504e7ddd
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Triển khai SnapOtter lên môi trường production với Docker. Yêu cầu phần cứng, cài đặt GPU, và cấu hình reverse proxy cho Nginx, Traefik, và Cloudflare."
|
||||
i18n_output_hash: 80f0326c4672
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
Các con số này đến từ các phép đo hiệu năng trên nhiều hệ thống khác nhau, từ một máy trạm amd64 hiện đại với NVIDIA RTX 4070 xuống đến một Raspberry Pi, chạy toàn bộ danh mục công cụ trên mỗi máy và quét qua các giới hạn tài nguyên Docker để tìm ngưỡng thực tế.
|
||||
|
||||
Chạy ở mức thấp nhất của các cấp này (một chiếc Pi, laptop cũ, VPS 2 GB)? [Thiết lập trên phần cứng hạn chế](/vi/guide/low-resource) biến những con số này thành hướng dẫn từng bước cụ thể với các giới hạn đã tinh chỉnh.
|
||||
|
||||
### Tham chiếu nhanh {#quick-reference}
|
||||
|
||||
| Cấp | Trường hợp sử dụng | CPU | RAM | GPU | Lưu trữ |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Cài đặt SnapOtter với Docker trong một lệnh. Bao gồm thiết lập Docker Compose, build từ mã nguồn, và tổng quan đầy đủ về tính năng."
|
||||
i18n_output_hash: 79eec34684bb
|
||||
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
|
||||
|
||||
Container duy nhất này chạy mọi thứ nó cần: khi không đặt `DATABASE_URL`, nó khởi động PostgreSQL và Redis của riêng mình trên giao diện loopback (chế độ nhúng) và giữ toàn bộ dữ liệu trong volume `SnapOtter-data`. Đây là cách nhanh nhất để thử SnapOtter hoặc tự lưu trữ trên một homelab. Với production, hãy chạy stack [Docker Compose](#docker-compose) bên dưới, vốn giữ PostgreSQL và Redis trong các container riêng của chúng. Chế độ nhúng chạy dưới danh nghĩa root (mặc định) và tự động tắt ngay khi bạn đặt `DATABASE_URL`.
|
||||
|
||||
Cài đặt trên Raspberry Pi, laptop cũ, hay một VPS nhỏ? Xem [Thiết lập trên phần cứng hạn chế](/vi/guide/low-resource) để có hướng dẫn từng bước đã tinh chỉnh và biết nên kỳ vọng gì từ phần cứng hạn chế.
|
||||
|
||||
Bạn sẽ được yêu cầu đổi mật khẩu ở lần đăng nhập đầu tiên.
|
||||
|
||||
::: tip Phân tích sản phẩm ẩn danh
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 807fa3238d8e
|
||||
---
|
||||
# Thiết lập trên phần cứng hạn chế {#low-resource-setups}
|
||||
|
||||
SnapOtter chạy tốt trên phần cứng nhỏ: một chiếc Raspberry Pi 4 hoặc 5, một laptop cũ, hoặc một VPS 2 GB. Trang này là hướng dẫn thực tế cho những máy đó: nên kỳ vọng điều gì, một thiết lập sao chép dán là chạy với các giới hạn hợp lý, và những tính năng nào nên bỏ qua. Dữ liệu benchmark đầy đủ đằng sau các con số này nằm trong [Yêu cầu phần cứng](/vi/guide/deployment#hardware-requirements).
|
||||
|
||||
Hai ràng buộc cứng cần biết trước:
|
||||
|
||||
- **Chỉ hỗ trợ 64-bit.** Image được build cho `linux/amd64` và `linux/arm64`. ARM 32-bit (`armv7`/`armhf`) không được hỗ trợ, nên các Pi thế hệ đầu và dòng Pi Zero bị loại.
|
||||
- **Ngưỡng bộ nhớ tối thiểu 2 GB.** 512 MB không thể khởi động stack, và 1 GB thất bại với các lô nhiều tập tin. 2 GB cùng 2 nhân là cấu hình nhỏ nhất chạy thoải mái.
|
||||
|
||||
## Những gì chạy tốt trên phần cứng nhỏ {#what-runs-well}
|
||||
|
||||
Mọi công cụ không dùng AI đều hoạt động trên máy 2 GB / 2 nhân: toàn bộ mục Hình ảnh và Tập tin, các công cụ PDF, và các thao tác video, âm thanh dạng stream-copy (cắt, tắt tiếng, đổi container). Phần lớn hoàn thành trong chưa đầy một giây.
|
||||
|
||||
Hai loại tải là ngoại lệ:
|
||||
|
||||
- **Mã hóa lại video** (chuyển đổi giữa các codec) phụ thuộc CPU. Một clip 1080p mất ~40 giây trên CPU desktop nhanh có thể mất vài phút trên CPU cỡ Pi. Các thao tác stream-copy vẫn tức thời.
|
||||
- **Các công cụ AI** cần RAM (khuyến nghị 4 GB) và ổ đĩa (các gói lớn nặng 4-5 GB mỗi gói), và những công cụ nặng (nâng cấp độ phân giải, phục hồi ảnh, loại bỏ nền) không thực tế trên CPU cỡ Pi. AI nhẹ như nhận diện khuôn mặt và OCR vẫn dùng được nếu bạn có đủ bộ nhớ.
|
||||
|
||||
Cả hai đều không được cài đặt hay chạy trừ khi bạn dùng đến: khi chưa cài gói AI nào, ứng dụng chỉ chiếm khoảng 360 MB lúc nhàn rỗi, và các gói AI chỉ được tải xuống khi quản trị viên bật chúng.
|
||||
|
||||
## Hướng dẫn từng bước cho Raspberry Pi / laptop cũ {#walkthrough}
|
||||
|
||||
Đây là bản cài đặt Compose tiêu chuẩn từ trang [Bắt đầu](/vi/guide/getting-started), cộng thêm giới hạn tài nguyên và các mức trần thận trọng. Nó giả định một hệ điều hành 64-bit (trên Pi: Raspberry Pi OS 64-bit hoặc 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
|
||||
```
|
||||
|
||||
Lưu ý cho các máy cỡ Pi:
|
||||
|
||||
- **Ưu tiên SSD USB thay vì thẻ SD** cho volume dữ liệu và Postgres. Không gian làm việc của các job tạo ra IO đĩa thực sự, còn thẻ SD vừa chậm vừa nhanh hỏng.
|
||||
- **Container đơn tất-cả-trong-một cũng hoạt động ở đây** (Postgres và Redis nhúng khi `DATABASE_URL`/`REDIS_URL` không được đặt), và trên máy chủ hạn chế bộ nhớ, bạn nên hạ mức trần của Redis nhúng bằng `REDIS_MAXMEMORY` (xem [Cấu hình](/vi/guide/configuration)). Compose cho bạn quyền kiểm soát chi tiết hơn theo từng dịch vụ, đó là lý do hướng dẫn này dùng nó.
|
||||
- **Thêm swap trên các thiết bị 2 GB.** Nó giúp những đợt tăng đột biến thi thoảng (một PDF lớn, một lô bạn quên giới hạn) không kết thúc bằng việc bị kill do hết bộ nhớ. zram là lựa chọn thân thiện với thẻ SD.
|
||||
- Image arm64 chỉ chạy CPU; không có CUDA trên các bo mạch ARM.
|
||||
|
||||
## Các nút tinh chỉnh {#tuning-knobs}
|
||||
|
||||
Tất cả các mức trần đều là biến môi trường, được ghi chép đầy đủ trong [Cấu hình](/vi/guide/configuration). `0` nghĩa là không giới hạn hoặc tự động. Những biến quan trọng trên phần cứng nhỏ:
|
||||
|
||||
| Biến | Gợi ý cho máy nhỏ | Nó bảo vệ điều gì |
|
||||
|---|---|---|
|
||||
| `CONCURRENT_JOBS` | `1` | Số job chạy song song. Chế độ tự phát hiện dùng số nhân CPU trừ một, ổn trên máy lớn nhưng quá tham trên máy 2 nhân khi thiếu bộ nhớ. |
|
||||
| `MAX_WORKER_THREADS` | `2` | Pool luồng xử lý hình ảnh. |
|
||||
| `MAX_BATCH_SIZE` | `5` | Xử lý lô là nơi các máy 1-2 GB cạn bộ nhớ đầu tiên. |
|
||||
| `MAX_UPLOAD_SIZE_MB` | `100` | Ngăn một tập tin khổng lồ chiếm trọn không gian làm việc. |
|
||||
| `MAX_MEGAPIXELS` | `50` | Giải mã một ảnh 100+ MP tốn RAM bất kể kích thước tập tin. |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | Các phiên chuyển mã dài độc chiếm CPU nhỏ trong nhiều phút đến nhiều giờ. |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | Trần cứng để một job mất kiểm soát cuối cùng cũng trả lại máy. |
|
||||
|
||||
Các mức trần này áp cho những gì máy chủ chấp nhận, vì vậy hãy đặt chúng theo những gì bạn thực sự dùng thay vì càng nhỏ càng tốt. Nếu bạn không bao giờ đụng đến video, một mức trần `MAX_VIDEO_DURATION_S` chẳng tốn gì; nếu bạn quét tài liệu hằng ngày, đừng giới hạn `MAX_PDF_PAGES`.
|
||||
|
||||
## Những gì nên bỏ qua {#what-to-skip}
|
||||
|
||||
- **Các gói AI nặng.** Nâng cấp độ phân giải, phục hồi ảnh, và loại bỏ nền cần GPU hoặc CPU nhiều nhân tốc độ cao, và mỗi gói tốn 4-5 GB ổ đĩa. Trên máy nhỏ, đơn giản là đừng cài chúng; các công cụ thiếu gói sẽ hiển thị lời nhắc cài đặt thay vì chạy.
|
||||
- **Mã hóa lại video như một tải thường xuyên.** Thi thoảng chuyển mã thì không sao (chỉ là chậm); một hàng đợi chuyển mã đều đặn cần nhiều nhân CPU, không phải một chiếc Pi.
|
||||
- **Nói chung là các công cụ không dùng đến.** Quản trị viên có thể tắt từng công cụ trong Settings, việc này gỡ chúng khỏi giao diện và ngừng đăng ký các route API của chúng. Bản thân việc đó không tiết kiệm bộ nhớ, nhưng nó giữ cho một instance nhỏ dùng chung không bị đem ra chạy đúng loại tải mà phần cứng không kham nổi.
|
||||
|
||||
Nếu sau này bạn chuyển instance sang phần cứng mạnh hơn, hãy gỡ các mức trần (đặt lại về `0`) và chính volume dữ liệu đó sẽ được mang theo.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "Hướng dẫn tăng cường bảo mật cho SnapOtter. Bảo mật container, cô lập mạng, Docker secret, triển khai Kubernetes, và các tài liệu tuân thủ."
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3eec3ab8360c
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "Hạ tầng xử lý tập tin mã nguồn mở, tự lưu trữ. Chuyển đổi, nén, OCR, phiên âm, và chạy AI cục bộ trên hình ảnh, video, âm thanh, PDF, và tài liệu, thông qua giao diện, REST API, và pipeline. Tự lưu trữ với một lệnh Docker. Các tập tin của bạn không bao giờ rời khỏi máy chủ của bạn."
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d0703d6e01d3
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "使用 Docker 将 SnapOtter 部署到生产环境。涵盖硬件要求、GPU 配置,以及 Nginx、Traefik 和 Cloudflare 的反向代理配置。"
|
||||
i18n_output_hash: 63267650bd5f
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
这些数字来自一系列系统上的基准测试,从配备 NVIDIA RTX 4070 的现代 amd64 工作站到 Raspberry Pi,在每台设备上运行整个工具目录,并扫描 Docker 资源限制以找出真实的下限。
|
||||
|
||||
运行在这些层级的低端(Pi、旧笔记本电脑、2 GB 的 VPS)?[低资源环境部署](/zh-CN/guide/low-resource)把这些数字变成一份带有调优上限的具体分步指南。
|
||||
|
||||
### 快速参考 {#quick-reference}
|
||||
|
||||
| 层级 | 使用场景 | CPU | 内存 | GPU | 存储 |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "用一条 Docker 命令安装 SnapOtter。包含 Docker Compose 配置、从源码构建,以及完整的功能概览。"
|
||||
i18n_output_hash: 3da9d8045239
|
||||
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(嵌入式模式),并将所有数据保存在 `SnapOtter-data` 卷中。这是试用 SnapOtter 或在家庭实验室中自托管的最快方式。生产环境请运行下面的 [Docker Compose](#docker-compose) 栈,它会将 PostgreSQL 和 Redis 分别放在各自的容器中。嵌入式模式以 root 运行(默认),一旦你设置了 `DATABASE_URL` 便会自动关闭。
|
||||
|
||||
要安装在 Raspberry Pi、旧笔记本电脑或小型 VPS 上?参阅[低资源环境部署](/zh-CN/guide/low-resource),那里有调优后的分步指南,以及对受限硬件该有的预期。
|
||||
|
||||
首次登录时会要求你更改密码。
|
||||
|
||||
::: tip 匿名产品分析
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
i18n_source_hash: f5de74aee1b9
|
||||
i18n_provenance: machine
|
||||
i18n_output_hash: 6c82cfe39a38
|
||||
---
|
||||
# 低资源环境部署 {#low-resource-setups}
|
||||
|
||||
SnapOtter 在小型硬件上运行良好:Raspberry Pi 4 或 5、一台旧笔记本电脑,或一台 2 GB 的 VPS。本页是针对这些机器的实用指南:该有什么预期、一套可直接复制粘贴且带有合理上限的配置,以及哪些功能应该跳过。这些数字背后的完整基准测试数据见[硬件要求](/zh-CN/guide/deployment#hardware-requirements)。
|
||||
|
||||
先说两条硬性限制:
|
||||
|
||||
- **仅支持 64 位。**镜像只为 `linux/amd64` 和 `linux/arm64` 构建。不支持 32 位 ARM(`armv7`/`armhf`),因此第一代 Pi 和 Pi Zero 系列不在此列。
|
||||
- **内存下限 2 GB。**512 MB 无法启动整个栈,1 GB 在多文件批量处理时会失败。2 GB 加 2 核是能舒适运行的最小配置。
|
||||
|
||||
## 小型硬件上哪些功能运行良好 {#what-runs-well}
|
||||
|
||||
所有非 AI 工具都能在 2 GB / 2 核的机器上运行:整个"图像"和"文件"板块、PDF 工具,以及流复制类的视频和音频操作(裁剪、静音、更换容器)。大多数在一秒内完成。
|
||||
|
||||
有两类负载是例外:
|
||||
|
||||
- **视频重编码**(在不同编解码器之间转换)受 CPU 限制。一段在高速桌面 CPU 上约 40 秒完成的 1080p 视频,在 Pi 级 CPU 上可能需要几分钟。流复制操作依然是即时的。
|
||||
- **AI 工具**需要内存(推荐 4 GB)和磁盘(较大的 AI 包每个 4-5 GB),其中重型工具(放大、照片修复、背景移除)在 Pi 级 CPU 上并不实用。人脸检测和 OCR 这类轻量 AI 在内存足够时可以使用。
|
||||
|
||||
这两类负载在你用到之前既不会安装也不会运行:未安装任何 AI 包时,应用空闲内存占用约 360 MB,而 AI 包只有在管理员启用时才会下载。
|
||||
|
||||
## Raspberry Pi / 旧笔记本电脑实操指南 {#walkthrough}
|
||||
|
||||
这就是[快速上手](/zh-CN/guide/getting-started)中的标准 Compose 安装,外加资源限制和保守的上限。它假设使用 64 位操作系统(在 Pi 上:Raspberry Pi OS 64 位或 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 级机器的注意事项:
|
||||
|
||||
- **数据卷和 Postgres 优先使用 USB SSD 而不是 SD 卡。**任务工作区会产生真实的磁盘 IO,而 SD 卡既慢又容易磨损。
|
||||
- **一体化单容器在这里同样适用**(未设置 `DATABASE_URL`/`REDIS_URL` 时使用嵌入式 Postgres 和 Redis),在内存受限的主机上应通过 `REDIS_MAXMEMORY` 调低其嵌入式 Redis 的内存上限(见[配置](/zh-CN/guide/configuration))。Compose 提供更细的按服务控制,这也是本指南采用它的原因。
|
||||
- **在 2 GB 设备上添加 swap。**它能避免偶发的内存尖峰(一个大 PDF、一个你忘了设上限的批量任务)以内存不足被杀进程收场。zram 是对 SD 卡更友好的选择。
|
||||
- arm64 镜像仅支持 CPU;ARM 板卡上没有 CUDA。
|
||||
|
||||
## 调优参数 {#tuning-knobs}
|
||||
|
||||
所有上限都是环境变量,完整文档见[配置](/zh-CN/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 的图像无论文件大小都要消耗内存。 |
|
||||
| `MAX_VIDEO_DURATION_S` | `300` | 长时间转码会把小 CPU 独占几分钟到几小时。 |
|
||||
| `PROCESSING_TIMEOUT_S` | `600` | 硬性上限,确保失控的任务最终会释放机器。 |
|
||||
|
||||
这些上限约束的是服务器接受什么,所以应按你的实际用途来设置,而不是越小越好。如果你从不处理视频,设一个 `MAX_VIDEO_DURATION_S` 上限毫无代价;如果你每天扫描文档,就不要限制 `MAX_PDF_PAGES`。
|
||||
|
||||
## 应该跳过什么 {#what-to-skip}
|
||||
|
||||
- **重型 AI 包。**放大、照片修复和背景移除需要 GPU 或高速多核 CPU,而且每个包要占 4-5 GB 磁盘。在小型机器上,干脆不要安装它们;缺少对应包的工具会显示安装提示,而不会运行。
|
||||
- **把视频重编码当作日常负载。**偶尔转码没有问题(只是慢);持续的转码队列需要的是 CPU 核心,而不是一台 Pi。
|
||||
- **总的来说,用不到的工具。**管理员可以在 Settings 中关闭单个工具,这会把它们从 UI 中移除并停止注册其 API 路由。这本身并不省内存,但能避免一台共享的小型实例被拿去跑硬件唯一扛不住的那种负载。
|
||||
|
||||
如果以后把实例迁移到更强的硬件上,去掉这些上限(改回 `0`),同一个数据卷可以直接沿用。
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "SnapOtter 的安全加固指南。涵盖容器安全、网络隔离、Docker 密钥、Kubernetes 部署和合规产物。"
|
||||
i18n_source_hash: 986f7658430c
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 05d4a7e4d409
|
||||
---
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "SnapOtter Docs"
|
||||
description: "开源、自托管的文件处理基础设施。跨图像、视频、音频、PDF 和文档进行转换、压缩、OCR、转录,并运行本地 AI,通过 UI、REST API 和流水线操作。用一条 Docker 命令即可自托管。你的文件永远不会离开你的服务器。"
|
||||
sidebar: false
|
||||
i18n_source_hash: 449a5b93eef1
|
||||
i18n_provenance: machine
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 30a35aeb4c65
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: "使用 Docker 將 SnapOtter 部署到正式環境。硬體需求、GPU 設定,以及 Nginx、Traefik 和 Cloudflare 的反向代理設定。"
|
||||
i18n_output_hash: d1dc1e293c3a
|
||||
i18n_source_hash: e0d8d5f6fc87
|
||||
i18n_source_hash: 98172965118b
|
||||
i18n_provenance: human
|
||||
---
|
||||
|
||||
@@ -218,6 +218,8 @@ docker logs SnapOtter 2>&1 | head -20
|
||||
|
||||
這些數字來自跨多種系統的效能測試,從搭載 NVIDIA RTX 4070 的現代 amd64 工作站,一直到 Raspberry Pi,在每台機器上執行整個工具目錄,並掃描 Docker 資源限制以找出實際的下限。
|
||||
|
||||
運行在這些等級的最低端(Pi、舊筆電、2 GB 的 VPS)?[低資源環境部署](/zh-TW/guide/low-resource)將這些數字化為一份帶有調校上限的具體逐步教學。
|
||||
|
||||
### 快速參考 {#quick-reference}
|
||||
|
||||
| 等級 | 使用情境 | CPU | RAM | GPU | 儲存空間 |
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user