Paperless-ngx pe VPS: OCR în română și backup

Instalează Paperless-ngx pe VPS cu OCR în română, acces prin SSH și versiuni fixate. Include Compose, backup și pași pentru restaurarea documentelor.

Adrian Silaghi

7 min read

0 views

Paperless-ngxOCRVPSDocker ComposeBackup
Paperless-ngx pe VPS: OCR în română și backup

Paperless-ngx poate transforma documentele scanate într-o bibliotecă în care cauți după text, inclusiv în limba română. Pe un VPS, configurația trebuie să instaleze modelul OCR ron, să îl selecteze pentru procesare și să protejeze atât aplicația, cât și copiile documentelor. Setarea limbii interfeței nu instalează singură modelul OCR.

Ghidul folosește Docker Compose, PostgreSQL și un broker compatibil Redis, cu acces inițial doar prin tunel SSH. Este potrivit pentru o instalare proprie, unde poți administra actualizările și backupul. OCR-ul facilitează căutarea; nu garantează corectitudinea sumelor, nu verifică semnături și nu conferă acreditare pentru arhivare electronică.

Pregătește un VPS separat și o instalare reproductibilă

Ai nevoie de un VPS Linux, Docker Engine cu pluginul Compose v2, acces SSH și Python 3.11 sau mai nou pentru scripturile auxiliare. Alege resursele după dimensiunea documentelor și loturile OCR, nu doar după numărul utilizatorilor. Începe cu un lot mic și urmărește memoria, CPU-ul și timpul de procesare înainte să mărești paralelismul.

Descarcă pachetul Compose, scripturile și instrucțiunile de recuperare. La 1 noiembrie 2026, exemplul fixează Paperless-ngx la versiunea 3.4.1. PostgreSQL și Valkey sunt fixate la digesturi de imagine, fără actualizare implicită la fiecare pornire.

Fixarea versiunilor face configurația predictibilă, dar nu înlocuiește actualizările de securitate. Verifică release notes înaintea instalării și înaintea fiecărei actualizări. Nu schimba automat versiunea majoră a PostgreSQL peste volumele existente și nu folosi actualizarea aplicației drept prim test al unui backup.

Copiază fișierele într-un director privat al operatorului, separat de alte aplicații. Pentru bazele Docker, vezi și ghidul Docker Compose pe VPS. Toate comenzile următoare se execută numai din directorul acestei instalări.

Pornește aplicația cu portul legat la loopback

Configurația completă se află în pachet. Fragmentul de mai jos arată setările importante pentru aplicație; nu este un înlocuitor pentru serviciile și volumele din fișierul Compose complet.

webserver:
  image: ghcr.io/paperless-ngx/paperless-ngx:3.4.1
  ports:
    - "127.0.0.1:8000:8000"
  environment:
    PAPERLESS_URL: http://localhost:8000
    PAPERLESS_TIME_ZONE: Europe/Bucharest
    PAPERLESS_OCR_LANGUAGES: ron
    PAPERLESS_OCR_LANGUAGE: ron+eng

Rulează inițializarea și verificarea configurației:

python3 init.py
docker compose config --quiet
docker compose pull
docker compose up -d
docker compose exec webserver createsuperuser

init.py generează o parolă de bază de date și o cheie pentru aplicație în .env, cu permisiuni restrictive. Nu le afișează și refuză suprascrierea fișierului. Creează și directoarele private consume și export. Păstrează o copie protejată a configurației și secretelor, separat de backupul documentelor.

Nu pune parola administratorului în Compose sau în istoricul shellului; comanda interactivă createsuperuser o cere separat. Nu publica ieșirea unui docker compose config obișnuit, care poate include secrete expandate. Varianta --quiet verifică fără să imprime configurația.

În exemplu, PostgreSQL și brokerul nu au porturi publicate. Volumul PostgreSQL 18 este montat la calea potrivită acelei versiuni, iar datele și media Paperless au volume distincte. Pentru o bibliotecă în creștere, monitorizează și spațiul consumat de originale, variantele procesate, miniaturi și exporturi.

Instalează româna și selecteaz-o pentru OCR

PAPERLESS_OCR_LANGUAGES cere containerului să instaleze limbi suplimentare. PAPERLESS_OCR_LANGUAGE selectează limbile folosite efectiv. Pentru română codul Tesseract este ron, conform listei oficiale de limbi.

Configurația instalează ron și procesează cu ron+eng, util pentru documente mixte. Dacă documentele sunt exclusiv în română, poți alege ron pentru procesare. Nu adăuga toate limbile disponibile: crești munca OCR fără să rezolvi calitatea unei scanări slabe.

docker compose exec -T webserver tesseract --list-langs

Lista trebuie să includă ron și eng. La prima pornire, instalarea limbii suplimentare are nevoie de acces la depozitele de pachete. Dacă lipsește, verifică logurile de pornire și rețeaua înainte să imporți un lot mare. Documentația avertizează că instalarea prin PAPERLESS_OCR_LANGUAGES nu se folosește în containere rootless; pentru acel model construiești separat o imagine care include deja limba.

Unele setări OCR salvate în interfață pot avea prioritate față de variabilele de mediu. Dacă rezultatul nu corespunde configurației, verifică ambele locuri. Schimbarea limbii nu demonstrează că documentele importate anterior au fost reprocesate; verifică un document nou și planifică separat orice reprocesare.

Pentru proba inițială, folosește un PDF fictiv cu „ș”, „ț”, „ă”, „â” și „î”, un tabel și câteva numere. După import, compară textul recunoscut cu pagina și caută termeni reprezentativi. Un document disponibil în interfață poate avea în continuare text incomplet sau erori. Păstrează originalul ca reper și corectează metadatele importante.

Păstrează documentele în spatele unui acces controlat

Din calculatorul tău, deschide un tunel către VPS:

ssh -N -L 8000:127.0.0.1:8000 operator@IP_VPS

Accesează apoi http://localhost:8000. Conexiunea către VPS este transportată prin SSH, iar portul aplicației rămâne accesibil doar local pe server. Folosește un cont SSH potrivit și verifică cheia gazdei. Nu expune portul pe toate interfețele doar ca să eviți tunelul.

Pentru acces recurent din afara echipei, configurează separat un domeniu și un reverse proxy HTTPS, apoi setează PAPERLESS_URL la adresa publică exactă și urmează cerințele oficiale pentru proxy. Pachetul nu instalează acel proxy. Testează autentificarea, redirecturile și încărcarea înainte să distribui adresa.

Creează conturi individuale cu drepturile necesare. Importă doar documentele pe care echipa are dreptul să le proceseze și limitează accesul la directoarele de consum și export. Un export poate conține documente și metadate sensibile chiar dacă interfața web cere autentificare.

Nu presupune că documentele sunt criptate pe disc pentru că folosești HTTPS. Protecția transportului, criptarea volumului și criptarea copiei independente sunt controale diferite. Pentru organizarea infrastructurii, consultă recomandările de securitate S3.

Creează o copie pe care o poți importa

Document exporter exportă documentele și metadatele pentru recuperare. Procedura din pachet cere mai întâi oprirea surselor de import, inclusiv preluarea e-mailurilor, și golirea cozii de procesare. Nu lansa exportul în mijlocul unui lot OCR și nu considera simpla copiere a volumului PostgreSQL activ un backup consistent.

./backup.sh --ingestion-paused-and-queue-empty

Scriptul oprește webserverul, rulează exporterul într-un container separat și încearcă repornirea la ieșire. Creează un director nou pentru snapshot și verifică existența manifestului înainte să raporteze succesul. Este o pauză planificată a aplicației; verifică serviciile după comandă, inclusiv dacă exportul eșuează.

Copia rămâne pe același VPS până când o transferi. Cripteaz-o și păstreaz-o într-o destinație independentă, cu cheile de recuperare separate. Ghidul rclone pentru S3 explică transferurile, iar ghidul de backup Linux ajută la organizarea copiilor.

Păstrează și configurația, versiunea imaginilor, secretele și eventualele fișiere încă neprocesate din consume. Exportul nu înlocuiește configurația proxyului sau cheia de decriptare a backupului. Documentația precizează că tokenurile API nu sunt incluse și trebuie regenerate după import.

Fă exercițiul pe altă instalare, la aceeași versiune

Folosește cel mai simplu scenariu sigur: un alt VPS, cu directoare și volume noi, la Paperless-ngx 3.4.1. Nu importa peste biblioteca existentă. Pe ținta de restaurare sari peste createsuperuser și peste orice import de documente: conturile și documentele trebuie să vină din export. Document importer este destinat unei instalări goale; aceeași versiune evită problemele de schemă dintre export și import.

În noua instalare, copiază snapshotul în directorul export și verifică-l înainte de import:

python3 verify-export.py export/NUME_SNAPSHOT
docker compose stop webserver
docker compose run --rm --no-deps webserver \
  document_importer /usr/src/paperless/export/NUME_SNAPSHOT
docker compose start webserver

Serviciile db și broker trebuie să fie pornite, iar baza și directoarele de destinație trebuie să fie goale conform procedurii. Scriptul verifică fișierele față de registrul de checksumuri; păstrează separat o copie protejată a acelui registru dacă vrei să detectezi și modificarea lui intenționată.

Compară numărul documentelor, câteva originale, textul OCR, etichetele și drepturile utilizatorilor. Verifică logarea, apoi reconfigurează tokenurile și sursele de import. Nu activa două instanțe care consumă simultan același inbox sau același folder al scannerului.

Exemplele auxiliare au verificări locale pentru generarea secretelor, configurația Compose și detectarea unei copii modificate. Instalarea completă Paperless, OCR-ul și exportul/importul real trebuie verificate pe infrastructura ta; aceste verificări nu sunt înlocuite de validarea sintactică a fișierului YAML.

Întrebări frecvente

De ce nu ajunge PAPERLESS_OCR_LANGUAGE=ron?

Pentru că limba trebuie să existe în container. Setarea OCR_LANGUAGES instalează modelul suplimentar, iar OCR_LANGUAGE îl selectează. Verifică rezultatul cu tesseract --list-langs.

Rezolvă OCR-ul o scanare neclară?

Nu întotdeauna. Pagini tăiate, rotite sau cu contrast slab cer corectarea sursei. Verifică manual câmpurile importante; un rezultat căutabil poate conține erori.

Este suficient un snapshot al VPS-ului?

Poate fi o parte a strategiei, dar ai nevoie de consistență, o copie independentă și o probă de restaurare. Exportul documentat ajută la recuperarea aplicației și verificarea documentelor.

Paperless înlocuiește arhivarea electronică acreditată?

Ghidul descrie managementul documentelor și o copie tehnică. Obligațiile juridice, păstrarea originalelor și cerințele de arhivare se stabilesc separat.

Pentru această instalare poți alege un VPS DanubeData și stocare S3 pentru copia independentă. Dimensionează după loturile OCR și stabilește recuperarea înainte să imporți întreaga bibliotecă.

Surse și configurație completă

Tutoriale conexe

Browse all articles
Tutorials9 min read

Laravel Redis to Valkey: A Safe Migration Guide

Migrate Laravel from Redis to Valkey with version checks, cache and session planning, queue draining, a tested local fixture and a clear recovery boundary.

Adrian Silaghi1 views
Tutorials9 min read

Serverless Webhooks with a Durable PostgreSQL Inbox

Build a serverless webhook receiver that authenticates requests, saves events before acknowledging them, and processes a durable PostgreSQL inbox safely.

Adrian Silaghi0 views

Ready to get started?

Deploy your infrastructure in minutes with DanubeData's managed services.