coollabsio/coolify · error · Exception

A server with this IP/Domain already exists in your team.

Error message

A server with this IP/Domain already exists in your team.

What it means

Server Show's syncData(toModel: true) enforces IP uniqueness before saving: Server::where('ip', $this->ip)->where('id', '!=', $this->server->id)->first() found a row, and that row's team_id equals currentTeam()->id. The submitted IP property is reverted to the stored server IP and the save aborts - each team may register a given IP/hostname only once.

Source

Thrown at app/Livewire/Server/Show.php:245

        return collect(timezone_identifiers_list())
            ->sort()
            ->values()
            ->toArray();
    }

    public function syncData(bool $toModel = false)
    {
        if ($toModel) {
            $this->validate();

            $this->authorize('update', $this->server);
            $foundServer = Server::where('ip', $this->ip)
                ->where('id', '!=', $this->server->id)
                ->first();
            if ($foundServer) {
                $this->ip = $this->server->ip;
                if ($foundServer->team_id === currentTeam()->id) {
                    throw new \Exception('A server with this IP/Domain already exists in your team.');
                }

                throw new \Exception('A server with this IP/Domain is already in use by another team.');
            }

            $this->server->name = $this->name;
            $this->server->description = $this->description;
            $this->server->ip = $this->ip;
            $this->server->user = $this->user;
            $this->server->port = $this->port;
            $this->server->validation_logs = $this->validationLogs;
            $this->server->save();

            $this->server->settings->connection_timeout = $this->connectionTimeout;
            $this->server->settings->is_swarm_manager = $this->isSwarmManager;
            $this->server->settings->wildcard_domain = $this->wildcardDomain;
            $this->server->settings->is_swarm_worker = $this->isSwarmWorker;
            $this->server->settings->is_build_server = $this->isBuildServer;

View on GitHub (pinned to 70b9acc424)

Solutions

  1. Set a unique IP/hostname for this server and save again
  2. Delete or repurpose the existing server entry in this team that already holds the IP
  3. If you need one machine for multiple purposes, keep a single server entry and use its destinations/resources
  4. Clean up duplicate rows (php artisan tinker or the UI) before re-importing

Example fix

// before
$this->server->ip = $this->ip; // no duplicate check

// after
$found = \App\Models\Server::where('ip', $this->ip)
    ->where('id', '!=', $this->server->id)->first();
if (! $found && $this->ip !== $this->server->ip) {
    $this->server->ip = $this->ip;
}
Defensive patterns

Strategy: validation

Validate before calling

$found = \App\Models\Server::where('ip', $this->ip)
    ->where('id', '!=', $this->server->id)->first();
if ($found && $found->team_id === currentTeam()->id) {
    // pick a different IP/hostname before submit
}

Try / catch

Catch \Exception inside syncData's caller (submit) and dispatch the message; the component reverts $this->ip to the stored value on failure - show that reverted value in the form.

Prevention

When it happens

Trigger: Editing a server and typing the IP/hostname of another server already registered in the same team (e.g. pointing two entries at 127.0.0.1 or the same host); re-adding a removed server while the old row still exists; DNS name and IP both registered for the same box.

Common situations: Registering both the hostname and the raw IP of one machine; leftovers from a deleted-and-recreated server; import/migration scripts creating duplicate rows.

Related errors


AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17). Data as JSON: /api/errors/c293078cc5a36b70. Report an issue: GitHub.