Add PowerDNS config and DKIM/NS check tables required for zone provisioning.
Deploy Ladill Hosting / deploy (push) Successful in 49s

Hosting had PDNS env vars but no config/pdns.php and was missing domain_dkim_keys, so linked domains never got authoritative zones.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-13 17:05:28 +00:00
co-authored by Cursor
parent 40d3dc0fbe
commit bc199ccb43
2 changed files with 69 additions and 0 deletions
@@ -0,0 +1,56 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
if (! Schema::hasTable('domain_dkim_keys')) {
Schema::create('domain_dkim_keys', function (Blueprint $table) {
$table->id();
$table->foreignId('domain_id')->constrained('domains')->cascadeOnDelete();
$table->string('selector');
$table->longText('public_key_txt');
$table->string('private_key_path')->nullable();
$table->string('status')->default('active');
$table->timestamp('generated_at')->nullable();
$table->timestamps();
$table->unique(['domain_id', 'selector']);
});
}
if (! Schema::hasTable('domain_ns_checks')) {
Schema::create('domain_ns_checks', function (Blueprint $table) {
$table->id();
$table->foreignId('domain_id')->constrained('domains')->cascadeOnDelete();
$table->string('check_type')->default('onboarding');
$table->string('result')->default('pending');
$table->json('expected_nameservers')->nullable();
$table->json('observed_nameservers')->nullable();
$table->boolean('has_authoritative_answer')->nullable();
$table->unsignedSmallInteger('manual_records_total')->default(0);
$table->unsignedSmallInteger('manual_records_verified')->default(0);
$table->string('status_before')->nullable();
$table->string('status_after')->nullable();
$table->string('state_before')->nullable();
$table->string('state_after')->nullable();
$table->text('notes')->nullable();
$table->timestamp('checked_at')->nullable();
$table->timestamps();
$table->index(['domain_id', 'checked_at']);
$table->index(['domain_id', 'result']);
});
}
}
public function down(): void
{
Schema::dropIfExists('domain_ns_checks');
Schema::dropIfExists('domain_dkim_keys');
}
};