1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[385],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},u=Object.keys(e);for(a=0;a<u.length;a++)n=u[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(a=0;a<u.length;a++)n=u[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,u=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=i(n),m=r,g=d["".concat(s,".").concat(m)]||d[m]||c[m]||u;return n?a.createElement(g,o(o({ref:t},p),{},{components:n})):a.createElement(g,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var u=n.length,o=new Array(u);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var i=2;i<u;i++)o[i]=n[i];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},5162:function(e,t,n){n.d(t,{Z:function(){return o}});var a=n(7294),r=n(6010),u="tabItem_Ymn6";function o(e){var t=e.children,n=e.hidden,o=e.className;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(u,o),hidden:n},t)}},4866:function(e,t,n){n.d(t,{Z:function(){return w}});var a=n(7462),r=n(7294),u=n(6010),o=n(2466),l=n(265),s=n(1980),i=n(7392),p=n(12);function c(e){return function(e){var t,n;return null!=(t=null==(n=r.Children.map(e,(function(e){if(!e||(0,r.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;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.')}
1)))?void 0:n.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function d(e){var t=e.values,n=e.children;return(0,r.useMemo)((function(){var e=null!=t?t:c(n);return function(e){var t=(0,i.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in <Tabs>. Every value needs to be unique.')}(e),e}),[t,n])}function m(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function g(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId,u=(0,l.k6)(),o=function(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)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 null!=a?a:null}({queryString:n,groupId:a});return[(0,s._X)(o),(0,r.useCallback)((function(e){if(o){var t=new URLSearchParams(u.location.search);t.set(o,e),u.replace(Object.assign({},u.location,{search:t.toString()}))}}),[o,u])]}function f(e){var t,n,a,u,o=e.defaultValue,l=e.queryString,s=void 0!==l&&l,i=e.groupId,c=d(e),f=(0,r.useState)((function(){return function(e){var t,n=e.defaultValue,a=e.tabValues;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!m({value:n,tabValues:a}))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+n+'" but none of its children has the corresponding value. Available values are: '+a.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return n}var r=null!=(t=a.find((function(e){return e.default})))?t:a[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:o,tabValues:c})})),b=f[0],v=f[1],k=g({queryString:s,groupId:i}),h=k[0],y=k[1],N=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:i}.groupId),n=(0,p.Nk)(t),a=n[0],u=n[1],[a,(0,r.useCallback)((function(e){t&&u.set(e)}),[t,u])]),w=N[0],x=N[1],O=function(){var e=null!=h?h:w;return m({value:e,tabValues:c})?e:null}();return(0,r.useLayoutEffect)((function(){O&&v(O)}),[O]),{selectedValue:b,selectValue:(0,r.useCallback)((function(e){if(!m({value:e,tabValues:c}))throw new Error("Can't select invalid tab value="+e);
1v(e),y(e),x(e)}),[y,x,c]),tabValues:c}}var b=n(2389),v="tabList__CuJ",k="tabItem_LNqP";function h(e){var t=e.className,n=e.block,l=e.selectedValue,s=e.selectValue,i=e.tabValues,p=[],c=(0,o.o5)().blockElementScrollPositionUntilNextRender,d=function(e){var t=e.currentTarget,n=p.indexOf(t),a=i[n].value;a!==l&&(c(t),s(a))},m=function(e){var t,n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":var a,r=p.indexOf(e.currentTarget)+1;n=null!=(a=p[r])?a:p[0];break;case"ArrowLeft":var u,o=p.indexOf(e.currentTarget)-1;n=null!=(u=p[o])?u:p[p.length-1]}null==(t=n)||t.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,u.Z)("tabs",{"tabs--block":n},t)},i.map((function(e){var t=e.value,n=e.label,o=e.attributes;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:function(e){return p.push(e)},onKeyDown:m,onClick:d},o,{className:(0,u.Z)("tabs__item",k,null==o?void 0:o.className,{"tabs__item--active":l===t})}),null!=n?n:t)})))}function y(e){var t=e.lazy,n=e.children,a=e.selectedValue,u=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){var o=u.find((function(e){return e.props.value===a}));return o?(0,r.cloneElement)(o,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},u.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})})))}function N(e){var t=f(e);return r.createElement("div",{className:(0,u.Z)("tabs-container",v)},r.createElement(h,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function w(e){var t=(0,b.Z)();return r.createElement(N,(0,a.Z)({key:String(t)},e))}},2369:function(e,t,n){n.r(t),n.d(t,{assets:function(){return d},contentTitle:function(){return p},default:function(){return f},frontMatter:function(){return i},metadata:function(){return c},toc:function(){return m}});var a=n(7462),r=n(3366),u=(n(7294),n(3905)),o=n(4866),l=n(5162),s=["components"],i={id:"upgrade-linux",title:"Upgrade Linux OS on VPS",sidebar_label:"Upgrade Linux OS",description:"How to safely upgrade your Linux VPS operating system including Ubuntu, Debian, and CentOS.",keywords:["upgrade linux","update os","ubuntu do-release-upgrade","debian dist-upgrade","centos update"]},p="How to Upgrade Your Linux VPS OS",c={unversionedId:"vps-tutorials/upgrade-linux",id:"vps-tutorials/upgrade-linux",title:"Upgrade Linux OS on VPS",description:"How to safely upgrade your Linux VPS operating system including Ubuntu, Debian, and CentOS.",source:"@site/docs/vps-tutorials/upgrade-linux.mdx",sourceDirName:"vps-tutorials",slug:"/vps-tutorials/upgrade-linux",permalink:"/docs/vps-tutorials/upgrade-linux",draft:!1,editUrl:"https://github.com/facebook/docusaurus/edit/master/website/docs/vps-tutorials/upgrade-linux.mdx",tags:[],version:"current",lastUpdatedBy:"Privy",lastUpdatedAt:1770369049,formattedLastUpdatedAt:"Feb 6, 2026",frontMatter:{id:"upgrade-linux",title:"Upgrade Linux OS on VPS",sidebar_label:"Upgrade Linux OS",description:"How to safely upgrade your Linux VPS operating system including Ubuntu, Debian, and CentOS.",keywords:["upgrade linux","update os","ubuntu do-release-upgrade","debian dist-upgrade","centos update"]},sidebar:"mySidebar",previous:{title:"Install MySQL",permalink:"/docs/vps-tutorials/install-mysql"},next:{title:"Host Laravel App",permalink:"/docs/vps-tutorials/hosting-laravel"}},d={},m=[{value:"Upgrade Instructions",id:"upgrade-instructions",level:2},{value:"Ubuntu (e.g., 20.04 to 22.04)",id:"ubuntu-eg-2004-to-2204",level:3},{value:"Debian (e.g., 10 to 11)",id:"debian-eg-10-to-11",level:3},{value:"CentOS / AlmaLinux / RHEL",id:"centos--almalinux--rhel",level:3},{value:"ELevate (Experimental)",id:"elevate-experimental",level:4},{value:"Post-Upgrade Verification",id:"post-upgrade-verification",level:2}],g={toc:m};function f(e){var t=e.components,n=(0,r.Z)(e,s);return(0,u.kt)("wrapper",(0,a.Z)({},g,n,{components:t,mdxType:"MDXLayout"}),(0,u.kt)("h1",{id:"how-to-upgrade-your-linux-vps-os"},"How to Upgrade Your Linux VPS OS"),(0,u.kt)("p",null,"Keeping your operating system up to date is vital for security and performance. This guide covers how to upgrade common Linux distributions."),(0,u.kt)("blockquote",null,(0,u.kt)("p",{parentName:"blockquote"},"[!CAUTION]","\n",(0,u.kt)("strong",{parentName:"p"},"Take a Backup or Snapshot BEFORE Proceeding!"),"\nOS upgrades can sometimes go wrong. Ensure you have a recent snapshot of your VPS from your hosting control panel before running these commands.")),(0,u.kt)("h2",{id:"upgrade-instructions"},"Upgrade Instructions"),(0,u.kt)(o.Z,{defaultValue:"ubuntu",values:[{label:"Ubuntu",value:"ubuntu"},{label:"Debian",value:"debian"},{label:"CentOS / AlmaLinux",value:"centos"}],mdxType:"Tabs"},(0,u.kt)(l.Z,{value:"ubuntu",mdxType:"TabItem"},(0,u.kt)("h3",{id:"ubuntu-eg-2004-to-2204"},"Ubuntu (e.g., 20.04 to 22.04)"),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"1. Update current packages:")),(0,u.kt)("pre",null,(0,u.kt)("c
1ode",{parentName:"pre",className:"language-bash"},"sudo apt update && sudo apt upgrade -y\nsudo apt dist-upgrade -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"2. Clean up:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt autoremove -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"3. Install the update manager core:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt install update-manager-core -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"4. Start the upgrade tool:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo do-release-upgrade\n")),(0,u.kt)("p",null,(0,u.kt)("em",{parentName:"p"},"If no new release is found, but you know one exists (e.g. searching for LTS), try ",(0,u.kt)("inlineCode",{parentName:"em"},"sudo do-release-upgrade -d")," if testing.")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"5. Follow the on-screen prompts."),"\nYou will likely need to confirm several times and decide whether to keep or replace modified config files (defaulting to keep is usually safer unless you know what changed)."),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"6. Reboot:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo reboot\n"))),(0,u.kt)(l.Z,{value:"debian",mdxType:"TabItem"},(0,u.kt)("h3",{id:"debian-eg-10-to-11"},"Debian (e.g., 10 to 11)"),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"1. Update current system:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt update && sudo apt upgrade -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"2. Update ",(0,u.kt)("inlineCode",{parentName:"strong"},"sources.list"),":"),"\nEdit ",(0,u.kt)("inlineCode",{parentName:"p"},"/etc/apt/sources.list")," and replace the codename. For example, change ",(0,u.kt)("inlineCode",{parentName:"p"},"buster")," (Debian 10) to ",(0,u.kt)("inlineCode",{parentName:"p"},"bullseye")," (Debian 11)."),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/apt/sources.list\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"3. Update package lists:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt update\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"4. Perform minimal upgrade:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt upgrade --without-new-pkgs -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"5. Perform full distribution upgrade:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt full-upgrade -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"6. Reboot:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo reboot\n"))),(0,u.kt)(l.Z,{value:"centos",mdxType:"TabItem"},(0,u.kt)("h3",{id:"centos--almalinux--rhel"},"CentOS / AlmaLinux / RHEL"),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"CentOS 7 to 8/9"),": Major version upgrades in the RHEL world (e.g., CentOS 7 to 8) are generally ",(0,u.kt)("strong",{parentName:"p"},"not recommended")," or supported in place. It is cleaner to spin up a new VPS with the newer OS and migrate your data."),(0,u.kt)("p",null,"However, for ",(0,u.kt)("strong",{parentName:"p"},"minor updates")," (e.g., 8.4 to 8.5):"),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"1. Check for updates:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo dnf check-update\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"2. Run the update:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo dnf update -y\n")),(0,u.kt)("p",null,(0,u.kt)("strong",{parentName:"p"},"3. Reboot:")),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo reboot\n")),(0,u.kt)("h4",{id:"elevate-experimental"},"ELevate (Experimental)"),(0,u.kt)("p",null,"For migrating between RHEL derivatives (e.g., CentOS 7 to AlmaLinux 8), you can look into the ",(0,u.kt)("strong",{parentName:"p"},"ELevate")," project, but use with extreme caution on production servers."))),(0,u.kt)("h2",{id:"post-upgrade-verification"},"Post-Upgrade Verification"),(0,u.kt)("p",null,"After rebooting, check your OS version:"),(0,u.kt)("pre",null,(0,u.kt)("c
1ode",{parentName:"pre",className:"language-bash"},"# Ubuntu / Debian / CentOS\ncat /etc/os-release\n")),(0,u.kt)("p",null,"Ensure your services (Web server, partial database) are running:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl status apache2\n# or\nsudo systemctl status mysqld\n")))}f.isMDXComponent=!0}}]);
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.