PageSourceSearch

https://www.civo.com/docs/assets/js/94188535.b72ea6e3.js

js civo.com collected 2026-10-02 04:01:43 UTC 19,636 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkcivo_documentation=self.webpackChunkcivo_documentation||[]).push([[2190],{1470:(e,n,i)=>{i.d(n,{A:()=>w});var t=i(6540),s=i(8215),a=i(7559),r=i(3104),o=i(6347),c=i(205),l=i(7485),d=i(1682),u=i(9466);function m(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:i}=e;return(0,t.useMemo)((()=>{const e=n??function(e){return m(e).map((({props:{value:e,label:n,attributes:i,default:t}})=>({value:e,label:n,attributes:i,default:t})))}(i);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,i])}function g({value:e,tabValues:n}){return n.some((n=>n.value===e))}function p({queryString:e=!1,groupId:n}){const i=(0,o.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,t.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(i.location.search);n.set(s,e),i.replace({...i.location,search:n.toString()})}),[s,i])]}function b(e){const{defaultValue:n,queryString:i=!1,groupId:s}=e,a=h(e),[r,o]=(0,t.useState)((()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!g({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const i=n.find((e=>e.default))??n[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:a}))),[l,d]=p({queryString:i,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[i,s]=(0,u.Dv)(n);return[i,(0,t.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:s}),x=(()=>{const e=l??m;return g({value:e,tabValues:a})?e:null})();(0,c.A)((()=>{x&&o(x)}),[x]);return{selectedValue:r,selectValue:(0,t.useCallback)((e=>{if(!g({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var x=i(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=i(4848);function f({className:e,block:n,selectedValue:i,selectValue:t,tabValues:a}){const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),l=e=>{const n=e.currentTarget,s=o.indexOf(n),r=a[s].value;r!==i&&(c(n),t(r))},d=e=>{let n=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const i=o.indexOf(e.currentTarget)+1;n=o[i]??o[0];break}case"ArrowLeft":{const i=o.indexOf(e.currentTarget)-1;n=o[i]??o[o.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:a.map((({value:e,label:n,attributes:t})=>(0,j.jsx)("li",{role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,ref:e=>{o.push(e)},onKeyDown:d,onClick:l,...t,className:(0,s.A)("tabs__item",v.tabItem,t?.className,{"tabs__item--active":i===e}),children:n??e},e)))})}function k({lazy:e,children:n,selectedValue:i}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find((e=>e.props.value===i));return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=b(e);return(0,j.jsxs)("div",{className:(0,s.A)(a.G.tabs.container,"tabs-container",v.tabList),
1children:[(0,j.jsx)(f,{...n,...e}),(0,j.jsx)(k,{...n,...e})]})}function w(e){const n=(0,x.A)();return(0,j.jsx)(y,{...e,children:m(e.children)},String(n))}},5794:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"compute/custom-image","title":"Custom disk images","description":"Learn how to upload and manage your own custom disk images for CivoStack Enterprise private region instances using the Civo CLI.","source":"@site/content/docs/compute/custom-image.md","sourceDirName":"compute","slug":"/compute/custom-image","permalink":"/docs/compute/custom-image","draft":false,"unlisted":false,"editUrl":"https://git.civo.com/civo/compute/public-docs/-/edit/main/content/docs/compute/custom-image.md","tags":[],"version":"current","lastUpdatedAt":null,"sidebarPosition":7,"frontMatter":{"sidebar_position":7,"title":"Custom disk images","description":"Learn how to upload and manage your own custom disk images for CivoStack Enterprise private region instances using the Civo CLI."},"sidebar":"mainSidebar","previous":{"title":"Activating Civo statistics monitoring","permalink":"/docs/compute/activating-civo-statistics-monitoring"},"next":{"title":"Installing Nvidia drivers on GPU instances running Ubuntu","permalink":"/docs/compute/gpu-instance-drivers-ubuntu"}}');var s=i(4848),a=i(8453),r=i(1470),o=i(9365);const c={sidebar_position:7,title:"Custom disk images",description:"Learn how to upload and manage your own custom disk images for CivoStack Enterprise private region instances using the Civo CLI."},l=void 0,d={},u=[{value:"Overview",id:"overview",level:2},{value:"Creating a custom disk image",id:"creating-a-custom-disk-image",level:2},{value:"Available parameters for creation",id:"available-parameters-for-creation",level:3},{value:"Checking disk image status",id:"checking-disk-image-status",level:2},{value:"Understanding disk image states",id:"understanding-disk-image-states",level:3},{value:"Listing custom disk images",id:"listing-custom-disk-images",level:2},{value:"Deleting custom disk images",id:"deleting-custom-disk-images",level:2},{value:"Creating instances using custom disk images",id:"creating-instances-using-custom-disk-images",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Upload expired or error state",id:"upload-expired-or-error-state",level:3}];function m(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components},{Head:i}=n;return i||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Head",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i,{children:(0,s.jsx)("title",{children:"Use Custom Disk Images | Civo Documentation"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"These features are only available on CivoStack Enterprise regions, and are made available by request"})}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsx)(n.p,{children:"Custom disk images allow you to use your own operating system images when creating Civo instances. This feature is useful when you need to:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Use specialized operating systems not provided by Civo"}),"\n",(0,s.jsx)(n.li,{children:"Create instances with pre-configured applications and settings"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"creating-a-custom-disk-image",children:"Creating a custom disk image"}),"\n",(0,s.jsx)(r.A,{groupId:"create-diskimage",children:(0,s.jsxs)(o.A,{value:"cli",label:"Civo CLI",children:[(0,s.jsxs)(n.p,{children:["Once the feature is enabled on your CivoStack Enterprise region, you can create a new custom disk image by using the ",(0,s.jsx)(n.code,{children:"civo diskimage create"})," command:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$ civo diskimage create --name ubuntuimage \\\n                       --distribution ubuntu \\\n                       --version 22.04 \\\n                       --path ./disk.raw \\\n                       --os linux \\\n                       -- logo_path ./logo.svg\nUploading disk image... 100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| (19/19 B, 14 B/s)\n+--------------------------------------+------------------------------+--------+\n| id                                   | name                         | status |\n+--------------------------------------+------------------------------+--------+\n| a3721853-f976-49fd-83e4-1b7f48ecdb58 | cust-ubuntuimage-148ee-wrodm |        |\n+--------------------------------------+------------------------------+--------+\n"})}),(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["The name is modified and prefixed with ",(0,s.jsx)(n.code,{children:"cust-"})," once created to distinguish custom images from system images provided by Civo ."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.code,{children:"civo diskimage create"})," command does ",(0,s.jsx)(n.strong,{children:"both"})," the image record creation ",(0,s.jsx)(n.strong,{children:"and"})," the file upload in one step\u2014you don\u2019t need to call a separate \u201cupload\u201d command."]}),"\n"]})}),(0,s.jsx)(n.p,{children:"By default, the image is created in your currently-selected regi
1on."}),(0,s.jsxs)(n.p,{children:["You can see all available options for disk image creation on the CLI by running ",(0,s.jsx)(n.code,{children:"civo diskimage create --help"}),"."]})]})}),"\n",(0,s.jsx)(n.h3,{id:"available-parameters-for-creation",children:"Available parameters for creation"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--name"})}),(0,s.jsx)(n.td,{children:"Name of the disk image (required)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--distribution"})}),(0,s.jsx)(n.td,{children:'OS distribution (e.g., "ubuntu", "centos") (required)'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--version"})}),(0,s.jsx)(n.td,{children:"Version of the operating system (required)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--path"})}),(0,s.jsx)(n.td,{children:"Path to the disk image file (.raw or .qcow2 , max 600 GB) (required)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"--os"})," (optional)"]}),(0,s.jsx)(n.td,{children:'Operating system type (defaults to "linux", can be "windows")'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"--logo_path"})," (optional )"]}),(0,s.jsx)(n.td,{children:"Path to your logo file (SVG format, max 5 MB)"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"checking-disk-image-status",children:"Checking disk image status"}),"\n",(0,s.jsx)(r.A,{groupId:"check-diskimage",children:(0,s.jsxs)(o.A,{value:"cli",label:"Civo CLI",children:[(0,s.jsx)(n.p,{children:"After uploading an image, it goes through several processing stages. You can check the status of your disk image with:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$ civo diskimage show cust-ubuntuimage-148ee-wrodm\n                     ID : a3721853-f976-49fd-83e4-1b7f48ecdb58\n                   Name : cust-ubuntuimage-148ee-wrodm\n                Version : 22.04\n                  State : available\n           Distribution : ubuntu\n           Initial User : ubuntu\n                     OS : linux\n            Description : ubuntu\n                  Label :\n         Disk Image URL : https://objectstore.myregion.civo.com/cust-diskimages/disk-images/cust-ubuntuimage-148ee-wrodm/disk.raw?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ULZKAJLTLGBCBJCSPWXE%2F20250423%2Fmyregion%2Fs3%2Faws4_request&X-Amz-Date=20250423T135659Z&X-Amz-Expires=12000&X-Amz-SignedHeaders=content-length%3Bhost&x-id=PutObject&X-Amz-Signature=fd52d1fe1f58df870c60bbb3df649a7197417804b5db2dbc7557d9023d84\nDisk Image Size (bytes) : 536870912\n               Logo URL :\n             Created At : 2025-04-23 13:56:59 +0000 UTC\n             Created By : 77f454ca-45f8-4dc8-965e-ee2c9dfb09b8\n   Distribution Default : false\n\n"})})]})}),"\n",(0,s.jsx)(n.h3,{id:"understanding-disk-image-states",children:"Understanding disk image states"}),"\n",(0,s.jsx)(n.p,{children:"The disk image states include:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"upload_pending"}),": Initial state after creation, awaiting upload"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"upload_completed"}),": Upload finished, MD5 checksum verified"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"pending"}),": Image is being processed for distribution"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"available"}),": Image is ready to use for creating instances"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"upload_expired"}),": Upload not completed within 200 minutes (images in this state ",(0,s.jsx)(n.strong,{children:"cannot"})," be used to create instances; delete and retry)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"error"}),": Issue with upload or processing"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Only images in the ",(0,s.jsx)(n.strong,{children:"available"})," state can be used to create instances."]})}),"\n",(0,s.jsx)(n.h2,{id:"listing-custom-disk-images",children:"Listing custom disk images"}),"\n",(0,s.jsx)(r.A,{groupId:"list-diskimage",children:(0,s.jsxs)(o.A,{value:"cli",label:"Civo CLI",children:[(0,s.jsx)(n.p,{children:"To see all your custom disk images:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$ civo diskimage list --custom\n+--------------------------------------+--------------------------------+----------+-----------+--------------+\n| ID                                   | Name                           | Version  | State     | Distribution |\n+--------------------------------------+--------------------------------+----------+-----------+--------------+\n| a3721853-f976-49fd-83e4-1b7f48ecdb58 | cust-ubuntuimage-148ee-wrodm   |    22.04 | available | ubuntu       |\n+--------------------------------------+--------------------------------+----------+-----------+--------------+\n"})}),(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"--custom"})," flag filters the list to show only your custom uploaded disk images, excluding system images."]}),(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Since custom disk images are region-s
1pecific , you can also specify a region with the ",(0,s.jsx)(n.code,{children:"--region"})," flag."]})})]})}),"\n",(0,s.jsx)(n.h2,{id:"deleting-custom-disk-images",children:"Deleting custom disk images"}),"\n",(0,s.jsx)(r.A,{groupId:"delete-diskimage",children:(0,s.jsxs)(o.A,{value:"cli",label:"Civo CLI",children:[(0,s.jsx)(n.p,{children:"To delete a custom disk image:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$  civo diskimage delete cust-ubuntuimage-148ee-wrodm\n+------------------------------+---------+\n| Disk image                   | Result  |\n+------------------------------+---------+\n| cust-ubuntuimage-148ee-wrodm | deleted |\n+------------------------------+---------+\n"})})]})}),"\n",(0,s.jsx)(n.h2,{id:"creating-instances-using-custom-disk-images",children:"Creating instances using custom disk images"}),"\n",(0,s.jsx)(r.A,{groupId:"use-diskimage",children:(0,s.jsxs)(o.A,{value:"cli",label:"Civo CLI",children:[(0,s.jsxs)(n.p,{children:["Once your custom disk image is in the ",(0,s.jsx)(n.strong,{children:"available"})," state, you can use it to create new instances:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$ civo instance create --hostname custom-instance \\\n                     --size g3.small \\\n                     --diskimage cust-ubuntuimage-148ee-wrodm\nCreated instance custom-instance with ID 58a9b7f2-5d12-46ab-9e97-b3d24c32cc2a\n"})})]})}),"\n",(0,s.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,s.jsx)(n.h3,{id:"upload-expired-or-error-state",children:"Upload expired or error state"}),"\n",(0,s.jsx)(n.p,{children:"If your upload window expired, or the image is in an error state:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-console",children:"$ civo diskimage show cust-ubuntuimage-148ee-wrodm\n                ID : 8a76ec9c-ef94-4d21-90a5-b48fc6d4fee2\n              Name : cust-ubuntuimage-148ee-wrodm\n      Distribution : ubuntu\n           Version : 22.04\n                OS : linux\n             State : upload_expired\n         Image URL : https://objectstore.myregion.civo.com/disk-images/my-ubuntu-image/disk.raw?X-Amz-Algorithm=AWS4-HMAC-SHA256&SignedHeaders=host&x-id=PutObject&X-Amz-Signature=8a7d32f...\n          Logo URL : https://objectstore.myregion.civo.com/disk-images/my-ubuntu-image/logo.svg\n       Image Size : 2.5 GB\n        Created At : 2023-04-07T15:22:18Z\n        Created By : 90a5-b48fc6d4fee2-8a76ec9\n"})}),"\n",(0,s.jsx)(n.p,{children:"This typically happens when:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Your internet connection was unstable during upload"}),"\n",(0,s.jsx)(n.li,{children:"The file is too large to upload within the 15-minute window"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Please try uploading again after deleting the previous attempt. You may also want to use a smaller image or switch to a more stable internet connection"})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>o});var t=i(6540);const s={},a=t.createContext(s);function r(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(a.Provider,{value:n},e.children)}},9365:(e,n,i)=>{i.d(n,{A:()=>r});i(6540);var t=i(8215);const s={tabItem:"tabItem_Ymn6"};var a=i(4848);function r({children:e,hidden:n,className:i}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,i),hidden:n,children:e})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.