diff --git a/driver/driver.go b/driver/driver.go
index 50031888a989db7f52e118ebf20305cc7816ba2a..b1e361631b5e1df2e706420bf2c3b668a8bfdb10 100644
--- a/driver/driver.go
+++ b/driver/driver.go
@@ -505,7 +505,7 @@ func (d *Driver) Create() error {
 	d.ServerID = srv.Server.ID
 	log.Infof(" -> Server %s[%d]: Waiting to come up...", srv.Server.Name, srv.Server.ID)
 
-	err = d.waitForRunningServer()
+	err = d.waitForInitialStartup(srv)
 	if err != nil {
 		return err
 	}
diff --git a/driver/setup.go b/driver/setup.go
index d24710eaeacde7115844d10dedd51856a182aade..13a5af9fe70bbd3b25cc88fd2739b454ba096e87 100644
--- a/driver/setup.go
+++ b/driver/setup.go
@@ -32,6 +32,16 @@ func (d *Driver) waitForRunningServer() error {
 	return nil
 }
 
+func (d *Driver) waitForInitialStartup(srv hcloud.ServerCreateResult) error {
+	if srv.NextActions != nil && len(srv.NextActions) != 0 {
+		if err := d.waitForMultipleActions("server.NextActions", srv.NextActions); err != nil {
+			return fmt.Errorf("could not wait for NextActions: %w", err)
+		}
+	}
+
+	return d.waitForRunningServer()
+}
+
 func (d *Driver) makeCreateServerOptions() (*hcloud.ServerCreateOpts, error) {
 	pgrp, err := d.getPlacementGroup()
 	if err != nil {