| @@ -15,6 +15,36 @@ user=$1 | |||||
| password=$2 | password=$2 | ||||
| admin=$3 | admin=$3 | ||||
| wait_for_synapse() { | |||||
| local timeout_seconds=180 | |||||
| local interval_seconds=5 | |||||
| local elapsed=0 | |||||
| local last_reason="" | |||||
| while [ "$elapsed" -lt "$timeout_seconds" ]; do | |||||
| if ! {{ devture_systemd_docker_base_host_command_docker }} ps -a --format '{{"{{"}}.Names{{"}}"}}' | grep -q '^matrix-synapse$'; then | |||||
| last_reason="container not found" | |||||
| elif [ "$({{ devture_systemd_docker_base_host_command_docker }} inspect -f '{{"{{"}}.State.Running{{"}}"}}' matrix-synapse 2>/dev/null)" != "true" ]; then | |||||
| last_reason="container not running" | |||||
| elif ! {{ devture_systemd_docker_base_host_command_docker }} exec matrix-synapse \ | |||||
| curl -fsS "http://localhost:{{ matrix_synapse_container_client_api_port }}/health" >/dev/null 2>&1; then | |||||
| last_reason="health endpoint not ready" | |||||
| else | |||||
| return 0 | |||||
| fi | |||||
| sleep "$interval_seconds" | |||||
| elapsed=$((elapsed + interval_seconds)) | |||||
| done | |||||
| echo "Timed out waiting for matrix-synapse to become healthy after ${timeout_seconds}s (${last_reason})." | |||||
| return 1 | |||||
| } | |||||
| if ! wait_for_synapse; then | |||||
| exit 1 | |||||
| fi | |||||
| if [ "$admin" -eq "1" ]; then | if [ "$admin" -eq "1" ]; then | ||||
| {{ devture_systemd_docker_base_host_command_docker }} exec matrix-synapse register_new_matrix_user -u "$user" -p "$password" -c /data/homeserver.yaml --admin http://localhost:{{ matrix_synapse_container_client_api_port }} | {{ devture_systemd_docker_base_host_command_docker }} exec matrix-synapse register_new_matrix_user -u "$user" -p "$password" -c /data/homeserver.yaml --admin http://localhost:{{ matrix_synapse_container_client_api_port }} | ||||
| else | else | ||||