Dokploy

Libredesk

Open source, self-hosted customer support desk. Single binary app.

Libredesk logo

Configuration

services:
  libredesk:
    image: libredesk/libredesk:latest
    restart: unless-stopped
    ports:
      - 9000
    environment:
      # If the password is set during first docker-compose up, the system user password will be set to this value.
      # You can always set system user password later by running `docker exec -it libredesk_app ./libredesk --set-system-user-password`.
      LIBREDESK_SYSTEM_USER_PASSWORD: ${LIBREDESK_SYSTEM_USER_PASSWORD:-}
    depends_on:
      - db
      - redis
    volumes:
      - ../files/uploads:/libredesk/uploads:rw
      - ../files/config.toml:/libredesk/config.toml
    command: [ sh, -c, "./libredesk --install --idempotent-install --yes --config /libredesk/config.toml && ./libredesk --upgrade --yes --config /libredesk/config.toml && ./libredesk --config /libredesk/config.toml" ]

  # PostgreSQL database
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    ports:
      # Only bind on the local interface. To connect to Postgres externally, change this to 0.0.0.0
      - 5432
    environment:
      # Set these environment variables to configure the database, defaults to libredesk.
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-libredesk} -d ${POSTGRES_DB:-libredesk}" ]
      interval: 10s
      timeout: 5s
      retries: 6
    volumes:
      - postgres-data:/var/lib/postgresql/data

  # Redis
  redis:
    image: redis:7-alpine
    restart: unless-stopped
    ports:
      # Only bind on the local interface.
      - 6379
    volumes:
      - redis-data:/data

volumes:
  postgres-data:
  redis-data:
[variables]
libredesk_domain = "${domain}"

libredesk_system_user_password = "${base64:32}"

pg_username = "${username}"
pg_password = "${password:16}"
pg_database = "libredesk"

[config]
env = [
    "LIBREDESK_SYSTEM_USER_PASSWORD=${libredesk_system_user_password}",
    "POSTGRES_USER=${pg_username}",
    "POSTGRES_PASSWORD=${pg_password}",
    "POSTGRES_DB=${pg_database}",
]

[[config.domains]]
serviceName = "libredesk"
port = 9000
host = "${libredesk_domain}"

[[config.mounts]]
filePath = "config.toml"
content = """

[app]
# Log level: info, debug, warn, error, fatal
log_level = "debug"
# Environment: dev, prod.
# Setting to "dev" will enable color logging in terminal.
env = "dev"
# Whether to automatically check for application updates on start up, app updates are shown as a banner in the admin panel.
check_updates = true

# HTTP server.
[app.server]
# Address to bind the HTTP server to.
address = "0.0.0.0:9000"
# Unix socket path (leave empty to use TCP address instead)
socket = ""
# Do NOT disable secure cookies in production environment if you don't know exactly what you're doing!
disable_secure_cookies = false
# Request read and write timeouts.
read_timeout = "5s"
write_timeout = "5s"
# Maximum request body size in bytes (100MB)
# If you are using proxy, you may need to configure them to allow larger request bodies.
max_body_size = 104857600
# Size of the read buffer for incoming requests
read_buffer_size = 4096
# Keepalive settings.
keepalive_timeout = "10s"

# File upload provider to use, either `fs` or `s3`.
[upload]
provider = "fs"

# Filesystem provider.
[upload.fs]
# Directory where uploaded files are stored, make sure this directory exists and is writable by the application.
upload_path = 'uploads'

# S3 provider.
[upload.s3]
# S3 endpoint URL (required only for non-AWS S3-compatible providers like MinIO).
# Leave empty to use default AWS endpoints.
url = ""

# AWS S3 credentials, keep empty to use attached IAM roles.
access_key = ""
secret_key = ""

# AWS region, e.g., "us-east-1", "eu-west-1", etc.
region = "ap-south-1"
# S3 bucket name where files will be stored.
bucket = "bucket-name"
# Optional prefix path within the S3 bucket where files will be stored.
# Example, if set to "uploads/media", files will be stored under that path.
# Useful for organizing files inside a shared bucket.
bucket_path = ""
# S3 signed URL expiry duration (e.g., "30m", "1h")
expiry = "30m"

# Postgres.
[db]
# If running locally, use `localhost`.
host = "db"
# Database port, default is 5432.
port = 5432
# Update the following values with your database credentials.
user = "${pg_username}"
password = "${pg_password}"
database = "${pg_database}"
ssl_mode = "disable"
# Maximum number of open database connections
max_open = 30
# Maximum number of idle connections in the pool
max_idle = 30
# Maximum time a connection can be reused before being closed
max_lifetime = "300s"

# Redis.
[redis]
# If running locally, use `localhost:6379`.
address = "redis:6379"
password = ""
db = 0

[message]
# Number of workers processing outgoing message queue
outgoing_queue_workers = 10
# Number of workers processing incoming message queue
incoming_queue_workers = 10
# How often to scan for outgoing messages to process, keep it low to process messages quickly.
message_outgoing_scan_interval = "50ms"
# Maximum number of messages that can be queued for incoming processing
incoming_queue_size = 5000
# Maximum number of messages that can be queued for outgoing processing
outgoing_queue_size = 5000

[notification]
# Number of concurrent notification workers
concurrency = 2
# Maximum number of notifications that can be queued
queue_size = 2000

[automation]
# Number of workers processing automation rules
worker_count = 10

[autoassigner]
# How often to run automatic conversation assignment
autoassign_interval = "5m"

[webhook]
# Number of webhook delivery workers
workers = 5
# Maximum number of webhook deliveries that can be queued
queue_size = 10000
# HTTP timeout for webhook requests
timeout = "15s"

[conversation]
# How often to check for conversations to unsnooze
unsnooze_interval = "5m"

[sla]
# How often to evaluate SLA compliance for conversations
evaluation_interval = "5m"

"""

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBsaWJyZWRlc2s6XG4gICAgaW1hZ2U6IGxpYnJlZGVzay9saWJyZWRlc2s6bGF0ZXN0XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBwb3J0czpcbiAgICAgIC0gOTAwMFxuICAgIGVudmlyb25tZW50OlxuICAgICAgIyBJZiB0aGUgcGFzc3dvcmQgaXMgc2V0IGR1cmluZyBmaXJzdCBkb2NrZXItY29tcG9zZSB1cCwgdGhlIHN5c3RlbSB1c2VyIHBhc3N3b3JkIHdpbGwgYmUgc2V0IHRvIHRoaXMgdmFsdWUuXG4gICAgICAjIFlvdSBjYW4gYWx3YXlzIHNldCBzeXN0ZW0gdXNlciBwYXNzd29yZCBsYXRlciBieSBydW5uaW5nIGBkb2NrZXIgZXhlYyAtaXQgbGlicmVkZXNrX2FwcCAuL2xpYnJlZGVzayAtLXNldC1zeXN0ZW0tdXNlci1wYXNzd29yZGAuXG4gICAgICBMSUJSRURFU0tfU1lTVEVNX1VTRVJfUEFTU1dPUkQ6ICR7TElCUkVERVNLX1NZU1RFTV9VU0VSX1BBU1NXT1JEOi19XG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZGJcbiAgICAgIC0gcmVkaXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy91cGxvYWRzOi9saWJyZWRlc2svdXBsb2Fkczpyd1xuICAgICAgLSAuLi9maWxlcy9jb25maWcudG9tbDovbGlicmVkZXNrL2NvbmZpZy50b21sXG4gICAgY29tbWFuZDogWyBzaCwgLWMsIFwiLi9saWJyZWRlc2sgLS1pbnN0YWxsIC0taWRlbXBvdGVudC1pbnN0YWxsIC0teWVzIC0tY29uZmlnIC9saWJyZWRlc2svY29uZmlnLnRvbWwgJiYgLi9saWJyZWRlc2sgLS11cGdyYWRlIC0teWVzIC0tY29uZmlnIC9saWJyZWRlc2svY29uZmlnLnRvbWwgJiYgLi9saWJyZWRlc2sgLS1jb25maWcgL2xpYnJlZGVzay9jb25maWcudG9tbFwiIF1cblxuICAjIFBvc3RncmVTUUwgZGF0YWJhc2VcbiAgZGI6XG4gICAgaW1hZ2U6IHBvc3RncmVzOjE3LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgcG9ydHM6XG4gICAgICAjIE9ubHkgYmluZCBvbiB0aGUgbG9jYWwgaW50ZXJmYWNlLiBUbyBjb25uZWN0IHRvIFBvc3RncmVzIGV4dGVybmFsbHksIGNoYW5nZSB0aGlzIHRvIDAuMC4wLjBcbiAgICAgIC0gNTQzMlxuICAgIGVudmlyb25tZW50OlxuICAgICAgIyBTZXQgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNvbmZpZ3VyZSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGxpYnJlZGVzay5cbiAgICAgIFBPU1RHUkVTX1VTRVI6ICR7UE9TVEdSRVNfVVNFUn1cbiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgUE9TVEdSRVNfREI6ICR7UE9TVEdSRVNfREJ9XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbIFwiQ01ELVNIRUxMXCIsIFwicGdfaXNyZWFkeSAtVSAke1BPU1RHUkVTX1VTRVI6LWxpYnJlZGVza30gLWQgJHtQT1NUR1JFU19EQjotbGlicmVkZXNrfVwiIF1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA2XG4gICAgdm9sdW1lczpcbiAgICAgIC0gcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcblxuICAjIFJlZGlzXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczo3LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgcG9ydHM6XG4gICAgICAjIE9ubHkgYmluZCBvbiB0aGUgbG9jYWwgaW50ZXJmYWNlLlxuICAgICAgLSA2Mzc5XG4gICAgdm9sdW1lczpcbiAgICAgIC0gcmVkaXMtZGF0YTovZGF0YVxuXG52b2x1bWVzOlxuICBwb3N0Z3Jlcy1kYXRhOlxuICByZWRpcy1kYXRhOiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubGlicmVkZXNrX2RvbWFpbiA9IFwiJHtkb21haW59XCJcblxubGlicmVkZXNrX3N5c3RlbV91c2VyX3Bhc3N3b3JkID0gXCIke2Jhc2U2NDozMn1cIlxuXG5wZ191c2VybmFtZSA9IFwiJHt1c2VybmFtZX1cIlxucGdfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MTZ9XCJcbnBnX2RhdGFiYXNlID0gXCJsaWJyZWRlc2tcIlxuXG5bY29uZmlnXVxuZW52ID0gW1xuICAgIFwiTElCUkVERVNLX1NZU1RFTV9VU0VSX1BBU1NXT1JEPSR7bGlicmVkZXNrX3N5c3RlbV91c2VyX3Bhc3N3b3JkfVwiLFxuICAgIFwiUE9TVEdSRVNfVVNFUj0ke3BnX3VzZXJuYW1lfVwiLFxuICAgIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtwZ19wYXNzd29yZH1cIixcbiAgICBcIlBPU1RHUkVTX0RCPSR7cGdfZGF0YWJhc2V9XCIsXG5dXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImxpYnJlZGVza1wiXG5wb3J0ID0gOTAwMFxuaG9zdCA9IFwiJHtsaWJyZWRlc2tfZG9tYWlufVwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiY29uZmlnLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuXG5bYXBwXVxuIyBMb2cgbGV2ZWw6IGluZm8sIGRlYnVnLCB3YXJuLCBlcnJvciwgZmF0YWxcbmxvZ19sZXZlbCA9IFwiZGVidWdcIlxuIyBFbnZpcm9ubWVudDogZGV2LCBwcm9kLlxuIyBTZXR0aW5nIHRvIFwiZGV2XCIgd2lsbCBlbmFibGUgY29sb3IgbG9nZ2luZyBpbiB0ZXJtaW5hbC5cbmVudiA9IFwiZGV2XCJcbiMgV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGNoZWNrIGZvciBhcHBsaWNhdGlvbiB1cGRhdGVzIG9uIHN0YXJ0IHVwLCBhcHAgdXBkYXRlcyBhcmUgc2hvd24gYXMgYSBiYW5uZXIgaW4gdGhlIGFkbWluIHBhbmVsLlxuY2hlY2tfdXBkYXRlcyA9IHRydWVcblxuIyBIVFRQIHNlcnZlci5cblthcHAuc2VydmVyXVxuIyBBZGRyZXNzIHRvIGJpbmQgdGhlIEhUVFAgc2VydmVyIHRvLlxuYWRkcmVzcyA9IFwiMC4wLjAuMDo5MDAwXCJcbiMgVW5peCBzb2NrZXQgcGF0aCAobGVhdmUgZW1wdHkgdG8gdXNlIFRDUCBhZGRyZXNzIGluc3RlYWQpXG5zb2NrZXQgPSBcIlwiXG4jIERvIE5PVCBkaXNhYmxlIHNlY3VyZSBjb29raWVzIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgaWYgeW91IGRvbid0IGtub3cgZXhhY3RseSB3aGF0IHlvdSdyZSBkb2luZyFcbmRpc2FibGVfc2VjdXJlX2Nvb2tpZXMgPSBmYWxzZVxuIyBSZXF1ZXN0IHJlYWQgYW5kIHdyaXRlIHRpbWVvdXRzLlxucmVhZF90aW1lb3V0ID0gXCI1c1wiXG53cml0ZV90aW1lb3V0ID0gXCI1c1wiXG4jIE1heGltdW0gcmVxdWVzdCBib2R5IHNpemUgaW4gYnl0ZXMgKDEwME1CKVxuIyBJZiB5b3UgYXJlIHVzaW5nIHByb3h5LCB5b3UgbWF5IG5lZWQgdG8gY29uZmlndXJlIHRoZW0gdG8gYWxsb3cgbGFyZ2VyIHJlcXVlc3QgYm9kaWVzLlxubWF4X2JvZHlfc2l6ZSA9IDEwNDg1NzYwMFxuIyBTaXplIG9mIHRoZSByZWFkIGJ1ZmZlciBmb3IgaW5jb21pbmcgcmVxdWVzdHNcbnJlYWRfYnVmZmVyX3NpemUgPSA0MDk2XG4jIEtlZXBhbGl2ZSBzZXR0aW5ncy5cbmtlZXBhbGl2ZV90aW1lb3V0ID0gXCIxMHNcIlxuXG4jIEZpbGUgdXBsb2FkIHByb3ZpZGVyIHRvIHVzZSwgZWl0aGVyIGBmc2Agb3IgYHMzYC5cblt1cGxvYWRdXG5wcm92aWRlciA9IFwiZnNcIlxuXG4jIEZpbGVzeXN0ZW0gcHJvdmlkZXIuXG5bdXBsb2FkLmZzXVxuIyBEaXJlY3Rvcnkgd2hlcmUgdXBsb2FkZWQgZmlsZXMgYXJlIHN0b3JlZCwgbWFrZSBzdXJlIHRoaXMgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgd3JpdGFibGUgYnkgdGhlIGFwcGxpY2F0aW9uLlxudXBsb2FkX3BhdGggPSAndXBsb2FkcydcblxuIyBTMyBwcm92aWRlci5cblt1cGxvYWQuczNdXG4jIFMzIGVuZHBvaW50IFVSTCAocmVxdWlyZWQgb25seSBmb3Igbm9uLUFXUyBTMy1jb21wYXRpYmxlIHByb3ZpZGVycyBsaWtlIE1pbklPKS5cbiMgTGVhdmUgZW1wdHkgdG8gdXNlIGRlZmF1bHQgQVdTIGVuZHBvaW50cy5cbnVybCA9IFwiXCJcblxuIyBBV1MgUzMgY3JlZGVudGlhbHMsIGtlZXAgZW1wdHkgdG8gdXNlIGF0dGFjaGVkIElBTSByb2xlcy5cbmFjY2Vzc19rZXkgPSBcIlwiXG5zZWNyZXRfa2V5ID0gXCJcIlxuXG4jIEFXUyByZWdpb24sIGUuZy4sIFwidXMtZWFzdC0xXCIsIFwiZXUtd2VzdC0xXCIsIGV0Yy5cbnJlZ2lvbiA9IFwiYXAtc291dGgtMVwiXG4jIFMzIGJ1Y2tldCBuYW1lIHdoZXJlIGZpbGVzIHdpbGwgYmUgc3RvcmVkLlxuYnVja2V0ID0gXCJidWNrZXQtbmFtZVwiXG4jIE9wdGlvbmFsIHByZWZpeCBwYXRoIHdpdGhpbiB0aGUgUzMgYnVja2V0IHdoZXJlIGZpbGVzIHdpbGwgYmUgc3RvcmVkLlxuIyBFeGFtcGxlLCBpZiBzZXQgdG8gXCJ1cGxvYWRzL21lZGlhXCIsIGZpbGVzIHdpbGwgYmUgc3RvcmVkIHVuZGVyIHRoYXQgcGF0aC5cbiMgVXNlZnVsIGZvciBvcmdhbml6aW5nIGZpbGVzIGluc2lkZSBhIHNoYXJlZCBidWNrZXQuXG5idWNrZXRfcGF0aCA9IFwiXCJcbiMgUzMgc2lnbmVkIFVSTCBleHBpcnkgZHVyYXRpb24gKGUuZy4sIFwiMzBtXCIsIFwiMWhcIilcbmV4cGlyeSA9IFwiMzBtXCJcblxuIyBQb3N0Z3Jlcy5cbltkYl1cbiMgSWYgcnVubmluZyBsb2NhbGx5LCB1c2UgYGxvY2FsaG9zdGAuXG5ob3N0ID0gXCJkYlwiXG4jIERhdGFiYXNlIHBvcnQsIGRlZmF1bHQgaXMgNTQzMi5cbnBvcnQgPSA1NDMyXG4jIFVwZGF0ZSB0aGUgZm9sbG93aW5nIHZhbHVlcyB3aXRoIHlvdXIgZGF0YWJhc2UgY3JlZGVudGlhbHMuXG51c2VyID0gXCIke3BnX3VzZXJuYW1lfVwiXG5wYXNzd29yZCA9IFwiJHtwZ19wYXNzd29yZH1cIlxuZGF0YWJhc2UgPSBcIiR7cGdfZGF0YWJhc2V9XCJcbnNzbF9tb2RlID0gXCJkaXNhYmxlXCJcbiMgTWF4aW11bSBudW1iZXIgb2Ygb3BlbiBkYXRhYmFzZSBjb25uZWN0aW9uc1xubWF4X29wZW4gPSAzMFxuIyBNYXhpbXVtIG51bWJlciBvZiBpZGxlIGNvbm5lY3Rpb25zIGluIHRoZSBwb29sXG5tYXhfaWRsZSA9IDMwXG4jIE1heGltdW0gdGltZSBhIGNvbm5lY3Rpb24gY2FuIGJlIHJldXNlZCBiZWZvcmUgYmVpbmcgY2xvc2VkXG5tYXhfbGlmZXRpbWUgPSBcIjMwMHNcIlxuXG4jIFJlZGlzLlxuW3JlZGlzXVxuIyBJZiBydW5uaW5nIGxvY2FsbHksIHVzZSBgbG9jYWxob3N0OjYzNzlgLlxuYWRkcmVzcyA9IFwicmVkaXM6NjM3OVwiXG5wYXNzd29yZCA9IFwiXCJcbmRiID0gMFxuXG5bbWVzc2FnZV1cbiMgTnVtYmVyIG9mIHdvcmtlcnMgcHJvY2Vzc2luZyBvdXRnb2luZyBtZXNzYWdlIHF1ZXVlXG5vdXRnb2luZ19xdWV1ZV93b3JrZXJzID0gMTBcbiMgTnVtYmVyIG9mIHdvcmtlcnMgcHJvY2Vzc2luZyBpbmNvbWluZyBtZXNzYWdlIHF1ZXVlXG5pbmNvbWluZ19xdWV1ZV93b3JrZXJzID0gMTBcbiMgSG93IG9mdGVuIHRvIHNjYW4gZm9yIG91dGdvaW5nIG1lc3NhZ2VzIHRvIHByb2Nlc3MsIGtlZXAgaXQgbG93IHRvIHByb2Nlc3MgbWVzc2FnZXMgcXVpY2tseS5cbm1lc3NhZ2Vfb3V0Z29pbmdfc2Nhbl9pbnRlcnZhbCA9IFwiNTBtc1wiXG4jIE1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIHF1ZXVlZCBmb3IgaW5jb21pbmcgcHJvY2Vzc2luZ1xuaW5jb21pbmdfcXVldWVfc2l6ZSA9IDUwMDBcbiMgTWF4aW11bSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCBjYW4gYmUgcXVldWVkIGZvciBvdXRnb2luZyBwcm9jZXNzaW5nXG5vdXRnb2luZ19xdWV1ZV9zaXplID0gNTAwMFxuXG5bbm90aWZpY2F0aW9uXVxuIyBOdW1iZXIgb2YgY29uY3VycmVudCBub3RpZmljYXRpb24gd29ya2Vyc1xuY29uY3VycmVuY3kgPSAyXG4jIE1heGltdW0gbnVtYmVyIG9mIG5vdGlmaWNhdGlvbnMgdGhhdCBjYW4gYmUgcXVldWVkXG5xdWV1ZV9zaXplID0gMjAwMFxuXG5bYXV0b21hdGlvbl1cbiMgTnVtYmVyIG9mIHdvcmtlcnMgcHJvY2Vzc2luZyBhdXRvbWF0aW9uIHJ1bGVzXG53b3JrZXJfY291bnQgPSAxMFxuXG5bYXV0b2Fzc2lnbmVyXVxuIyBIb3cgb2Z0ZW4gdG8gcnVuIGF1dG9tYXRpYyBjb252ZXJzYXRpb24gYXNzaWdubWVudFxuYXV0b2Fzc2lnbl9pbnRlcnZhbCA9IFwiNW1cIlxuXG5bd2ViaG9va11cbiMgTnVtYmVyIG9mIHdlYmhvb2sgZGVsaXZlcnkgd29ya2Vyc1xud29ya2VycyA9IDVcbiMgTWF4aW11bSBudW1iZXIgb2Ygd2ViaG9vayBkZWxpdmVyaWVzIHRoYXQgY2FuIGJlIHF1ZXVlZFxucXVldWVfc2l6ZSA9IDEwMDAwXG4jIEhUVFAgdGltZW91dCBmb3Igd2ViaG9vayByZXF1ZXN0c1xudGltZW91dCA9IFwiMTVzXCJcblxuW2NvbnZlcnNhdGlvbl1cbiMgSG93IG9mdGVuIHRvIGNoZWNrIGZvciBjb252ZXJzYXRpb25zIHRvIHVuc25vb3plXG51bnNub296ZV9pbnRlcnZhbCA9IFwiNW1cIlxuXG5bc2xhXVxuIyBIb3cgb2Z0ZW4gdG8gZXZhbHVhdGUgU0xBIGNvbXBsaWFuY2UgZm9yIGNvbnZlcnNhdGlvbnNcbmV2YWx1YXRpb25faW50ZXJ2YWwgPSBcIjVtXCJcblxuXCJcIlwiIgp9

Tags

storage, object-storage


Version: latest

On this page