{"id":63,"date":"2026-10-08T10:55:37","date_gmt":"2026-10-08T10:55:37","guid":{"rendered":"https:\/\/www.glencoulson.com\/?p=63"},"modified":"2026-10-08T11:00:40","modified_gmt":"2026-10-08T11:00:40","slug":"simple-update-because-updating-a-server-shouldnt-crash-it","status":"publish","type":"post","link":"https:\/\/www.glencoulson.com\/index.php\/2026\/10\/08\/simple-update-because-updating-a-server-shouldnt-crash-it\/","title":{"rendered":"Simple Update: Because Updating a Server Shouldn&#8217;t Crash It"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">I run several websites and applications on small instances in cloud infrastructure. For the most part, everything works pretty well. But I kept running into one problem that drove me nuts: <strong>updating the server could freeze the entire machine.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I use Webmin to manage my Ubuntu servers. It&#8217;s a great tool, but using its normal software updater on my production server became a gamble. Sometimes things worked, and sometimes the server would become unresponsive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s not something I want happening to a production server hosting live websites.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why I Built Simple Update<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I didn&#8217;t need another complicated update manager. I just wanted a way to run two basic Linux commands:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>apt update<\/code> \u2014 checks which software updates are available.<\/li>\n\n\n\n<li><code>apt upgrade<\/code> \u2014 installs available updates without automatically removing packages or making more aggressive dependency changes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it. No fancy update engine, no unnecessary background services, and no reinventing how Ubuntu manages software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I built <strong>Simple Update<\/strong>, a lightweight Webmin module that puts those commands behind a couple of buttons.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Simple Update Does<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With version <strong>1.0.15<\/strong>, Simple Update provides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Check for Updates<\/strong> \u2014 checks for available Ubuntu package updates.<\/li>\n\n\n\n<li><strong>Install Updates<\/strong> \u2014 installs available updates using APT.<\/li>\n\n\n\n<li><strong>Loading Indicators<\/strong> \u2014 spinning indicators show when an operation is underway.<\/li>\n\n\n\n<li><strong>Button Protection<\/strong> \u2014 prevents accidentally launching the same operation multiple times.<\/li>\n\n\n\n<li><strong>Command Output<\/strong> \u2014 displays the results of the update process.<\/li>\n\n\n\n<li><strong>Held-Back Packages<\/strong> \u2014 shows packages that weren&#8217;t upgraded.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Everything runs from inside Webmin, keeping routine server maintenance in one place.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Not Just Use the Command Line?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I can, and I do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately, my cloud provider makes SSH access more complicated than it needs to be. Between authentication, keys, and connection requirements, accessing my servers is really only comfortable when I&#8217;m sitting at home with my laptop or desktop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That doesn&#8217;t fit very well with a more mobile lifestyle. Sometimes I&#8217;m away from home with nothing but my phone, and I still want to be able to perform basic server maintenance without jumping through a bunch of hoops just to get a command prompt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Webmin already gives me a browser-based way to manage my servers. Simple Update puts routine software maintenance right there, whether I&#8217;m sitting at my desk or checking in from my phone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More importantly, I wanted something straightforward that didn&#8217;t try to be smarter than the operating system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes software doesn&#8217;t need another dozen features. Sometimes it just needs to do one job, do it predictably, and stay out of the way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>That&#8217;s why I made Simple Update.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I run several websites and applications on small instances in cloud infrastructure. For the most part, everything works pretty well. But I kept running into one problem that drove me nuts: updating the server could freeze the entire machine. I use Webmin to manage my Ubuntu servers. It&#8217;s a great tool, but using its normal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":66,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-63","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":3,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":67,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/posts\/63\/revisions\/67"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/media\/66"}],"wp:attachment":[{"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/media?parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/categories?post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glencoulson.com\/index.php\/wp-json\/wp\/v2\/tags?post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}