Username (admin) and random password at startup

Chris929 8 months ago

Hi Folks,

I am trying to script the automatic creation of Traccar Docker-Containers and for my IoT-Stack I also want to use Traccar.
After creating the container, I have to login into it (register) for a first time in order to set the username (admin) and the password.
How can I automate / script this step? I've tried using username and password in the traccar.xml but these settngs are ignored :(
For Grafana / Influx I can simply set an environment variable -does traccar offer something similar?

NO manual step should be required for security reasons - Containers will later be created automatically (with the password stored inside a variable of the container-start script at runtime) and then this password will be sent to a new user - therefore this step is crucial as I don't want anyone to be "faster" on that page and register themselves... Maybe a db copy? But I'm sure theres a mor elegant way?

Thanks for your help / Input :)

Anton Tananaev 8 months ago

You can just use the API to register the first user.

Chris929 8 months ago

I tried that - but got an error and read somewhere that the API will only not give me an "unauthorized" once the admin user has been created

Anton Tananaev 8 months ago

That's incorrect information you read.

Chris929 8 months ago

Does that mean that the API is „open“ and so anyone can register anything???

Anton Tananaev 8 months ago

You can register the first user, which will be your admin.

Chris929 8 months ago

I'm always getting an error:

echo "Creating admin user via API..."
RESPONSE=$(curl -s -w "%{http_code}" -o /dev/null -X POST "http://$traccaripv6address:8082/api/users" \
  -H "Content-Type: application/json" \
  -d "{\"name\": \"admin\", \"email\": \"user@localhost\", \"password\": \"$randid\", \"administrator\": true}")

if [ "$RESPONSE" -eq 201 ]; then
  echo "Admin user created successfully."
else
  echo "Failed to create admin user. Response code: $RESPONSE"
  exit 1
fi

Either Code 000 (if I don't wait 10s after container creation) or code 401 afterwards
What am I missing?

Anton Tananaev 8 months ago

You shouldn't send "administrator": true. You will become admin automatically if it's the first user.

Chris929 8 months ago

Thank you so much - removing "administrator" allowed me to use the API :)