EC2 인스턴스를 시작할 때 aws-ec2.shUser Data 스크립트로 사용합니다. 스크립트는 첫 번째 부팅 시 자동으로 실행됩니다.

스크립트 다운로드: aws-ec2.sh


1단계 — 구성 입력

스크립트를 열고 상단의 CONFIGURATION 블록을 편집합니다:

  # --- 필수 ---
PROJECT_ID="rtsurvey"
ADMIN_PASSWORD="admin"                       # 첫 로그인 후 변경

# --- 도메인 + SSL ---
DOMAIN="myapp.example.com"
LETSENCRYPT_EMAIL="admin@example.com"

# --- 내장 Keycloak ---
EMBED_KEYCLOAK="true"
KEYCLOAK_ADMIN_PASSWORD="${ADMIN_PASSWORD}"  # ADMIN_PASSWORD로 기본 설정
  
필드필수설명
PROJECT_ID데이터베이스 이름 및 Keycloak 클라이언트 ID로 사용됩니다. 소문자, 공백 없음.
ADMIN_PASSWORD아니오앱 관리자 비밀번호 및 Keycloak 관리자 비밀번호. 기본값은 admin첫 로그인 후 변경.
DOMAIN아니오HTTPS용 도메인. HTTP 전용 모드는 공백으로 두세요.
LETSENCRYPT_EMAIL예 (DOMAIN 설정 시)Let’s Encrypt 알림용 이메일.
EMBED_KEYCLOAK아니오내장 Keycloak 배포는 true (4 GB RAM 필요).

보안: 모든 비밀번호는 기본적으로 admin입니다. 첫 번째 로그인 후 즉시 변경하세요.


2단계 — EC2 인스턴스 시작

AWS EC2 콘솔에서:

  1. 인스턴스 시작 클릭
  2. AMI: Ubuntu Server 22.04 LTS (64비트 x86)
  3. 인스턴스 유형: t3.medium (4 GB RAM) 이상
  4. 키 페어: SSH 접근을 위한 키 페어 선택 또는 생성
  5. 네트워크 설정: 보안 그룹 생성 또는 선택 (아래 참조)
  6. 고급 세부 정보User data → 전체 스크립트 내용 붙여넣기
  7. 인스턴스 시작 클릭

3단계 — 보안 그룹 구성

인스턴스의 보안 그룹에서 다음 포트를 엽니다:

포트프로토콜소스목적
22TCP사용자 IPSSH 접근
80TCP0.0.0.0/0HTTP (Nginx에서 HTTPS로 리디렉션)
443TCP0.0.0.0/0HTTPS
3838TCP0.0.0.0/0Shiny 직접 접근

포트 3306 (MySQL)을 열지 마세요 — 절대 공개적으로 접근 가능해서는 안 됩니다.


4단계 — DNS 레코드 추가

인스턴스가 부팅되는 동안 DNS 공급자에 A 레코드를 추가합니다:

  Type  : A
Name  : myapp
Value : <instance-public-ip>
TTL   : 300
  

5단계 — 진행 상황 모니터링

  ssh ubuntu@<instance-ip>
tail -f /var/log/rtcloud-setup.log
  

6단계 — 앱 접속

설정이 완료되면 로그에 앱 URL 및 자격 증명이 포함된 요약이 표시됩니다. 사용자명 admin, 비밀번호 admin으로 로그인한 후 즉시 비밀번호를 변경하세요.


배포 후

비밀번호 변경

  nano /opt/rtcloud/.env
docker compose -f /opt/rtcloud/docker-compose.production.yml up -d --force-recreate rtcloud
  

모든 컨테이너 보기

  docker compose -f /opt/rtcloud/docker-compose.production.yml ps
  

Elastic IP 할당 (선택 사항)

인스턴스를 중지했다가 시작하면 공개 IP가 변경됩니다. 안정적인 IP를 유지하려면 Elastic IP를 할당하고 EC2 콘솔에서 인스턴스에 연결하세요.

이 페이지가 도움이 되었나요?