--- title: Docker Compose로 1-클릭 --- Docker 컨테이너는 프로덕션 호스팅 또는 셀프 호스팅을 위한 것입니다. 기여를 원하시면 [로컬 설정](/l/ko/developers/contribute/capabilities/local-setup)을 확인하세요. ## 개요 이 가이드는 Docker Compose를 사용하여 Twenty 애플리케이션을 설치 및 구성하기 위한 단계별 지침을 제공합니다. 프로세스를 간단하게 만들고 설정을 망칠 수 있는 일반적인 함정을 피하는 것이 목적입니다. **중요:** 이 가이드에서 명시적으로 언급된 설정만 수정하세요. 다른 구성을 변경하면 문제가 발생할 수 있습니다. 고급 설정을 위해 [환경 변수 설정](/l/ko/developers/self-host/capabilities/setup) 문서를 참조하세요. 모든 환경 변수는 서버 및/또는 작업자 수준에서 docker-compose.yml 파일에 선언되어야 합니다. ## 시스템 요구 사항 * RAM: 환경에 최소 2GB의 RAM이 있는지 확인하십시오. 메모리가 충분하지 않으면 프로세스가 중단될 수 있습니다. * Docker 및 Docker Compose: 둘 다 설치되고 최신 상태인지 확인하세요. ## 옵션 1: 한 줄 스크립트 단일 명령으로 최신 안정 버전의 Twenty를 설치하십시오: ```bash bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh) ``` 특정 버전 또는 브랜치를 설치하려면: ```bash VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh) ``` * 원하는 버전 번호로 x.y.z를 대체하십시오. * 설치할 브랜치 이름으로 branch-name을 대체하십시오. ## 옵션 2: 수동 단계 수동 설정을 위해 다음 단계를 따릅니다. ### 단계 1: 환경 파일 설정 1. **.env 파일 생성** 예제 환경 파일을 워킹 디렉토리의 새 .env 파일로 복사합니다. ```bash curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example ``` 2. **비밀 토큰 생성** 고유한 랜덤 문자열을 생성하기 위해 다음 명령을 실행하세요: ```bash openssl rand -base64 32 ``` **중요:** 이 값을 비공개로 유지/공유하지 마십시오. 3. **`.env` 업데이트** 생성된 토큰으로 .env 파일의 플레이스홀더 값을 대체합니다. ```ini APP_SECRET=first_random_string ``` 4. **Postgres 비밀번호 설정** .env 파일에서 특수 문자가 없는 강력한 비밀번호로 `PG_DATABASE_PASSWORD` 값을 업데이트하십시오. ```ini PG_DATABASE_PASSWORD=my_strong_password ``` ### 단계 2: Docker Compose 파일 얻기 작업 디렉토리에 `docker-compose.yml` 파일을 다운로드합니다. ```bash curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml ``` ### 단계 3: 애플리케이션 시작 Docker 컨테이너 시작: ```bash docker compose up -d ``` ### 단계 4: 애플리케이션에 액세스 twentyCRM을 개인 컴퓨터에 호스팅하는 경우 브라우저를 열고 [http://localhost:3000](http://localhost:3000)으로 이동하세요. 서버에서 호스팅하는 경우 서버가 실행 중이며 모든 것이 문제없는지 확인하십시오. ```bash curl http://localhost:3000 ``` ## 구성 ### Twenty를 외부 액세스에 노출 기본적으로 Twenty는 `localhost`의 포트 `3000`에서 실행됩니다. 외부 도메인 또는 IP 주소로 액세스하려면 `.env` 파일의 `SERVER_URL`을 구성해야 합니다. #### `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 결정** * **리버스 프록시 없이(직접 접속):** 리버스 프록시 없이 애플리케이션에 직접 액세스: ```ini SERVER_URL=http://your-domain-or-ip:3000 ``` * **리버스 프록시 사용 (표준 포트):** SSL이 구성된 Nginx 또는 Traefik과 같은 리버스 프록시를 사용하는 경우: ```ini SERVER_URL=https://your-domain-or-ip ``` * **리버스 프록시 사용 (사용자 지정 포트):** 비표준 포트를 사용하는 경우: ```ini SERVER_URL=https://your-domain-or-ip:custom-port ``` 2. **`.env` 파일 업데이트** `.env` 파일을 열고 `SERVER_URL`을 업데이트하십시오: ```ini SERVER_URL=http(s)://your-domain-or-ip:your-port ``` **예시:** * SSL 없이 직접 접근: ```ini SERVER_URL=http://123.45.67.89:3000 ``` * SSL을 사용한 도메인 접근: ```ini SERVER_URL=https://mytwentyapp.com ``` 3. **애플리케이션 재시작** 변경 사항을 적용하기 위해 Docker 컨테이너를 재시작하십시오. ```bash docker compose down docker compose up -d ``` #### 고려 사항 * **리버스 프록시 구성:** 리버스 프록시가 올바른 내부 포트(`3000` 기본값)로 요청을 전달하도록 확인하십시오. SSL 종료와 필요한 헤더를 구성하십시오. * **방화벽 설정:** 외부 액세스를 허용하기 위해 방화벽에서 필요한 포트를 엽니다. * **일관성:** `SERVER_URL`은 사용자가 브라우저에서 애플리케이션에 액세스하는 방식과 일치해야 합니다. #### 영속성 * **데이터 볼륨:** Docker Compose 구성은 데이터베이스 및 서버 저장소의 데이터를 영구적으로 저장하기 위해 볼륨을 사용합니다. * **무상태 환경:** 무상태 환경(예: 특정 클라우드 서비스)에 배포하는 경우 데이터 지속성을 위해 외부 저장소를 구성합니다. ## 백업 및 복원 정기 백업은 CRM 데이터를 손실로부터 보호합니다. ### 데이터베이스 백업 생성 ```bash docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql ``` ### 일일 백업 자동화 crontab에 추가하세요 (`crontab -e`): ```bash 0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql ``` ### 백업에서 복원 1. 애플리케이션을 중지하세요: ```bash docker compose stop twenty-server twenty-front ``` 2. 데이터베이스를 복원하세요: ```bash docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql ``` 3. 서비스 재시작: ```bash docker compose up -d ``` ### 백업 모범 사례 * **복원을 정기적으로 테스트하세요** — 백업이 실제로 작동하는지 확인하세요 * **백업을 오프사이트에 보관하세요** — 클라우드 스토리지(S3, GCS 등)를 사용하세요 * **민감한 데이터를 암호화하세요** — 암호화를 통해 백업을 보호하세요 * **여러 사본을 유지하세요** — 일간, 주간, 월간 백업을 보관하세요 ## 문제 해결 문제가 발생하면 [문제 해결](/l/ko/developers/self-host/capabilities/troubleshooting)에서 해결책을 확인하십시오.