Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.
Sign transactions locally.We offer a cutting-edge Key Management Server (KMS) that ensures total ownership and control of private keys for all assets in custody. Our KMS guarantees that Finrock’s backend servers cannot access any private keys, Mnemonic Phrases, wallet seeds, or MPC Shares at any point.Hosted on the client’s infrastructure, preferably within environments like AWS or Azure, the KMS performs all signing tasks securely. This setup ensures that private keys/shares remain within the client’s controlled environment, never exposing them externally. This provides an uncompromised level of security for asset management and transactions.
EGRESS ONLYThe server or the VM where KMS is deployed must allow outbound traffic exclusively, any INGRESS (inbound) traffic must be blocked for all IPs (LAN, MAN, WAN).
The Cloud Signer (KMS) is available as a docker container via Docker Hub
Use this mode to sign transactions. The software runs as a service and must be supplied with a Config file mounted to the docker container with read-only privileges.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Finrock","colors":{"primary":"#F6921A","light":"#040404"},"logo":{"light":"https://mintcdn.com/finrock/tGL-zbd_TCbsIV_S/images/Finrocklogo.png?fit=max\u0026auto=format\u0026n=tGL-zbd_TCbsIV_S\u0026q=85\u0026s=5ebb1db67970f798309dd7291873f2b7","dark":"https://mintcdn.com/finrock/tGL-zbd_TCbsIV_S/images/2e3558e0.png?fit=max\u0026auto=format\u0026n=tGL-zbd_TCbsIV_S\u0026q=85\u0026s=dd03ef47767e1348cb231a65d5d3d4f3","href":"https://finrock.io"},"favicon":{"light":"https://mintcdn.com/finrock/tGL-zbd_TCbsIV_S/images/icon-1024-center.jpg?fit=max\u0026auto=format\u0026n=tGL-zbd_TCbsIV_S\u0026q=85\u0026s=40246637b1cb4d6e35d94212b458515e","dark":"https://mintcdn.com/finrock/tGL-zbd_TCbsIV_S/images/icon-1024-center.jpg?fit=max\u0026auto=format\u0026n=tGL-zbd_TCbsIV_S\u0026q=85\u0026s=40246637b1cb4d6e35d94212b458515e"},"api":{"playground":{"display":"interactive"},"mdx":{"auth":{"method":"key","name":"x-api-key"},"server":"https://api.finrock.io"}},"appearance":{"default":"light","strict":true},"navbar":{"primary":{"type":"github","href":"https://github.com/gofinrock"}},"icons":{"library":"lucide"},"integrations":{"gtm":{"tagId":"GTM-PZ4JW889"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"finrock","hasAudioNarration":false,"actualSubdomain":"finrock","customDomains":["apidocs.finrock.io"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-finrock-6e1ffd21","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af5be0b5cae6d002f818697","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":88},{"language":"default","tag":"Documentation","count":28},{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"Wallets \u0026 Addresses","count":7},{"language":"default","tag":"Overview","count":6},{"language":"default","tag":"Core Concepts","count":5},{"language":"default","tag":"Platform Reference","count":5},{"language":"default","tag":"AML","count":4},{"language":"default","tag":"Exchanges","count":4},{"language":"default","tag":"Gas Fee","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":""}],"page":{"pagePath":"guides/cloud-signer","slug":"/guides/cloud-signer","pageMetadata":{"title":"Cloud Signer (KMS)","sidebarTitle":"Cloud Signer (KMS)","description":"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.","icon":{"name":"server-cog","library":"lucide"},"href":"/guides/cloud-signer"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Sign transactions locally.`}),`\n`,_jsx(_components.p,{children:`We offer a cutting-edge Key Management Server (KMS) that ensures total ownership and control of private keys for all assets in custody. Our KMS guarantees that Finrock’s backend servers cannot access any private keys, Mnemonic Phrases, wallet seeds, or MPC Shares at any point.`}),`\n`,_jsx(_components.p,{children:`Hosted on the client’s infrastructure, preferably within environments like AWS or Azure, the KMS performs all signing tasks securely. This setup ensures that private keys/shares remain within the client’s controlled environment, never exposing them externally. This provides an uncompromised level of security for asset management and transactions.`}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`EGRESS ONLY`})}),_jsx(_components.p,{children:`The server or the VM where KMS is deployed must allow outbound traffic exclusively, any INGRESS (inbound) traffic must be blocked for all IPs (LAN, MAN, WAN).`})]}),`\n`,_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`The Cloud Signer (KMS) is available as a docker container via `,_jsx(_components.a,{href:`https://hub.docker.com/r/finrock/ng-signer`,children:`Docker Hub`})]})}),`\n`,_jsx(CodeBlock,{filename:`docker image`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pull`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock/ng-signer`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`config-json-file`,children:`Config.json file`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`MPC Wallet`,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"signer_mode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"MPC\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"signer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2df047e7-xxxxx-xxx-xxxxx-77673f0be16c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"rsa_prv_key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ras-----xx\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"passphrase\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your-secret-password\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Legacy Wallet`,numberOfLines:`9`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"signer_mode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"LEGACY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"signer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2df047e7-xxxxx-xxx-xxxxx-77673f0be16c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"rsa_prv_key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ras-----xx\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"srds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"YW1vdW50IGFixxxxxxxxxxxxxxxxxxxyIG1vb24=\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"YW11c2VkIGFiYW5kbxxxxxxxxxxxxRyZXNzIGdyZWF0\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`starting-signer-detached-container`,children:`Starting Signer (detached container)`}),`\n`,_jsx(_components.p,{children:`Use this mode to sign transactions. The software runs as a service and must be supplied with a Config file mounted to the docker container with read-only privileges.`}),`\n`,_jsx(Heading,{level:`3`,id:`running-with-docker-run-command`,children:`Running with docker run command`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`MPC Wallet`,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --restart`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` always`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -v`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"$(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`pwd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"/config.json:/app/config.json:ro`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -v`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"$(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`pwd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"/keystore:/app/keystore:ro`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock/ng-signer`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Legacy Wallet`,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --restart`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` always`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -v`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"$(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`pwd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"/config.json:/app/config.json:ro`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock/ng-signer`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`3`,id:`running-as-docker-compose`,children:`Running as docker-compose`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`MPC Wallet`,numberOfLines:`9`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'3'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`services`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` image`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`finrock/ng-signer`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` container_name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`finrock`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` restart`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`always`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` volumes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`./config.json:/app/config.json:ro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`./keystore:/app/keystore:ro`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Legacy Wallet`,numberOfLines:`8`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'3'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`services`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` image`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`finrock/ng-signer`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` container_name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`finrock`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` restart`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`always`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` volumes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`./config.json:/app/config.json:ro`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`removing-signer`,children:`Removing Signer`}),`\n`,_jsx(CodeBlock,{filename:`shell`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` finrock`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`envs`,children:`ENVs`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Wallet Type`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Default Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_SIGNER_MODE`})}),_jsx(_components.td,{children:`Both`}),_jsx(_components.td,{children:`ENUM`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`LEGACY`}),` or `,_jsx(_components.code,{children:`MPC`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_SIGNER_ID`})}),_jsx(_components.td,{children:`Both`}),_jsx(_components.td,{children:`uuid`}),_jsx(_components.td,{children:`Unique ID for signer from Finrock`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_RSA_PRV_KEY`})}),_jsx(_components.td,{children:`Both`}),_jsx(_components.td,{children:`rsa-key`}),_jsx(_components.td,{children:`RSA Private Key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_PASSPHRASE`})}),_jsx(_components.td,{children:`MPC`}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`passphrase to encrypt MPC keystore`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_MNEMONIC_PHRASE`})}),_jsx(_components.td,{children:`Legacy`}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`12-word seed phrase`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_SECRET`})}),_jsx(_components.td,{children:`Legacy`}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`encrypted mnemonic phrase`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FINROCK_API_HOST`})}),_jsx(_components.td,{children:`Both`}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`https://sapi.finrock.io`}),` [Default]`]})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Cloud Signer (KMS)","sidebarTitle":"Cloud Signer (KMS)","description":"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.","icon":{"name":"server-cog","library":"lucide"},"href":"/guides/cloud-signer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Config.json file","slug":"config-json-file","depth":2,"children":[]},{"title":"Starting Signer (detached container)","slug":"starting-signer-detached-container","depth":2,"children":[{"title":"Running with docker run command","slug":"running-with-docker-run-command","depth":3,"children":[]},{"title":"Running as docker-compose","slug":"running-as-docker-compose","depth":3,"children":[]}]},{"title":"Removing Signer","slug":"removing-signer","depth":2,"children":[]},{"title":"ENVs","slug":"envs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"finrock","siteName":"Finrock","title":"Cloud Signer (KMS) - Finrock","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-05T09:12:31.349Z","originalFileLocation":"guides/cloud-signer.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Finrock\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cloud Signer (KMS) - Finrock\">\u003cmeta data-mint-head property=\"og:description\" content=\"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Finrock\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://apidocs.finrock.io/guides/cloud-signer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://finrock.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cloud+Signer+%28KMS%29\u0026amp;description=Deploy+the+Finrock+Cloud+Signer+%28KMS%29+Docker+container+on+your+own+infrastructure+to+sign+Legacy+and+MPC+wallet+transactions+locally+with+full+key+control.\u0026amp;theme=303f00c977b1c5bb32286452\u0026amp;signature=628dba74697265e24bf580d6f06cfed6156a1fb220ec0408abdcb5804b929a22\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Cloud Signer (KMS) - Finrock\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://finrock.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cloud+Signer+%28KMS%29\u0026amp;description=Deploy+the+Finrock+Cloud+Signer+%28KMS%29+Docker+container+on+your+own+infrastructure+to+sign+Legacy+and+MPC+wallet+transactions+locally+with+full+key+control.\u0026amp;theme=303f00c977b1c5bb32286452\u0026amp;signature=628dba74697265e24bf580d6f06cfed6156a1fb220ec0408abdcb5804b929a22\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/finrock/MCcXnkpjZeC08COI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Finrock\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F6921A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://apidocs.finrock.io/guides/cloud-signer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/cloud-signer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://apidocs.finrock.io/#organization\",\"name\":\"Finrock\",\"url\":\"https://apidocs.finrock.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/finrock/tGL-zbd_TCbsIV_S/images/Finrocklogo.png?fit=max\u0026auto=format\u0026n=tGL-zbd_TCbsIV_S\u0026q=85\u0026s=5ebb1db67970f798309dd7291873f2b7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://apidocs.finrock.io#website\",\"name\":\"Finrock\",\"url\":\"https://apidocs.finrock.io\",\"publisher\":{\"@id\":\"https://apidocs.finrock.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://apidocs.finrock.io/guides/cloud-signer#webpage\",\"url\":\"https://apidocs.finrock.io/guides/cloud-signer\",\"name\":\"Cloud Signer (KMS)\",\"description\":\"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\",\"dateModified\":\"2026-10-05T09:12:31.349Z\",\"isPartOf\":{\"@id\":\"https://apidocs.finrock.io#website\"},\"breadcrumb\":{\"@id\":\"https://apidocs.finrock.io/guides/cloud-signer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://apidocs.finrock.io/guides/cloud-signer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://apidocs.finrock.io/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cloud Signer (KMS)\",\"item\":\"https://apidocs.finrock.io/guides/cloud-signer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://apidocs.finrock.io/guides/cloud-signer#article\",\"headline\":\"Cloud Signer (KMS)\",\"name\":\"Cloud Signer (KMS)\",\"description\":\"Deploy the Finrock Cloud Signer (KMS) Docker container on your own infrastructure to sign Legacy and MPC wallet transactions locally with full key control.\",\"url\":\"https://apidocs.finrock.io/guides/cloud-signer\",\"mainEntityOfPage\":{\"@id\":\"https://apidocs.finrock.io/guides/cloud-signer#webpage\"},\"dateModified\":\"2026-10-05T09:12:31.349Z\",\"publisher\":{\"@id\":\"https://apidocs.finrock.io/#organization\"},\"isPartOf\":{\"@id\":\"https://apidocs.finrock.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Finrock\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Finrock\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/cloud-signer.md","siteName":"Finrock","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Finrock's non-custodial wallets","sidebarTitle":"Introduction","icon":{"name":"house","library":"lucide"},"href":""},{"title":"What are MPC Wallets?","sidebarTitle":"MPC Wallets","icon":{"name":"shield-check","library":"lucide"},"href":"/concepts/mpc-wallets"},{"title":"Key Features","sidebarTitle":"Key Features","icon":{"name":"sparkles","library":"lucide"},"href":"/concepts/key-features"},{"title":"Use Cases","sidebarTitle":"Use Cases","icon":{"name":"briefcase","library":"lucide"},"href":"/concepts/use-cases"}]},{"group":"Core Concepts","pages":[{"title":"Wallet Types","sidebarTitle":"Wallet Types","icon":{"name":"wallet","library":"lucide"},"href":"/concepts/wallet-types"},{"title":"Sub-Accounts: HD Wallets","sidebarTitle":"Sub-Accounts","icon":{"name":"network","library":"lucide"},"href":"/concepts/sub-accounts"},{"title":"Gas Tanks","sidebarTitle":"Gas Tanks","icon":{"name":"fuel","library":"lucide"},"href":"/concepts/gas-tanks"},{"title":"Omnibus vs Isolated Addresses","sidebarTitle":"Omnibus Wallets","icon":{"name":"layers","library":"lucide"},"href":"/concepts/omnibus-wallets"},{"title":"Prepaid Fee","sidebarTitle":"Prepaid Fee","icon":{"name":"receipt","library":"lucide"},"href":"/concepts/prepaid-fee"}]},{"group":"Guides","pages":[{"title":"API Access Key","sidebarTitle":"API Access Key","icon":{"name":"key-round","library":"lucide"},"href":"/quickstart"},{"title":"Whitelist IPs for API Keys","sidebarTitle":"Whitelist IPs","description":"Restrict each Finrock API key to specific IP addresses with the IP allowlist, either from the Help Center instructions or via a Finrock Support ticket.","icon":{"name":"list-checks","library":"lucide"},"href":"/guides/whitelist-ips"},{"title":"Cloud Signer (KMS)","sidebarTitle":"Cloud Signer (KMS)","icon":{"name":"server-cog","library":"lucide"},"href":"/guides/cloud-signer"},{"title":"Create Wallets and Deposit Addresses","sidebarTitle":"Wallets \u0026 Addresses","description":"Learn how to provision an MPC wallet for any supported asset and generate deposit addresses — both isolated and omnibus — using the Finrock API.","icon":{"name":"wallet","library":"lucide"},"href":"/guides/create-wallet-address"},{"title":"Send Crypto Transactions with the Finrock API","sidebarTitle":"Send Transaction","icon":{"name":"send","library":"lucide"},"href":"/guides/send-transaction"},{"title":"AML Compliance Screening","sidebarTitle":"AML Compliance","icon":{"name":"scan-search","library":"lucide"},"href":"/guides/aml-compliance"},{"title":"Ad-Hoc Addresses","sidebarTitle":"Ad-Hoc Addresses","icon":{"name":"map-pin","library":"lucide"},"href":"/guides/ad-hoc-addresses"},{"title":"Whitelist Withdrawal Addresses","sidebarTitle":"Whitelist Addresses","icon":{"name":"list-checks","library":"lucide"},"href":"/guides/whitelist-addresses"},{"title":"Control Withdrawals with Spending Rules","sidebarTitle":"Spending Rules","icon":{"name":"shield-check","library":"lucide"},"href":"/guides/spending-rules"},{"title":"Contract Addresses","sidebarTitle":"Contract Addresses","icon":{"name":"file-code","library":"lucide"},"href":"/guides/contract-addresses"},{"title":"Gas Fees","sidebarTitle":"Gas Fees","icon":{"name":"fuel","library":"lucide"},"href":"/reference/gas-fees"},{"title":"Embed the Finrock Payment Widget","sidebarTitle":"Payment Widget","icon":{"name":"credit-card","library":"lucide"},"href":"/guides/payment-widget"},{"title":"Accept Payments with Invoices","sidebarTitle":"Invoicing","icon":{"name":"receipt","library":"lucide"},"href":"/guides/invoicing"}]},{"group":"AI Agents","pages":[{"title":"Connect Claude to Finrock","sidebarTitle":"Connect Claude","icon":{"name":"bot","library":"lucide"},"href":"/guides/ai/connect-claude"}]},{"group":"Platform Reference","pages":[{"title":"Transaction Statuses","sidebarTitle":"Transaction Statuses","icon":{"name":"activity","library":"lucide"},"href":"/reference/transaction-statuses"},{"title":"Transaction Sources \u0026 Destinations","sidebarTitle":"Transaction Types","icon":{"name":"arrow-left-right","library":"lucide"},"href":"/reference/transaction-types"},{"title":"Spending Rule Values","sidebarTitle":"Spending Rule Values","icon":{"name":"list-checks","library":"lucide"},"href":"/reference/spending-rule-values"},{"title":"Supported Blockchain \u0026 Coins","sidebarTitle":"Supported Assets","icon":{"name":"coins","library":"lucide"},"href":"/reference/supported-assets"},{"title":"API Rate Limits","sidebarTitle":"API Rate Limits","icon":{"name":"gauge","library":"lucide"},"href":"/reference/api-rate-limits"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]}]},"basePath":"","title":"Cloud Signer (KMS) - Finrock","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}