2026-08-03 21:11:54 +00:00
< div class = " application-settings-form " >
< form wire : submit = " submit " class = " flex flex-col gap-6 " >
< x - unsaved - bar action = " submit " />
2024-11-04 13:33:00 +00:00
2026-08-03 21:11:54 +00:00
< x - application . settings - section title = " Database details "
description = " Manage the identity and container image for this KeyDB database. " >
< x - slot : actions >
< x - modal - input title = " Resource details " buttonTitle = " Details " >
< livewire : project . shared . resource - details : resource = " $database " />
</ x - modal - input >
</ x - slot : actions >
< div class = " grid gap-4 lg:grid-cols-2 " >
< x - forms . input label = " Name " id = " name " canGate = " update " : canResource = " $database " />
< x - forms . input label = " Description " id = " description " canGate = " update " : canResource = " $database " />
< div class = " lg:col-span-2 " >
< x - forms . input label = " Image " id = " image " required canGate = " update " : canResource = " $database "
helper = " Use a published eqalpha/keydb image from Docker Hub. " />
</ div >
2024-11-04 13:33:00 +00:00
</ div >
2026-08-03 21:11:54 +00:00
</ x - application . settings - section >
< x - application . settings - section title = " Credentials "
description = " Keep this value aligned with the password configured inside KeyDB. " >
@ if ( $database -> started_at )
2026-02-27 21:42:48 +00:00
@ if ( $isPasswordHiddenForMember )
< x - forms . input label = " Password " disabled value = " Hidden (only admins can view) " />
@ else
2026-08-03 21:11:54 +00:00
< x - forms . input label = " Password " id = " keydbPassword " type = " password " required readonly
helper = " You can only change this in the database. " canGate = " update " : canResource = " $database " />
2026-02-27 21:42:48 +00:00
@ endif
2026-08-03 21:11:54 +00:00
@ else
< x - callout type = " warning " title = " Verify the initial credentials " >
You can only change this password here before the first start . Later changes must be made inside the
database .
</ x - callout >
< div class = " mt-4 " >
@ if ( $isPasswordHiddenForMember )
< x - forms . input label = " Password " disabled value = " Hidden (only admins can view) " />
@ else
< x - forms . input label = " Password " id = " keydbPassword " type = " password " required
canGate = " update " : canResource = " $database " />
2024-11-04 13:33:00 +00:00
@ endif
</ div >
2026-08-03 21:11:54 +00:00
@ endif
</ x - application . settings - section >
< x - application . settings - section title = " Runtime and network "
description = " Configure Docker runtime options and host port mappings. " >
< div class = " grid gap-4 lg:grid-cols-2 " >
< div class = " lg:col-span-2 " >
< x - forms . input
2026-06-20 00:23:12 +00:00
helper = " Add supported docker run options used when the container starts. Unsupported options can interfere with MapleDeploy automation. "
2026-08-03 21:11:54 +00:00
placeholder = " --cap-add SYS_ADMIN --device=/dev/fuse "
id = " customDockerRunOptions " label = " Custom Docker options " canGate = " update "
: canResource = " $database " />
</ div >
< x - forms . input placeholder = " 3000:6379 " id = " portsMappings " label = " Port mappings "
helper = " Comma-separated host-to-container mappings, for example 3000:6379. "
2026-04-20 11:08:56 +00:00
canGate = " update " : canResource = " $database " />
2026-08-03 21:11:54 +00:00
</ div >
< div class = " mt-4 " >
< livewire : project . database . keydb . status - info : database = " $database " />
</ div >
</ x - application . settings - section >
2026-08-07 15:14:43 +00:00
< x - application . settings - section title = " Public access " class = " relative "
2026-08-03 21:11:54 +00:00
description = " Expose this database through the managed TCP proxy. " >
< x - slot : actions >
@ if ( $isPublic )
2026-08-07 15:14:43 +00:00
< x - process - dialog closeWithX size = " xl " >
2026-08-03 21:11:54 +00:00
< x - slot : title > Proxy logs </ x - slot : title >
< x - slot : content >
< livewire : project . shared . get - logs : server = " $server " : resource = " $database "
container = " { { data_get( $database , 'uuid') }}-proxy " : collapsible = " false " lazy />
</ x - slot : content >
2026-08-07 15:14:43 +00:00
< x - forms . button @ click = " processDialogOpen = true " > View logs </ x - forms . button >
</ x - process - dialog >
2026-08-03 21:11:54 +00:00
@ endif
</ x - slot : actions >
2026-08-07 15:14:43 +00:00
< x - table . loading target = " instantSave " text = " Updating public access... " />
2026-08-03 21:11:54 +00:00
< div class = " grid gap-4 lg:grid-cols-2 " >
2026-08-07 15:14:43 +00:00
< div wire : key = " public-access- { { $publicPort ?: 'unset' }} " >
< x - forms . listbox id = " isPublic " label = " Access " live onChange = " instantSave "
2026-08-18 08:18:52 +00:00
: disabled = " ! auth()->user()->can('update', $database ) " canGate = " update " : canResource = " $database " : options = " [
2026-08-07 15:14:43 +00:00
[ 'value' => false , 'label' => 'Private' ],
[ 'value' => true , 'label' => blank ( $publicPort ) ? 'Public through TCP proxy (set public port first)' : 'Public through TCP proxy' , 'disabled' => blank ( $publicPort )],
] " />
</ div >
2026-08-03 21:11:54 +00:00
< x - forms . input type = " number " placeholder = " 6379 " disabled = " { { $isPublic }} " id = " publicPort "
label = " Public port " canGate = " update " : canResource = " $database " />
2026-04-20 11:08:56 +00:00
< x - forms . input type = " number " placeholder = " 3600 " disabled = " { { $isPublic }} " id = " publicPortTimeout "
2026-08-03 21:11:54 +00:00
label = " Proxy timeout " helper = " Timeout in seconds. The default is 3600. "
canGate = " update " : canResource = " $database " />
2026-04-20 11:08:56 +00:00
</ div >
2026-08-03 21:11:54 +00:00
</ x - application . settings - section >
< x - application . settings - section title = " Configuration "
description = " Override only the KeyDB directives you need. All other defaults remain active. " >
< x - forms . textarea
helper = " <a target='_blank' class='underline' href='https://raw.githubusercontent.com/Snapchat/KeyDB/unstable/keydb.conf'>View the default KeyDB configuration</a> "
label = " Custom KeyDB configuration " rows = " 10 " id = " keydbConf " canGate = " update "
: canResource = " $database " />
</ x - application . settings - section >
< x - application . settings - section title = " Log delivery "
description = " Forward container logs to the drain configured on the server. " >
2026-08-18 08:18:52 +00:00
< x - forms . listbox canGate = " update " : canResource = " $database " id = " isLogDrainEnabled " label = " Log drain " live onChange = " instantSaveAdvanced "
2026-08-03 21:11:54 +00:00
: disabled = " ! auth()->user()->can('update', $database ) " : options = " [
[ 'value' => false , 'label' => 'Do not forward logs' ],
[ 'value' => true , 'label' => 'Forward logs to the server drain' ],
] " />
</ x - application . settings - section >
2024-04-10 13:00:46 +00:00
</ form >
</ div >