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 " />
< x - application . settings - section title = " Database details "
description = " Manage the identity and container image for this Redis 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 Redis image from Docker Hub. " />
2025-04-15 16:58:00 +00:00
</ div >
2023-10-12 15:18:33 +00:00
</ div >
2026-08-03 21:11:54 +00:00
</ x - application . settings - section >
< x - application . settings - section title = " Credentials "
description = " Keep these values aligned with the credentials configured inside Redis. " >
< x - callout type = " warning " title = " { { $database->started_at ? 'Keep credentials synchronized' : 'Verify the initial credentials' }} " >
@ if ( $database -> started_at )
Changing values here does not update Redis . Update Redis first , then synchronize the values here so
automations continue working .
@ else
These values can only be changed here before the first start .
@ endif
</ x - callout >
< div class = " mt-4 grid gap-4 lg:grid-cols-2 " >
@ if ( version_compare ( $redisVersion , '6.0' , '>=' ))
< x - forms . input label = " Username " id = " redisUsername " : required = " ! $database->started_at "
helper = " { { $database->started_at ? 'You can only change this in the database.' : 'Shared REDIS_USERNAME values make this field read-only.' }} "
: disabled = " ! $database->started_at && $this->isSharedVariable ('REDIS_USERNAME') "
canGate = " update " : canResource = " $database " />
@ endif
@ if ( $isPasswordHiddenForMember )
< x - forms . input label = " Password " disabled value = " Hidden (only admins can view) " />
@ else
< x - forms . input label = " Password " id = " redisPassword " type = " password "
: required = " ! $database->started_at "
helper = " { { $database->started_at ? 'You can only change this in the database.' : 'Shared REDIS_PASSWORD values make this field read-only.' }} "
: disabled = " ! $database->started_at && $this->isSharedVariable ('REDIS_PASSWORD') "
canGate = " update " : canResource = " $database " />
@ endif
</ div >
</ 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 " />
2024-11-07 11:32:44 +00:00
</ div >
2026-08-03 21:11:54 +00:00
< x - forms . input placeholder = " 3000:6379 " id = " portsMappings " label = " Port mappings "
helper = " Comma-separated host-to-container mappings, for example 3000:6379. "
2025-08-26 08:27:31 +00:00
canGate = " update " : canResource = " $database " />
2024-06-09 19:33:17 +00:00
</ div >
2026-08-03 21:11:54 +00:00
< div class = " mt-4 " >
< livewire : project . database . redis . 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 Redis directives you need. All other defaults remain active. " >
< x - forms . textarea placeholder = " # maxmemory 256mb
2025-08-11 12:33:31 +00:00
# maxmemory-policy allkeys-lru
# timeout 300"
2026-06-20 00:23:12 +00:00
helper = " MapleDeploy automatically applies requirepass using the password above. If you override requirepass here, keep both values identical. "
2026-08-03 21:11:54 +00:00
label = " Custom Redis configuration " rows = " 10 " id = " redisConf " canGate = " update "
: canResource = " $database " />
</ x - application . settings - section >
2024-08-21 13:54:16 +00:00
2026-08-03 21:11:54 +00:00
< 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 >
2023-10-12 15:18:33 +00:00
</ form >
2024-10-15 15:38:11 +00:00
</ div >