Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
FREEDOM251

Freedom251 › Blog › Bundler

How to Get Started With Jekyll on an Ubuntu VPS

By Freedom251 Team · · 10 min read

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.

Install Ruby and Jekyll on a sudo-capable Ubuntu account, create a project with Bundler, build it into the _site directory, and let Nginx serve those static files. Point your domain’s DNS at the VPS, then use Certbot with Let’s Encrypt to add HTTPS. The VPS runs the build when you deploy; it normally does not keep Jekyll’s development server running for visitors.

What Jekyll on a VPS actually does

Jekyll is a Ruby static-site generator. It takes Markdown content, Liquid templates, layouts, stylesheets, and configuration, renders them, and writes a complete static website. The generated files can be served by Nginx, Apache, or another ordinary web server.

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.

That separation matters on a small VPS:

  • Build stage: Ruby, Jekyll, Bundler, your source tree, and the project’s gems turn the source into HTML, CSS, JavaScript, images, feeds, and other files.
  • Serving stage: Nginx reads the generated files from _site and sends them to browsers. It does not need Ruby for each request.

For local editing, bundle exec jekyll serve starts a development server and watches files. For publication, use bundle exec jekyll build, then expose the resulting directory through Nginx. Keeping those roles separate reduces the attack surface and avoids tying public traffic to a development process.

Choose a VPS or managed repository hosting

An Ubuntu VPS is the better fit when you need SSH and sudo access, control over Nginx and firewall rules, custom build steps, or other server processes beside the website. You are responsible for operating-system updates, backups, DNS, certificates, access control, and deployments.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

A managed repository-hosting service can build and publish a Jekyll site from a branch or a custom CI workflow. That removes server maintenance, but the build environment, plugin policy, domain configuration, and supported processing options are controlled by the service. It is useful when the site is already maintained in a repository and you do not need shell access or long-running server software.

Decision point Ubuntu VPS Managed repository hosting
Operating-system access SSH and sudo are available; you maintain the host. No VPS administration; the platform owns the runtime.
Build control Install the Ruby and gem versions your project requires and run your own commands. Use the platform’s supported Jekyll environment or a provided workflow.
Web server Configure Nginx, document roots, redirects, logs, and firewall rules yourself. HTTPS and web serving are handled by the platform, subject to its settings.
Plugins and processes You can run compatible plugins and additional processes, while accepting the maintenance and security work. Plugins and build steps may be restricted; no general-purpose VPS process is available.
Domain control Point DNS to the VPS and obtain a certificate on that host. Use the platform’s custom-domain procedure and DNS records.
Backups and recovery You must back up source, configuration, and any server data. The provider manages platform infrastructure, but you still need a copy of your repository and content.

For the VPS route, compare candidate plans by SSH/sudo availability, an Ubuntu image, enough CPU and memory for Ruby native extensions, storage headroom, backup options, IPv4 and IPv6 support, firewall controls, and support quality. Current provider prices and limits are not universal, so verify them on the provider’s own product page before ordering.

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

Prepare the Ubuntu VPS

Connect with an ordinary administrative account

Connect over SSH with an account that can use sudo. Avoid using the root account for routine work. Confirm that the host is the intended machine, and keep a second administrative access method available before changing SSH or firewall settings.

Update the package index and install Ruby, a compiler toolchain, and the zlib development headers required by common Ruby gems:

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

The exact package names can vary between Ubuntu releases. If apt reports a missing package, check that the VPS is running a supported Ubuntu release and that its package sources are enabled rather than substituting random Ruby packages.

Keep gems out of the system Ruby path

Jekyll’s Ubuntu installation guidance recommends a user-local gem directory. Configure that directory in the shell profile used by your deployment account, then reload the profile. The current Jekyll guide’s shell snippet should be copied at installation time because profile files and recommended paths can change between Ubuntu and Ruby versions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.

After the profile change is active, install Jekyll and Bundler as that user:

gem install jekyll bundler

Check that the commands resolve to the expected installation:

ruby --version
gem --version
jekyll --version
bundle --version

Do not mix a system-wide gem install performed with sudo and a user-local install in the same project. That commonly produces permission errors or causes the shell to invoke a different gem set than the one used during deployment.

Create a site and preview it safely

Generate the project skeleton

From the directory where you keep application source, create a new site and enter it:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
jekyll new my-site
cd my-site

The generated project includes a Gemfile, configuration, layouts, and starter content. Inspect the Gemfile before installing dependencies. It describes the gems the project expects; the lockfile records the exact resolved versions for the platform.

Install and lock dependencies

bundle install

Commit both Gemfile and the generated Gemfile.lock to your source repository. Bundler can then reproduce the same dependency set on the VPS and during later deployments. Run project commands through Bundler so the lockfile, rather than an unrelated globally installed gem, determines what executes.

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord | 6.35mm Jack, Durable Design, Stage and Home Studio Use, Low Noise Shielded Electric Cord for Bass, Keyboard, Amp, Mixer
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Preview during authoring

bundle exec jekyll serve

By default, the development server is intended for local preview. If your workflow supports automatic browser refreshes, use:

bundle exec jekyll serve --livereload

Do not expose this development server directly to the public internet as your production web server. It is designed for authoring and diagnostics, not hardened traffic handling, access logging, or certificate termination.

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

Build the production artifact

Run the reproducible build

bundle exec jekyll build

Jekyll writes the finished site to _site unless the project’s configuration changes the destination. Look for an entry point before configuring Nginx:

test -f _site/index.html && echo "Build contains an index page"

The _site directory is the deployable artifact. Keep Markdown, layouts, data files, the Gemfile, and the lockfile in the source checkout; publish only generated output to the web document root. You can either point Nginx directly at the checkout’s _site directory or copy/synchronize the contents into a separate release directory. A separate directory makes it easier to replace one complete build without exposing half-written files.

Use a consistent deployment sequence

A simple manual deployment from the project checkout is:

  1. Fetch or copy the intended source revision.
  2. Run bundle install so the VPS honors the committed lockfile.
  3. Run bundle exec jekyll build.
  4. Verify that the expected files exist under _site and that their ownership and permissions allow Nginx to read them.
  5. Publish the complete _site directory at the path used by the Nginx server block.
  6. Reload Nginx only when its configuration changed; a static-file replacement normally needs no web-server restart.

Keep the source checkout and deployment credentials private. Never place private keys, environment secrets, or unpublished content under the public document root.

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.

Install and configure Nginx

Install the web server

sudo apt install nginx

Ubuntu’s Nginx layout uses a configuration file in /etc/nginx/sites-available/ and a symbolic link in /etc/nginx/sites-enabled/. Create a file named for the domain, such as /etc/nginx/sites-available/example.com.

Point the server block at _site

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 the domain names and filesystem path with your values. The root must be the directory that actually contains the generated index.html. A common mistake is pointing it at the project root, where Nginx cannot find the rendered files.

Enable and test the site

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

nginx -t checks syntax before the reload. If the default site claims the same address or produces an unexpected page, remove or disable that conflicting link after confirming it is not needed. Ensure the Nginx worker can traverse every parent directory and read the files under _site; restrictive ownership or mode bits can look like a missing-file problem.

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

At this stage, request the VPS’s address or configured hostname over HTTP. A successful response should come from the generated site. A 404 usually means the wrong server block matched, the root is wrong, or the build did not create the requested path.

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

Connect DNS and add HTTPS

Make DNS resolve to the VPS

Register the domain, then create records that resolve the names in server_name to the VPS. An A record is used for IPv4 and an AAAA record for IPv6 when the VPS has a working IPv6 address. Test both paths if you publish both records; a broken IPv6 route can make some visitors fail even while IPv4 works.

DNS changes can take time to appear at recursive resolvers. Do not request a certificate until the names resolve to this server, and make sure any host firewall or cloud firewall permits inbound TCP port 80.

Request and install a Let’s Encrypt certificate

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. Certbot installs a systemd timer that attempts renewal twice daily.

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.
sudo snap install --classic certbot
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

The Nginx plugin finds the matching server block, obtains the certificate, edits Nginx for TLS, and reloads the service. The dry run exercises renewal without replacing the live certificate. Keep the renewal check in place and review failures rather than assuming a certificate will renew indefinitely.

For production, redirect HTTP requests to HTTPS after certificate issuance. Certbot can offer to configure the redirect; inspect the resulting server blocks and keep only the domain names you actually control. If issuance fails, correct DNS or port-80 reachability first, then rerun Certbot. Repeated retries will not fix a name that still points elsewhere or a firewall that still blocks the HTTP-01 challenge.

Operate updates without breaking the site

Separate source, build output, and configuration

  • Store the source checkout, Gemfile, and lockfile under a non-public path.
  • Use a dedicated public directory for the generated artifact.
  • Keep Nginx configuration in /etc/nginx and back it up with the server’s operational configuration.
  • Keep private SSH keys, API credentials, and unpublished drafts outside the document root.

Before an operating-system upgrade or gem update, take a backup or snapshot appropriate to your VPS. A static site is easy to rebuild only when the source repository, lockfile, custom data, and deployment configuration are all preserved.

Update dependencies deliberately

Do not delete Gemfile.lock merely to make an installation error disappear. A Ruby or native-extension error generally indicates that the VPS’s Ruby version, compiler/build tools, or locked gems do not agree. First confirm the installed Ruby and Bundler versions, rerun commands with bundle exec, and consult the current Jekyll installation and troubleshooting guidance for the specific error. A workaround that is valid for one Ubuntu release or gem version is not automatically valid for another.

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

Check the rendered result before publishing

Build in a temporary or staging location when practical. Verify the home page, navigation links, feeds, assets, and any generated collections. Pay attention to a configured URL base or subpath: a site that works at the root locally can generate links that point to the wrong location when deployed below a path.

Troubleshoot the failures you are most likely to see

Ruby, Bundler, or native-extension errors

  • Confirm that ruby-full, build-essential, and zlib1g-dev are installed.
  • Check which Ruby and gem executables the shell is using with ruby --version, gem environment, and which bundle.
  • Run bundle install and all Jekyll commands from the project directory.
  • Use bundle exec so the lockfile controls the active gem versions.
  • If the locked dependency set cannot compile on the selected Ubuntu/Ruby combination, resolve that compatibility issue intentionally rather than installing an unrelated global gem.

The build succeeds but the browser returns 404

  • Check that _site/index.html exists after the build.
  • Compare the Nginx root with the actual absolute path to _site.
  • Confirm that the request’s hostname exactly matches an enabled server_name.
  • Check URL base or permalink settings when only nested pages fail.
  • Check directory traversal and file-read permissions for the Nginx worker.
  • Run sudo nginx -t and inspect the active server block if another site appears.

Certbot cannot validate the domain

  • Resolve the A and AAAA records from outside the VPS and confirm they point to this host.
  • Allow inbound TCP port 80 in both the VPS firewall and any provider-level firewall.
  • Make sure Nginx is listening on port 80 and the domain’s server block is enabled.
  • Correct DNS or reachability, then rerun the certificate command.

The site worked before an update

Compare the deployed source revision, Gemfile.lock, generated output, and Nginx configuration with the last known-good deployment. Rebuild the previous locked revision and restore its complete artifact if necessary. Because Jekyll output is static, rolling back the generated directory is usually safer than trying to repair individual files in place.

Launch checklist

  • SSH access uses a sudo-capable non-root account.
  • Ubuntu packages are updated and Ruby, build tools, and zlib headers are installed.
  • The user-local gem path is configured according to the current Jekyll Ubuntu guidance.
  • jekyll and bundler run for the intended user.
  • The project contains a committed Gemfile and Gemfile.lock.
  • bundle exec jekyll build produces the expected _site files.
  • Nginx’s enabled server block uses the correct domain and document root.
  • sudo nginx -t passes before every configuration reload.
  • DNS records resolve to the VPS and port 80 is reachable.
  • Certbot has issued the certificate and sudo certbot renew --dry-run succeeds.
  • Backups include source, lockfile, Nginx configuration, and any deployment metadata.

Key commands at a glance

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

# Install the Ruby tools after configuring a user-local gem path
gem install jekyll bundler

# Create and preview
jekyll new my-site
cd my-site
bundle install
bundle exec jekyll serve

# Build for publication
bundle exec jekyll build

# Install and enable Nginx
sudo apt install nginx
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# HTTPS
sudo snap install --classic certbot
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

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.

BundlerCertbotJekyllLet’s EncryptNGINXRubyStatic SitesUbuntuVPS

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.

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.