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:
SnapOtter
2026-07-17 00:40:48 +08:00
committed by GitHub
parent 1f4878ac4d
commit fe85dd2b98
104 changed files with 2323 additions and 80 deletions
+3 -1
View File
@@ -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 |
+3 -1
View File
@@ -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
+103
View File
@@ -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 -1
View File
@@ -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
---