본문으로 건너뛰기
PentAGI
배포

프로덕션

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

체크리스트

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

Podman

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

여러 인스턴스 (TENANT_ID)

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

영역TENANT_ID=acme의 영향
PostgreSQLpublic 대신 acme 스키마 내에서 동작합니다
워커 컨테이너이름이 acme-pentagi-terminal-<flow>로 지정됩니다
Knowledge graph그룹 ID가 acme-flow-<id>가 됩니다
인증쿠키 및 토큰 키에 tenant가 포함됩니다
텔레메트리Langfuse 및 OpenTelemetry 데이터에 tenant 태그가 부여됩니다

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

최종 업데이트: