diff --git a/.env.example b/.env.example index cae1c6c..5a7acc6 100644 --- a/.env.example +++ b/.env.example @@ -78,7 +78,6 @@ BOOTSTRAP_SECRET_KEY= # Organization initialization ORG_NAME= -ORG_SLUG= OWNER_EMAIL= OWNER_PASSWORD= diff --git a/README.md b/README.md index d2092fd..454aa71 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,6 @@ If you need to customize any values after running the script, edit `.env` direct ```bash # Organization (customize as needed) ORG_NAME="Your Organization" -ORG_SLUG="your-org" OWNER_EMAIL="your-email@example.com" OWNER_PASSWORD="" # ... other OAuth configuration @@ -69,7 +68,7 @@ chmod +x entrypoint.sh Once ready, access: - **Frontend Admin**: http://localhost:3001 -- **Frontend Dashboard**: http://your-org.localhost:3000 +- **Frontend Dashboard**: http://spacedf.localhost:3000 - **API Docs**: http://localhost:8000/docs - **EMQX Dashboard**: http://localhost:18083 - **RabbitMQ**: http://localhost:15672 @@ -121,10 +120,6 @@ docker-compose -f docker-compose.yml -p spacedf-core down -v - Default: `Default Organization` - Example: `My Company Inc.` -**ORG_SLUG** - URL-safe identifier for your organization. Used in hostnames, aliases, and internal references. Should be lowercase with hyphens only. -- Default: `default-org` -- Example: `my-company` - **OWNER_EMAIL** - Email address of the initial organization owner. This account is created during bootstrap. - Example: `admin@example.com` @@ -133,8 +128,6 @@ docker-compose -f docker-compose.yml -p spacedf-core down -v #### HAProxy Configuration -**ORG_SLUG** - Used to create dynamic network aliases like `${ORG_SLUG}.haproxy` for internal service communication. - #### Database Configuration **AUTH_POSTGRES_PASSWORD** - Password for Auth Service PostgreSQL database. diff --git a/bootstrap-service b/bootstrap-service index 5d1e554..87ad9ea 160000 --- a/bootstrap-service +++ b/bootstrap-service @@ -1 +1 @@ -Subproject commit 5d1e5549da2e7f63211b8563c7dc496aea4e332c +Subproject commit 87ad9ea703ad5230c87ce54e4a4cfce798fcfb95 diff --git a/docker-compose.yml b/docker-compose.yml index 871fc11..37e89bb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -118,7 +118,6 @@ services: EMQX_USERNAME: ${EMQX_USERNAME} EMQX_PASSWORD: ${EMQX_PASSWORD} ORG_NAME: ${ORG_NAME} - ORG_SLUG: ${ORG_SLUG} OWNER_EMAIL: ${OWNER_EMAIL} OWNER_PASSWORD: ${OWNER_PASSWORD} CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS} @@ -426,7 +425,7 @@ services: networks: default: aliases: - - ${ORG_SLUG}.haproxy + - spacedf.haproxy environment: HOST: ${HOST} JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY} diff --git a/entrypoint.sh b/entrypoint.sh index 161a701..740f7fe 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -7,7 +7,7 @@ API_URL="${HOST}/docs" HOST_FRONTEND_ADMIN="${HOST_FRONTEND_ADMIN}" SCHEME="$(echo "$DASHBOARD_NEXTAUTH_URL" | sed -E 's#(https?://).*#\1#')" DOMAIN="$(echo "$DASHBOARD_NEXTAUTH_URL" | sed -E 's#https?://##')" -HOST_FRONTEND="${SCHEME}${ORG_SLUG}.${DOMAIN}" +HOST_FRONTEND="${SCHEME}spacedf.${DOMAIN}" clear echo -e "\033[38;5;208m" @@ -27,6 +27,34 @@ echo # ===== Build & Start ===== COMPOSE_FILE="./docker-compose.yml" PROJECT_NAME="spacedf-core" +USERNAME_CHANGED=false +PASSWORD_CHANGED=false + +if docker ps --format '{{.Names}}' | grep -q "^rabbitmq$"; then + EXISTING_USER=$(docker exec rabbitmq rabbitmqctl list_users --formatter json 2>/dev/null | grep -o '"user":"[^"]*"' | head -1 | cut -d'"' -f4) + + if [ -n "$EXISTING_USER" ] && [ "$EXISTING_USER" != "$RABBITMQ_DEFAULT_USER" ]; then + USERNAME_CHANGED=true + fi + + if [ -n "$EXISTING_USER" ] && ! docker exec rabbitmq rabbitmqctl authenticate_user "$EXISTING_USER" "$RABBITMQ_DEFAULT_PASS" &>/dev/null; then + PASSWORD_CHANGED=true + fi +fi + +# If username changed → create new account and delete old +if [ "$USERNAME_CHANGED" = true ]; then + docker exec rabbitmq rabbitmqctl add_user "$RABBITMQ_DEFAULT_USER" "$RABBITMQ_DEFAULT_PASS" + docker exec rabbitmq rabbitmqctl set_user_tags "$RABBITMQ_DEFAULT_USER" administrator + docker exec rabbitmq rabbitmqctl set_permissions -p / "$RABBITMQ_DEFAULT_USER" ".*" ".*" ".*" + docker exec rabbitmq rabbitmqctl delete_user "$EXISTING_USER" +fi + +# Update password automatically +if [ "$PASSWORD_CHANGED" = true ]; then + docker exec rabbitmq rabbitmqctl change_password "$RABBITMQ_DEFAULT_USER" "$RABBITMQ_DEFAULT_PASS" +fi + echo "Deploying SpaceDF Core..." echo "Stopping existing services (if running)..." docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" stop || true diff --git a/generate-keys.sh b/generate-keys.sh index 9e2afbd..824d6c2 100755 --- a/generate-keys.sh +++ b/generate-keys.sh @@ -31,7 +31,6 @@ env_vars = { 'MQTT_BROKER_BRIDGE_PASSWORD': 'Default@1234', 'MQTT_PASSWORD': 'Default@1234', 'ORG_NAME': 'Default Organization', - 'ORG_SLUG': 'default-org', 'OWNER_EMAIL': 'admin@example.com', 'OWNER_PASSWORD': 'changeme@Default123', 'BOOTSTRAP_SECRET_KEY': os.environ['BSK'],