Skip to main content
Docker 컨테이너는 프로덕션 호스팅 또는 셀프 호스팅용입니다. 기여하려면 로컬 설정을 확인하세요.

개요

이 가이드는 Docker Compose를 사용하여 Twenty 애플리케이션을 설치 및 구성하기 위한 단계별 지침을 제공합니다. 프로세스를 간단하게 만들고 설정을 망칠 수 있는 일반적인 함정을 피하는 것이 목적입니다. 중요: 이 가이드에서 명시적으로 언급된 설정만 수정하세요. 다른 구성을 변경하면 문제가 발생할 수 있습니다. 고급 설정을 위해 환경 변수 설정 문서를 참조하세요. 모든 환경 변수는 변수에 따라 서버 및/또는 작업자 수준에서 docker-compose.yml 파일에 선언되어야 합니다.

시스템 요구 사항

  • RAM: 환경에 최소 2GB의 RAM이 있는지 확인하십시오. 메모리가 충분하지 않으면 프로세스가 중단될 수 있습니다.
  • Docker 및 Docker Compose: 둘 다 설치되고 최신 상태인지 확인하세요.

옵션 1: 한 줄 스크립트

단일 명령으로 최신 안정 버전의 Twenty를 설치하십시오:
특정 버전 또는 브랜치를 설치하려면:
  • 원하는 버전 번호로 x.y.z를 대체하십시오.
  • 설치할 브랜치 이름으로 branch-name을 대체하십시오.

옵션 2: 수동 단계

수동 설정을 위해 다음 단계를 따릅니다.

단계 1: 환경 파일 설정

  1. .env 파일 생성 예제 환경 파일을 워킹 디렉토리의 새 .env 파일로 복사합니다.
  2. 암호화 키 생성하기 고유한 랜덤 문자열을 생성하기 위해 다음 명령을 실행하세요:
    중요: 이 값을 비공개로 유지/공유하지 마십시오. ENCRYPTION_KEY를 잃어버리면 데이터베이스에 저장된 모든 비밀(예: OAuth 토큰, 애플리케이션 변수, TOTP 비밀 등)에 대한 액세스를 잃게 됩니다.
  3. .env 업데이트 생성된 토큰으로 .env 파일의 플레이스홀더 값을 대체합니다.
    중단 없이 키를 회전하는 방법은 키 회전 가이드를 참조하세요.
  4. Postgres 비밀번호 설정 .env 파일에서 특수 문자가 없는 강력한 비밀번호로 PG_DATABASE_PASSWORD 값을 업데이트하십시오.

단계 2: Docker Compose 파일 얻기

작업 디렉토리에 docker-compose.yml 파일을 다운로드합니다.

단계 3: 애플리케이션 시작

Docker 컨테이너 시작:

단계 4: 애플리케이션에 액세스

twentyCRM을 개인 컴퓨터에 호스팅하는 경우 브라우저를 열고 http://localhost:3000으로 이동하세요. 서버에서 호스팅하는 경우 서버가 실행 중이며 모든 것이 문제없는지 확인하십시오.

구성

Twenty를 외부 액세스에 노출

기본적으로 Twenty는 localhost의 포트 3000에서 실행됩니다. UI는 브라우저 자체의 origin에서 API를 확인하므로, 컨테이너에 도달할 수 있는 어떤 호스트명에서도 로드됩니다. 하지만 여전히 SERVER_URL은 공개용 URL로 설정해야 합니다. 서버는 이를 생성된 링크(이메일, OAuth 콜백)와 HTTPS 감지(보안 쿠키용)에 사용합니다.

SERVER_URL 이해하기

  • 프로토콜: 구성에 따라 http 또는 https를 사용하십시오.
    • SSL을 설정하지 않은 경우 http를 사용합니다.
    • SSL이 구성되어 있으면 https를 사용하십시오.
  • 도메인/IP: 애플리케이션을 액세스할 수 있는 도메인 이름 또는 IP 주소입니다.
  • 포트: 기본 포트(http의 경우 80, https의 경우 443)를 사용하지 않는 경우 포트 번호를 포함하십시오.

SSL 요구 사항

SSL(HTTPS)는 일부 브라우저 기능이 제대로 작동하기 위해 필수입니다. 이러한 기능은 로컬 개발 중에는 작동할 수 있지만 (브라우저는 localhost를 다르게 처리합니다), 일반 도메인에 Twenty를 호스팅할 때는 적절한 SSL 설정이 필요합니다. 예를 들어, 클립보드 API는 안전한 컨텍스트가 필요할 수 있습니다. 응용 프로그램 내 복사 버튼과 같은 일부 기능은 HTTPS가 활성화되지 않으면 작동하지 않을 수 있습니다. 최적의 보안 및 기능을 위해 SSL 종료와 함께 Reverse Proxy 뒤에 Twenty를 설정하는 것을 강력히 권장합니다.

SERVER_URL 설정

  1. 접속 URL 결정
    • 리버스 프록시 없이(직접 접속): 리버스 프록시 없이 애플리케이션에 직접 액세스:
    • 리버스 프록시 사용 (표준 포트): SSL이 구성된 Nginx 또는 Traefik과 같은 리버스 프록시를 사용하는 경우:
    • 리버스 프록시 사용 (사용자 지정 포트): 비표준 포트를 사용하는 경우:
  2. .env 파일 업데이트 .env 파일을 열고 SERVER_URL을 업데이트하십시오:
    예시:
    • SSL 없이 직접 접근:
    • SSL을 사용한 도메인 접근:
  3. 애플리케이션 재시작 변경 사항을 적용하기 위해 Docker 컨테이너를 재시작하십시오.

고려 사항

  • 리버스 프록시 구성: 리버스 프록시가 올바른 내부 포트(3000 기본값)로 요청을 전달하도록 확인하십시오. SSL 종료와 필요한 헤더를 구성하십시오.
  • 방화벽 설정: 외부 액세스를 허용하기 위해 방화벽에서 필요한 포트를 엽니다.
  • 일관성: SERVER_URL은 사용자가 브라우저에서 애플리케이션에 액세스하는 방식과 일치해야 합니다.

영속성

  • 데이터 볼륨: Docker Compose 구성은 데이터베이스 및 서버 저장소의 데이터를 영구적으로 저장하기 위해 볼륨을 사용합니다.
  • 무상태 환경: 무상태 환경(예: 특정 클라우드 서비스)에 배포하는 경우 데이터 지속성을 위해 외부 저장소를 구성합니다.

백업 및 복원

정기 백업은 CRM 데이터를 손실로부터 보호합니다.

데이터베이스 백업 생성

일일 백업 자동화

crontab에 추가하세요 (crontab -e):

백업에서 복원

  1. 애플리케이션을 중지하세요:
  1. 데이터베이스를 복원하세요:
  1. 서비스 재시작:

백업 모범 사례

  • 복원을 정기적으로 테스트하세요 — 백업이 실제로 작동하는지 확인하세요
  • 백업을 오프사이트에 보관하세요 — 클라우드 스토리지(S3, GCS 등)를 사용하세요
  • 민감한 데이터를 암호화하세요 — 암호화를 통해 백업을 보호하세요
  • 여러 사본을 유지하세요 — 일간, 주간, 월간 백업을 보관하세요

문제 해결

문제가 발생하면 문제 해결에서 해결책을 확인하십시오.

관리형 호스팅

직접 Twenty를 실행하고 유지 관리하고 싶지 않으신가요? 인스턴스의 구축, 호스팅, 관리를 처음부터 끝까지 맡길 공인 Twenty 호스팅 파트너를 찾아보세요. (또는 저희 팀에 문의하세요: contact@twenty.com.)