# 프로덕션

> 팀을 위한 PentAGI 운영 — 보안 강화, 격리, Podman 및 다중 인스턴스 구성.

## [체크리스트](https://pentagi.com/ko/docs/deployment/production/#checklist)

* 첫 번째 시작 전에 모든 자격 증명(`COOKIE_SIGNING_SALT` 포함)을 설정하세요 — [보안](https://pentagi.com/ko/docs/configuration/security/)을 참고하세요. 설치 프로그램은 salt와 서비스 비밀번호를 생성하지만, Langfuse 및 Grafana 관리자 비밀번호는 생성하지 않습니다: Langfuse가 처음 시작하기 전에 템플릿에서 `LANGFUSE_INIT_USER_PASSWORD`, `password`를 설정하고, Grafana가 처음 시작된 후 기본 `admin` / `admin`를 변경하세요. 실행 중인 설치 환경에서는 `.env`에서 변경하기 전에 데이터베이스 내부의 PostgreSQL 및 Neo4j 비밀번호를 먼저 변경하세요.
* 정식 인증서와 안정적인 `PUBLIC_URL`를 제공하세요.
* 리버스 프록시 뒤에서 `TRUSTED_PROXIES`을 프록시의 주소 또는 CIDR로 설정하십시오. 그렇지 않으면 모든 사용자가 프록시의 주소를 공유하게 되며, 5분 이내에 30번의 로그인 실패가 발생하면 모든 사용자가 15분 동안 잠금됩니다.
* [Tool](https://pentagi.com/ko/docs/glossary/#tool) 실행을 전용 [worker node](https://pentagi.com/ko/docs/deployment/worker-node/)로 이동하세요.
* 비용과 장애를 추적할 수 있도록 [관측 가능성](https://pentagi.com/ko/docs/configuration/observability/)을 활성화하세요.
* [Knowledge graph](https://pentagi.com/ko/docs/glossary/#knowledge-graph)와 Langfuse는 프라이빗 네트워크에 두세요.

## [Podman](https://pentagi.com/ko/docs/deployment/production/#podman)

PentAGI는 Docker뿐만 아니라 Podman에서도 실행됩니다. 루트리스 모드에서는 루트리스 컨테이너가 특권 포트에 바인딩할 수 없어 `scraper` 서비스에 추가 구성이 필요합니다. 리포지토리 README에 루트리스 및 루트풀 설정이 설명되어 있습니다.

## [여러 인스턴스 (`TENANT_ID`)](https://pentagi.com/ko/docs/deployment/production/#several-instances-tenant_id)

단일 설치에서는 `TENANT_ID`를 비워두고, 기존 설치에서도 비워두세요: 나중에 이 값을 설정하면 인스턴스가 기본 `admin@pentagi.com` 계정으로 시작하는 새로운 빈 스키마로 이동하며, 해당 [flow](https://pentagi.com/ko/docs/glossary/#flow), 사용자 및 설정은 더 이상 표시되지 않습니다. 하나의 PostgreSQL 서버, 하나의 [worker node](https://pentagi.com/ko/docs/glossary/#worker-node), 하나의 Neo4j 또는 하나의 Langfuse 등 외부 리소스를 여러 PentAGI 인스턴스가 공유할 때 추가하는 인스턴스에서 이 값을 설정하세요:

| 영역              | `TENANT_ID=acme`의 영향                               |
| --------------- | -------------------------------------------------- |
| PostgreSQL      | `public` 대신 `acme` 스키마 내에서 동작합니다                   |
| 워커 컨테이너         | 이름이 `acme-pentagi-terminal-<flow>`로 지정됩니다          |
| Knowledge graph | 그룹 ID가 `acme-flow-<id>`가 됩니다                       |
| 인증              | 쿠키 및 토큰 키에 [tenant](https://pentagi.com/ko/docs/glossary/#tenant)가 포함됩니다 |
| 텔레메트리           | Langfuse 및 OpenTelemetry 데이터에 tenant 태그가 부여됩니다     |

값은 `^[a-z][a-z0-9_]{0,31}$` 패턴과 일치해야 합니다. 호스트 리소스는 네임스페이스로 구분되지 않습니다. 한 서버의 인스턴스는 각각 고유한 `DATA_DIR`와 노출된 포트가 필요합니다. [sandbox](https://pentagi.com/ko/docs/glossary/#sandbox)가 동일한 Docker 호스트(한 서버 또는 공유 worker node)에서 실행되는 인스턴스는 자체 `DOCKER_PORTS_BASE`와 설정된 경우 자체 `DOCKER_WORK_DIR`이 필요합니다. 그렇지 않으면 sandbox가 동일한 포트를 점유하여 flow가 시작되지 않습니다. 각 기본값은 2000개 포트 범위(기본값 `28000`)를 시작하므로, 예를 들어 `28000` 및 `30000`을 사용하십시오.