{"id":2801,"date":"2026-06-06T15:03:01","date_gmt":"2026-06-06T15:03:01","guid":{"rendered":"https:\/\/edwardramos.com\/?p=2801"},"modified":"2026-05-21T15:03:55","modified_gmt":"2026-05-21T15:03:55","slug":"notes-from-setting-up-my-first-digitalocean-wordpress-server","status":"publish","type":"post","link":"https:\/\/edwardramos.com\/index.php\/2026\/06\/06\/notes-from-setting-up-my-first-digitalocean-wordpress-server\/","title":{"rendered":"Notes From Setting Up My First DigitalOcean WordPress Server"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I wanted to move my personal website from AWS Lightsail to a new VPS, I wanted to leverage a server I am using for other projects and save some money.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I set up WordPress on a DigitalOcean server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That sounds cleaner than it felt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The actual process was a mix of SSH keys, Ubuntu updates, Apache, MySQL, PHP, WordPress files, DNS records, firewall rules, database settings, browser timeouts, and a few moments where nothing appeared to be happening and I had to figure out whether the issue was the server, the network, the firewall, or me.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That was the useful part.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is easy to forget that websites are not magic. They are stacks of decisions. A domain points somewhere. A server listens on a port. A firewall allows or blocks traffic. A web server responds. A database connects. A configuration file has to match the credentials you created. One wrong value and the whole thing looks broken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I ran into that quickly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSH worked once the right key was in the right place. Apache worked once the firewall allowed traffic. WordPress worked once the database settings lined up. DNS worked once it had time to point at the new IP. None of it was impossible, but none of it was automatic either.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is what I liked about it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I could have used a simpler hosted setup. There is nothing wrong with that. But I wanted to understand what was underneath. I wanted to know what an Ubuntu server looked like, how WordPress actually landed in <code>\/var\/www\/html<\/code>, what Apache was doing, why MySQL mattered, and how DNS and firewalls could make a working site look dead from the outside.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is a particular kind of confidence that comes from fixing the thing yourself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not expert confidence. Not \u201cI know everything now\u201d confidence. More like, \u201cI know enough to keep going.\u201d That is a good feeling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This site is still simple, but it&#8217;s been around for years and I expect to keep around for many more. This project felt good. Not because I wrote every line of code, but because I touched the pieces. I saw the errors. I made the server respond. I connected the domain. I got WordPress running.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That matters to me.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A personal website is not just a place to publish. It can also be a place to learn in public, document the process, and leave a trail for your future self.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So this is one note in that trail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And the next time something breaks, at least I will have a better idea where to start.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I wanted to move my personal website from AWS Lightsail to a new VPS, I wanted to leverage a server I am using for other projects and save some money. So I set up WordPress on a DigitalOcean server. That sounds cleaner than it felt. The actual process was a mix of SSH keys, Ubuntu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2801","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/posts\/2801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/comments?post=2801"}],"version-history":[{"count":1,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/posts\/2801\/revisions"}],"predecessor-version":[{"id":2802,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/posts\/2801\/revisions\/2802"}],"wp:attachment":[{"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/media?parent=2801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/categories?post=2801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/edwardramos.com\/index.php\/wp-json\/wp\/v2\/tags?post=2801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}