DigitalOcean използва скриптове за потребителски данни (User Data), които се изпълняват автоматично при първото стартиране. Попълвате конфигурационните променливи в горната част на скрипта, след което поставяте целия скрипт при създаване на Droplet.

За разлика от Linode StackScripts, DigitalOcean няма UI с формуляр — трябва да редактирате скрипта директно преди поставяне.

Изтеглете скрипта: digitalocean-droplet-keycloak-embed.sh


Вграден Keycloak (Препоръчително)

Използвайте digitalocean-droplet-keycloak-embed.sh за най-простата настройка с вграден SSO.

Стъпка 1 — Попълнете конфигурацията

Отворете скрипта и редактирайте блока CONFIGURATION в горната му част:

  # --- Задължителни ---
PROJECT_ID="rtsurvey"                  # Уникален идентификатор на проекта (без интервали)
ADMIN_PASSWORD="admin"                 # Парола за администратора на приложението и Keycloak — сменете след първото влизане

# --- Домейн + SSL ---
DOMAIN="myapp.example.com"            # Вашият домейн — DNS A записът трябва да сочи тук
PROJECT_URL=""                         # Оставете празно, освен ако не сте зад Cloudflare/прокси
LETSENCRYPT_EMAIL="admin@example.com" # Имейл за известия от Let's Encrypt

# --- Незадължителни ---
STATA_ENABLED="false"
TZ="Asia/Ho_Chi_Minh"
  
ПолеЗадължителноОписание
PROJECT_IDДаИзползва се като наименование на базата данни и Keycloak client ID. Малки букви, без интервали.
ADMIN_PASSWORDНеПарола за влизане на администратора на приложението и конзолата на Keycloak администратора. По подразбиране е adminсменете след първото влизане.
DOMAINДаВашето домейн наименование. DNS A записът трябва да сочи към IP адреса на Droplet.
LETSENCRYPT_EMAILДаИмейл адрес за известия за сертификат от Let’s Encrypt.
PROJECT_URLНеЗаместете публичния URL. Оставете празно за използване на DOMAIN. Полезно зад Cloudflare.

Сигурност: Всички пароли по подразбиране са admin. Сменете ги незабавно след първото влизане.

Стъпка 2 — Създайте Droplet

В панела за управление на DigitalOcean:

  1. Кликнете СъздаванеDroplets
  2. Изберете Ubuntu 22.04 LTS като образ
  3. Изберете Basic, 4 GB RAM / 2 vCPU или по-голям
  4. Превъртете до Разширени опции → отметнете Добавяне на скриптове за инициализация
  5. Поставете пълното съдържание на скрипта в текстовото поле
  6. Кликнете Създаване на Droplet

Стъпка 3 — Добавете DNS запис

Докато Droplet стартира, добавете A запис при вашия DNS доставчик:

  Type  : A
Name  : myapp          (или @ за корен домейн)
Value : <droplet-ip>
TTL   : 300
  

Стъпка 4 — Наблюдавайте напредъка

SSH влезте в Droplet и наблюдавайте дневника:

  ssh root@<droplet-ip>
tail -f /var/log/rtcloud-setup.log
  

Скриптът отпечатва IP адреса на сървъра ви в началото — добавете DNS записа веднага щом го видите.

Стъпка 5 — Достъп до приложението

Когато настройката завърши, дневникът показва обобщение:

  ============================================================
 rtCloud deployment complete! (Embedded Keycloak)
============================================================
 App URL   : https://myapp.example.com
 Admin     : admin / admin
 Keycloak  : https://myapp.example.com/auth/admin

 !! SECURITY: All passwords default to 'admin'.
    Change them immediately after first login.
============================================================
  

Отворете https://myapp.example.com в браузъра и влезте с потребителско име admin и парола admin.

Сменете паролата незабавно след влизане чрез Настройки в менюто горе вдясно.


След разгръщането

Промяна на парола

SSH влезте в Droplet, редактирайте .env и рестартирайте засегнатия контейнер:

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

Актуализиране на домейна

Ако присвоите различен домейн след разгръщането, актуализирайте PROJECT_URL в .env:

  nano /opt/rtcloud/.env   # актуализирайте PROJECT_URL=
docker compose -f /opt/rtcloud/docker-compose.production.yml up -d --force-recreate rtcloud
  

Преглед на всички контейнери

  docker compose -f /opt/rtcloud/docker-compose.production.yml ps
  
Беше ли полезна тази страница?