启动 EC2 实例时,将 aws-ec2.sh 用作用户数据脚本。脚本在首次启动时自动运行。

下载脚本: aws-ec2.sh


第一步 — 填写配置

打开脚本并编辑顶部的 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——首次登录后更改
DOMAINHTTPS 使用的域名。留空以仅使用 HTTP。
LETSENCRYPT_EMAIL是(如设置了 DOMAIN)Let’s Encrypt 通知邮箱。
EMBED_KEYCLOAKtrue 以部署内嵌 Keycloak(需要 4 GB RAM)。

安全提示: 所有密码默认为 admin。首次登录后立即更改它们。


第二步 — 启动 EC2 实例

AWS EC2 控制台

  1. 点击启动实例
  2. AMI: Ubuntu Server 22.04 LTS(64 位 x86)
  3. 实例类型: t3.medium(4 GB RAM)或更大
  4. 密钥对: 选择或创建一个用于 SSH 访问
  5. 网络设置: 创建或选择安全组(见下文)
  6. 高级详情用户数据 → 粘贴完整脚本内容
  7. 点击启动实例

第三步 — 配置安全组

在实例的安全组中开放以下端口:

端口协议来源用途
22TCP您的 IPSSH 访问
80TCP0.0.0.0/0HTTP(由 Nginx 重定向到 HTTPS)
443TCP0.0.0.0/0HTTPS
3838TCP0.0.0.0/0Shiny 直接访问

不要开放端口 3306(MySQL)——它不应该公开访问。


第四步 — 添加 DNS 记录

实例启动时,在您的 DNS 提供商中添加 A 记录

  类型  : A
名称  : myapp
值    : <instance-public-ip>
TTL   : 300
  

第五步 — 监控进度

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

第六步 — 访问应用

设置完成时,日志会显示包含应用 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
  

分配弹性 IP(可选)

如果您停止并启动实例,公共 IP 会改变。为保持稳定的 IP,请在 EC2 控制台中分配弹性 IP 并将其与实例关联。

此页面有帮助吗?