October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Get Started With Jekyll on an Ubuntu VPS

A complete Ubuntu VPS workflow for Jekyll: install Ruby and prerequisites, create and lock a project, build the _site artifact, configure Nginx, and secure the domain with Let’s Encrypt.
Length9 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The reliable Ubuntu VPS workflow is: install Ruby and Jekyll’s build prerequisites, create a project with a Gemfile, build it with Bundler, and let Nginx serve the generated _site directory. Jekyll’s development server is for previewing; a production VPS normally serves the finished static files instead of running jekyll serve continuously.

You will need an Ubuntu server account with sudo access and SSH, plus a domain name when you are ready to publish publicly. The procedure below covers installation, local preview, reproducible builds, Nginx, DNS, HTTPS, and the main failure modes.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What Jekyll does on a VPS

Jekyll is a Ruby static-site generator. It takes Markdown content, Liquid templates, layouts, configuration, and assets, then renders a complete static website. The output consists of ordinary files such as HTML, CSS, JavaScript, and images. Because those files do not require a database or application runtime for each request, Nginx can deliver them directly.

That separation is the key to a clean deployment:

  1. You edit the source tree, including posts, layouts, includes, configuration, and assets.
  2. Bundler loads the gem versions recorded for the project.
  3. bundle exec jekyll build renders the site into _site.
  4. Nginx uses _site as its document root and serves the generated files.

Keep the source checkout and its dependency files separate from the public document root when possible. Publishing only generated output reduces the chance of exposing drafts, configuration, or development files.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

Decide whether a VPS is the right host

A VPS gives you control over the operating system, web server, deployment process, firewall, and domain configuration. That control is useful if you need custom Nginx rules, background services, private build steps, or a conventional Linux administration environment. It also means you are responsible for updates, backups, monitoring, and recovery.

Repository-managed hosting is an alternative when you want the hosting platform to build and publish a Jekyll repository. GitHub Pages documents deployment from a branch or from a custom GitHub Actions workflow. It removes most server administration, but it has platform-specific build and plugin restrictions and gives you less control over server processes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Decision point Ubuntu VPS GitHub Pages
Operating-system access SSH and sudo access; you manage packages and services. No general-purpose server shell; the platform manages the host.
Build location Your checkout or deployment job runs bundle exec jekyll build. Builds from a repository branch or a GitHub Actions workflow.
Web server You configure Nginx and choose the document root. The hosting service serves the published Pages artifact.
Plugins and dependencies You can install the gems your project and Ruby version support. Builds must follow GitHub Pages’ supported environment, or you must build with Actions.
Domain and TLS You configure DNS and obtain certificates, commonly with Certbot and Let’s Encrypt. Domain and certificate behavior follows GitHub’s Pages settings and workflow.
Server-side processes Possible because you administer the VPS, although Jekyll itself still produces static files. Not available as a general VPS process.

For the VPS route, compare candidate servers by SSH and sudo availability, Ubuntu image support, CPU and storage headroom, backup options, IPv4 and IPv6, firewall controls, and support quality. Provider pricing and plan limits vary and are not intrinsic Jekyll requirements.

Prepare the Ubuntu VPS

Connect over SSH with an ordinary account that can use sudo. Avoid doing routine work as root; using a separate administrative account makes file ownership and recovery easier.

  • Use a supported Ubuntu installation with package management available through apt.
  • Make sure the account can install packages and create files under the directory you will publish.
  • Choose a working directory for the source checkout, such as a private directory under your account or a deployment path under /srv.
  • For a public site, plan the domain name and the DNS records before requesting a certificate.

Jekyll’s Ubuntu installation guidance requires Ruby, a compiler toolchain, and zlib development headers. Update the package index and install them with:

sudo apt-get update
sudo apt-get install ruby-full build-essential zlib1g-dev

Jekyll’s guide recommends a user-local Ruby gem directory so gems do not go into the system Ruby path. Use the shell-profile snippet from the current Jekyll Ubuntu guide for your account, reload the profile as instructed, and then install Jekyll and Bundler:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
gem install jekyll bundler

The profile details can differ between shells and Ubuntu releases, so copy that portion from the current guide rather than assuming a particular PATH line. The important outcome is that the account can invoke the installed jekyll and bundle commands without writing gems into the operating system’s managed directories.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Create a site and preview it

Use Jekyll’s project generator, install the project dependencies, and start the development server through Bundler:

jekyll new my-site
cd my-site
bundle install
bundle exec jekyll serve

The generated directory contains a Gemfile that declares the project’s Ruby dependencies. bundle install resolves those dependencies and creates or updates Gemfile.lock. Running the server as bundle exec jekyll serve makes Bundler use the versions selected for this project instead of whichever gems happen to be installed globally.

For iterative authoring, add live reload when your local workflow supports it:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
bundle exec jekyll serve --livereload

The development server is intended for previewing and editing. Do not treat it as the production service: it is not the normal way to expose a public site, and it leaves the Ruby build process responsible for every request. Build the static artifact and let Nginx serve that artifact instead.

Keep builds reproducible with Bundler

Commit both Gemfile and Gemfile.lock to the project repository. The Gemfile describes the dependencies you want; the lockfile records the resolved versions, including transitive dependencies. Keeping both files means a later VPS build can reproduce the environment used during development rather than silently selecting newer gems.

Run project commands through Bundler, especially on a server:

bundle install
bundle exec jekyll build
bundle exec jekyll serve

If you deploy through GitHub Pages, the official deployment documentation describes using the github-pages gem to match GitHub’s production Jekyll environment. That is a platform-specific choice; a self-managed VPS can use the dependencies declared by your own project.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

When a dependency changes deliberately, update it in a controlled development environment, review the resulting lockfile, test the build, and deploy the updated pair. Do not delete the lockfile as a first response to an installation error; doing so trades a local problem for an unplanned dependency upgrade.

Build the production artifact

From the project directory, render the site with:

bundle exec jekyll build

Jekyll writes the complete generated site to _site. Nginx can use that directory directly as its web root, or you can copy or synchronize its contents into a separate publish directory as part of your deployment process.

A practical directory layout keeps the checkout private and makes the published path explicit:

  • Source checkout: contains posts, layouts, includes, assets, _config.yml, Gemfile, and Gemfile.lock.
  • Build output: the generated _site directory.
  • Nginx root: the directory whose contents should be publicly readable, normally the generated _site.

Before changing Nginx, verify that the build produced the expected entry point, especially _site/index.html. Ensure the Nginx worker can traverse the parent directories and read the generated files. Keep drafts and source-only files outside the public root.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install and configure Nginx

Install the Ubuntu package:

sudo apt install nginx

Create a server-block file in /etc/nginx/sites-available/, using your real domain in the filename. A minimal HTTP configuration is:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /srv/my-site/_site;
    index index.html;
    location / { try_files $uri $uri/ =404; }
}

Replace example.com and /srv/my-site/_site with your domain and the actual build path. The root directive must point to the directory containing the generated files, not to the source checkout’s parent directory.

Enable the server block with a symbolic link and reload Nginx:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
sudo ln -s /etc/nginx/sites-available/your-domain /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Ubuntu’s Nginx layout separates available configurations from enabled ones. If the default site responds for the same address or takes precedence, remove or disable that conflicting default link, then reload after checking the configuration. A syntax check before reloading is a useful safeguard:

sudo nginx -t

The try_files rule serves an existing file or directory and returns a 404 when neither exists. That makes missing generated pages visible instead of silently routing every request to an unrelated fallback.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Point DNS at the VPS and add HTTPS

For a public deployment, register a domain and create DNS records that resolve the name to the VPS. Include every hostname you place in server_name, such as the apex name and www, and allow time for DNS changes to propagate.

Certificate issuance also requires the VPS to be reachable from the internet on port 80 for the HTTP-01 validation challenge. Check DNS and firewall reachability before running the certificate command. Port 443 must be reachable after HTTPS is enabled.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ubuntu recommends Let’s Encrypt for internet-facing servers. Its certificates are free, automated, trusted by major browsers and clients, and valid for 90 days. Install Certbot with the classic snap and request a certificate through the Nginx plugin:

sudo snap install --classic certbot
sudo certbot --nginx -d example.com -d www.example.com

The --nginx plugin finds the matching server block, edits it for TLS, and reloads Nginx. Review the resulting configuration so the certificate covers every hostname you intend to serve.

Certbot installs a systemd timer that attempts renewal twice daily. Test the renewal path without replacing a live certificate:

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
sudo certbot renew --dry-run

Run the dry test after the initial setup and again after firewall, DNS, or Nginx changes. A successful issuance does not prove future renewal will work if port 80 later becomes blocked or the domain stops resolving to the VPS.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a repeatable deployment workflow

Once the first deployment works, keep each release mechanical:

  1. Update the source checkout using your normal version-control process.
  2. Run bundle install so the locked dependencies are present.
  3. Build with bundle exec jekyll build.
  4. Confirm that _site/index.html and the changed pages exist.
  5. Publish the generated output to the directory named by Nginx’s root.
  6. Reload Nginx only when its configuration changed; rebuilding static files normally does not require a service restart.
  7. Request the site over both the apex and any www hostname, then check the HTTPS certificate.

Whether you build directly in the Nginx root or synchronize from a separate checkout, preserve the same invariant: Nginx should expose only the generated static artifact, while the Gemfile, lockfile, and source remain in a controlled working tree.

Troubleshoot common failures

Ruby or native-extension installation errors

Errors compiling a gem commonly indicate that the VPS Ruby version, build tools, zlib headers, and the versions locked by the project do not line up. Confirm that ruby-full, build-essential, and zlib1g-dev are installed, then run the project commands through bundle exec. Do not apply a Ruby-version workaround as a universal fix; consult the current Jekyll installation and troubleshooting guidance for the exact error and Ubuntu release.

The build succeeds, but the site returns 404

First check that _site/index.html exists after the build. Then verify that Nginx’s root points to that exact directory, the enabled server block contains the requested domain in server_name, and the Nginx worker can read the files. A mismatch between the site’s URL or base-path configuration and the requested paths can also produce links that appear broken even when the files exist.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The wrong site appears

This usually means the intended server block is not enabled, the request hostname does not match it, or the default site is still selected. Check the symlink under /etc/nginx/sites-enabled/, confirm the domain names, run sudo nginx -t, and reload Nginx.

Certbot cannot validate the domain

Certificate issuance fails when DNS points somewhere else or port 80 is blocked by a firewall, security group, or upstream network. Correct the DNS records and inbound reachability first, then rerun Certbot. If the HTTP site is not reachable by hostname, changing certificate options will not solve the underlying validation failure.

Files are present but inaccessible

A correct path can still return an error if one of its parent directories prevents traversal or if the generated files are not readable by the Nginx worker. Inspect ownership and permissions on the checkout, _site, and each parent directory, then rebuild or republish with permissions that allow read access without making private source files public.

Final pre-launch checklist

  • Ruby, compiler tools, and zlib development headers are installed.
  • Jekyll and Bundler are installed for the deployment account’s user-local gem path.
  • Gemfile and Gemfile.lock are committed and used through bundle exec.
  • bundle exec jekyll build completes and creates _site/index.html.
  • Nginx’s enabled server block names the correct host and points its root at the generated output.
  • DNS resolves every published hostname to the VPS.
  • Port 80 is reachable for Let’s Encrypt validation and port 443 is reachable for visitors.
  • sudo certbot renew --dry-run succeeds.
  • Only generated static output is publicly served.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.