문서관리를 위한 셀프호스팅 서비스 Paperless-ngx 설치하기

 

안녕하세요. 달소입니다.

 

이번글에서는 많은분들께서 아실만한 서비스인 Paperless-ngx 를 한번 설치해보도록하겠습니다.

이름에서 보시다시피 종이문서를 대체하고자 하는 프로젝트로 기존에 paperless-ng 의 fork 판인데 아직 활발하게 개발중입니다.

 

여러가지 문서에 대한 OCR도 지원을해서 검색시에도 잘 나온다고하고 필요에 따라서 스캔본등의 정리에도 편할듯하네요.

 Selfhosting을 하는 많은 사용자분들이 사용하는 프로젝트이기도하고 저도 추천해드리려면 좀 써봐야할것같아서 다시 구성해볼생각입니다.

 

Paperless-ngx

 

image.png.webp

 

특징

  •  태그, 통신원, 유형 등을 사용하여 스캔한 문서를 정리하고 색인화합니다 .
  • 귀하의 데이터는  귀하의 서버 에 로컬로 저장되며 어떤 방식으로도 전송되거나 공유되지 않습니다.
  • 이미지만 포함된 스캔된 문서에도 검색 및 선택이 가능한 텍스트를 추가하여 문서에 OCR을 수행합니다 .
  • 오픈 소스 Tesseract 엔진을 활용하여 100개 이상의 언어를 인식합니다.
  • 문서는 변경되지 않은 원본과 함께 장기 보관에 적합하도록 설계된 PDF/A 형식으로 저장됩니다.
  • 기계 학습을 사용하여 자동으로 문서에 태그, 연락처 및 문서 유형을 추가합니다.
  • PDF 문서, 이미지, 일반 텍스트 파일, Office 문서(Word, Excel, Powerpoint 및 LibreOffice와 동일한 형식) 1 등을 지원합니다.
  • Paperless는 문서를 디스크에 그대로 저장합니다. 파일 이름과 폴더는 Paperless에서 관리하며, 형식은 다른 문서에 할당된 다른 구성으로 자유롭게 구성할 수 있습니다.
  • 다음과 같은 특징을 갖춘 아름답고 현대적인 웹 애플리케이션 :
    • 통계를 활용한 사용자 정의 대시보드.
    • 태그, 통신원, 유형 등으로 필터링합니다.
    • 태그, 통신원, 유형 등을 대량으로 편집합니다.
    • 앱 전체에서 드래그 앤 드롭으로 문서를 업로드할 수 있습니다.
    • 사용자 정의 가능한 뷰는 대시보드 및/또는 사이드바에 저장하여 표시할 수 있습니다.
    • 다양한 데이터 유형의 사용자 정의 필드 지원
    • 선택적으로 만료 시간을 지정할 수 있는 공유 가능한 공개 링크입니다.
  • 전체 텍스트 검색을 통해 필요한 정보를 찾을 수 있습니다.
    • 자동 완성 기능은 문서에서 관련 단어를 제안해 줍니다.
    • 결과는 검색어와의 관련성에 따라 정렬됩니다.
    • 강조 표시를 통해 문서의 어느 부분이 쿼리와 일치하는지 확인할 수 있습니다.
    • 유사한 문서 검색("이와 유사한 문서")
  • 이메일 처리 1 : 이메일 계정에서 문서 가져오기:
    • 여러 계정을 구성하고 각 계정에 대한 규칙을 설정합니다.
    • Paperless는 처리 후 메시지를 읽음으로 표시하고 삭제하는 등의 작업을 수행할 수 있습니다.
  • '전역' 권한뿐만 아니라 문서나 개체별 권한도 지원하는 강력한 다중 사용자 권한 시스템이 내장되어 있습니다 .
  • 더욱 많은 제어력을 제공하는 강력한 워크플로 시스템입니다.
  •  다중 코어 시스템에 최적화 : Paperless-ngx는 여러 문서를 병렬로 사용합니다.
  • 통합된 정신 건강 검사기는 문서 보관소가 양호한 상태인지 확인합니다.

종이 없는 세상, 역사

 Paperless-ngx는 원래 Paperless & Paperless-ng 프로젝트 의 공식 후속 프로젝트이며 , 프로젝트를 발전시키고 지원하는 책임을 여러 사람으로 구성된 팀에 분산하도록 설계되었습니다. 저희와 함께 하세요!

 

image.png.webp

 

이외에 기능들도 많은데 아래 링크를 참고해주시면됩니다.

Paperless-ngx Paperless-ngx Home Initializing search paperless-ngx/paperless-ngx Home Setup Basic Usage Configuration Administration Advanced Topics REST API Development FAQs Troubleshooting Changelog Paperless-ngx paperless-ngx/paperless-ngx Home Home Table of contents Features Paperless, a history Screenshots Support Feature Requests Bugs Contributing Translation Scanners & Software Setup Basic Usage Configuration Administration Advanced Topics REST API Development FAQs Troubleshooting Changelog Home from DOCS.PAPERLESS-NGX.COM

 

GitHub - paperless-ngx/paperless-ngx: A community-supported supercharged version of paperless: scan, index and archive all your physical documents A community-supported supercharged version of paperless: scan, index and archive all your physical documents - paperless-ngx/paperless-ngx from GITHUB

 

구성환경

Ubuntu 24.04 LTS

Docker

Dockge

오픈소스 Docker-compose 관리 툴 dockge 설치해보기 안녕하세요~ 달소입니다. 앞서 소개해드린 dockge 도크를 직접 Linux에 설치하고 사용해보겠습니다! dockge를 통해 쉽게 compose Dockge - 멋지고 사용하기 쉬운 자체 호스팅 도커 compose.y...[서버 구축(Self-Hoste... by 달소 from 서버포럼

 

Paperless-ngx 설치하기

Paperless도 여러가지 DB를 지원하는데 대표적으로 MariaDB와 postgres를 모두 지원합니다.

공식적으로 권장하는것은 postgres이기때문에 해당버전으로 설치하겠습니다.

 

dockge에 들어가서 Stack을 추가합니다.

 

services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - redisdata:/data

  db:
    image: docker.io/library/postgres:16
    restart: unless-stopped
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8000:8000"
    volumes:
      - data:/usr/src/paperless/data
      - media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    env_file: .env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db

volumes:
  data:
  media:
  pgdata:
  redisdata:

 

환경변수로는 아래내용을 참고하시어 수정해주시면됩니다.

 

# The UID and GID of the user used to run paperless in the container. Set this
# to your UID and GID on the host so that you have write access to the
# consumption directory.
#USERMAP_UID=1000
#USERMAP_GID=1000

# Additional languages to install for text recognition, separated by a
# whitespace. Note that this is
# different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines the
# language used for OCR.
# The container installs English, German, Italian, Spanish and French by
# default.
# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names&suite=buster
# for available languages.
PAPERLESS_OCR_LANGUAGES=tur ces

###############################################################################
# Paperless-specific settings                                                 #
###############################################################################

# All settings defined in the paperless.conf.example can be used here. The
# Docker setup does not use the configuration file.
# A few commonly adjusted settings are provided below.

# This is required if you will be exposing Paperless-ngx on a public domain
# (if doing so please consider security measures such as reverse proxy)
PAPERLESS_URL=https://paperless.example.com

# Adjust this key if you plan to make paperless available publicly. It should
# be a very long sequence of random characters. You don't need to remember it.
PAPERLESS_SECRET_KEY=change-me

# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC.
PAPERLESS_TIME_ZONE=Asia/Seoul

# The default language to use for OCR. Set this to the language most of your
# documents are written in.
PAPERLESS_OCR_LANGUAGE=eng

# Set if accessing paperless via a domain subpath e.g. https://domain.com/PATHPREFIX and using a reverse-proxy like traefik or nginx
PAPERLESS_FORCE_SCRIPT_NAME=/PATHPREFIX
PAPERLESS_STATIC_URL=/PATHPREFIX/static/ # trailing slash required

 

이렇게 넣고 배포를해주시면됩니다.

 

image.png.webp

 

컨테이너가 생성되면 webserver에 bash로 접속합니다.

(dockge가 아니라면 docker ps로 컨테이너명을 확인하고 docker exec -it [컨테이너명] /bin/bash 로 접속하면됩니다.

 

image.png.webp

 

그리고 관리자 계정을 생성합니다.

 

python3 manage.py createsuperuser

 

image.png.webp

 

그리고 웹에서 ip:8000번 포트로 접속합니다.

계정은 위에서 셋팅한 계정으로 접속해주세요.

image.png.webp

 

꽤 오래된 프로젝트인만큼 한국어도 100% 지원합니다

 

image.png.webp

 

테스트를 위해 pdf 파일을 받아보겠습니다.

 

요즘주식도 보고있으니,, 토스증권의 2025년 전망 pdf를 ...

파일은 드래그앤 드롭만해도 됩니다.

 

보관뿐만아니라 편집이나 데이터 태그 권한관리도 모두 가능합니다.

 

image.png.webp

 

image.png.webp

 

OCR도 잘 작동하네요.

 

image.png.webp

 

문서에 포함된 글자로도 검색도 잘됩니다.

 

image.png.webp

 

잘만활용하면 좋겠네요 ㅎㅎ