문서관리를 위한 셀프호스팅 서비스 Paperless-ngx 설치하기
안녕하세요. 달소입니다.
이번글에서는 많은분들께서 아실만한 서비스인 Paperless-ngx 를 한번 설치해보도록하겠습니다.
이름에서 보시다시피 종이문서를 대체하고자 하는 프로젝트로 기존에 paperless-ng 의 fork 판인데 아직 활발하게 개발중입니다.
여러가지 문서에 대한 OCR도 지원을해서 검색시에도 잘 나온다고하고 필요에 따라서 스캔본등의 정리에도 편할듯하네요.
Selfhosting을 하는 많은 사용자분들이 사용하는 프로젝트이기도하고 저도 추천해드리려면 좀 써봐야할것같아서 다시 구성해볼생각입니다.
Paperless-ngx
특징
- 태그, 통신원, 유형 등을 사용하여 스캔한 문서를 정리하고 색인화합니다 .
- 귀하의 데이터는 귀하의 서버 에 로컬로 저장되며 어떤 방식으로도 전송되거나 공유되지 않습니다.
- 이미지만 포함된 스캔된 문서에도 검색 및 선택이 가능한 텍스트를 추가하여 문서에 OCR을 수행합니다 .
- 오픈 소스 Tesseract 엔진을 활용하여 100개 이상의 언어를 인식합니다.
- 문서는 변경되지 않은 원본과 함께 장기 보관에 적합하도록 설계된 PDF/A 형식으로 저장됩니다.
- 기계 학습을 사용하여 자동으로 문서에 태그, 연락처 및 문서 유형을 추가합니다.
- PDF 문서, 이미지, 일반 텍스트 파일, Office 문서(Word, Excel, Powerpoint 및 LibreOffice와 동일한 형식) 1 등을 지원합니다.
- Paperless는 문서를 디스크에 그대로 저장합니다. 파일 이름과 폴더는 Paperless에서 관리하며, 형식은 다른 문서에 할당된 다른 구성으로 자유롭게 구성할 수 있습니다.
- 다음과 같은 특징을 갖춘 아름답고 현대적인 웹 애플리케이션 :
- 통계를 활용한 사용자 정의 대시보드.
- 태그, 통신원, 유형 등으로 필터링합니다.
- 태그, 통신원, 유형 등을 대량으로 편집합니다.
- 앱 전체에서 드래그 앤 드롭으로 문서를 업로드할 수 있습니다.
- 사용자 정의 가능한 뷰는 대시보드 및/또는 사이드바에 저장하여 표시할 수 있습니다.
- 다양한 데이터 유형의 사용자 정의 필드 지원
- 선택적으로 만료 시간을 지정할 수 있는 공유 가능한 공개 링크입니다.
- 전체 텍스트 검색을 통해 필요한 정보를 찾을 수 있습니다.
- 자동 완성 기능은 문서에서 관련 단어를 제안해 줍니다.
- 결과는 검색어와의 관련성에 따라 정렬됩니다.
- 강조 표시를 통해 문서의 어느 부분이 쿼리와 일치하는지 확인할 수 있습니다.
- 유사한 문서 검색("이와 유사한 문서")
- 이메일 처리 1 : 이메일 계정에서 문서 가져오기:
- 여러 계정을 구성하고 각 계정에 대한 규칙을 설정합니다.
- Paperless는 처리 후 메시지를 읽음으로 표시하고 삭제하는 등의 작업을 수행할 수 있습니다.
- '전역' 권한뿐만 아니라 문서나 개체별 권한도 지원하는 강력한 다중 사용자 권한 시스템이 내장되어 있습니다 .
- 더욱 많은 제어력을 제공하는 강력한 워크플로 시스템입니다.
- 다중 코어 시스템에 최적화 : Paperless-ngx는 여러 문서를 병렬로 사용합니다.
- 통합된 정신 건강 검사기는 문서 보관소가 양호한 상태인지 확인합니다.
종이 없는 세상, 역사
Paperless-ngx는 원래 Paperless & Paperless-ng 프로젝트 의 공식 후속 프로젝트이며 , 프로젝트를 발전시키고 지원하는 책임을 여러 사람으로 구성된 팀에 분산하도록 설계되었습니다. 저희와 함께 하세요!
이외에 기능들도 많은데 아래 링크를 참고해주시면됩니다.
구성환경
Ubuntu 24.04 LTS
Docker
Dockge
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
이렇게 넣고 배포를해주시면됩니다.
컨테이너가 생성되면 webserver에 bash로 접속합니다.
(dockge가 아니라면 docker ps로 컨테이너명을 확인하고 docker exec -it [컨테이너명] /bin/bash 로 접속하면됩니다.
그리고 관리자 계정을 생성합니다.
python3 manage.py createsuperuser
그리고 웹에서 ip:8000번 포트로 접속합니다.
계정은 위에서 셋팅한 계정으로 접속해주세요.
꽤 오래된 프로젝트인만큼 한국어도 100% 지원합니다
테스트를 위해 pdf 파일을 받아보겠습니다.
요즘주식도 보고있으니,, 토스증권의 2025년 전망 pdf를 ...
파일은 드래그앤 드롭만해도 됩니다.
보관뿐만아니라 편집이나 데이터 태그 권한관리도 모두 가능합니다.
OCR도 잘 작동하네요.
문서에 포함된 글자로도 검색도 잘됩니다.
잘만활용하면 좋겠네요 ㅎㅎ