60 lines
1.9 KiB
Plaintext
60 lines
1.9 KiB
Plaintext
![]() |
#!/bin/bash
|
||
|
# Info: Script to create first Coder admin user
|
||
|
# Author: Provisioning System
|
||
|
|
||
|
set -e
|
||
|
|
||
|
CODER_USER=${CODER_USER:-admin}
|
||
|
CODER_EMAIL=${CODER_EMAIL:-admin@{{ coder.access_url | replace('http://', '') | replace('https://', '') }}}
|
||
|
CODER_PASSWORD=${CODER_PASSWORD:-$(openssl rand -base64 12)}
|
||
|
|
||
|
echo "Creating first Coder admin user..."
|
||
|
|
||
|
# Wait for Coder server to be ready
|
||
|
timeout=60
|
||
|
while [ $timeout -gt 0 ]; do
|
||
|
if curl -f -s "{{ coder.access_url }}/api/v2/buildinfo" >/dev/null 2>&1; then
|
||
|
echo "Coder server is ready"
|
||
|
break
|
||
|
fi
|
||
|
echo "Waiting for Coder server to start... ($timeout seconds remaining)"
|
||
|
sleep 2
|
||
|
timeout=$((timeout - 2))
|
||
|
done
|
||
|
|
||
|
if [ $timeout -le 0 ]; then
|
||
|
echo "Timeout waiting for Coder server to start"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Create first user via API
|
||
|
RESPONSE=$(curl -s -X POST "{{ coder.access_url }}/api/v2/users/first" \
|
||
|
-H "Content-Type: application/json" \
|
||
|
-d "{
|
||
|
\"username\": \"$CODER_USER\",
|
||
|
\"email\": \"$CODER_EMAIL\",
|
||
|
\"password\": \"$CODER_PASSWORD\",
|
||
|
\"trial\": false
|
||
|
}")
|
||
|
|
||
|
if echo "$RESPONSE" | grep -q '"username"'; then
|
||
|
echo "✅ First admin user created successfully!"
|
||
|
echo "Username: $CODER_USER"
|
||
|
echo "Email: $CODER_EMAIL"
|
||
|
echo "Password: $CODER_PASSWORD"
|
||
|
echo ""
|
||
|
echo "Login at: {{ coder.access_url }}"
|
||
|
|
||
|
# Save credentials to secure file
|
||
|
echo "USERNAME=$CODER_USER" > {{ coder.config_path }}/admin-credentials
|
||
|
echo "EMAIL=$CODER_EMAIL" >> {{ coder.config_path }}/admin-credentials
|
||
|
echo "PASSWORD=$CODER_PASSWORD" >> {{ coder.config_path }}/admin-credentials
|
||
|
chmod 600 {{ coder.config_path }}/admin-credentials
|
||
|
chown {{ coder.run_user.name }}:{{ coder.run_user.group }} {{ coder.config_path }}/admin-credentials
|
||
|
|
||
|
echo "Credentials saved to: {{ coder.config_path }}/admin-credentials"
|
||
|
else
|
||
|
echo "❌ Failed to create first user"
|
||
|
echo "Response: $RESPONSE"
|
||
|
exit 1
|
||
|
fi
|