iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
Install Swift with Swiftly on a supported Ubuntu release, optionally add the Vapor Toolbox, then run your Vapor release executable under systemd. Use a direct Vapor listener for a smoke test; for a public production service, place an Nginx reverse proxy in front when you need a conventional web entry point and centralized proxy security.
This guide uses the documented Ubuntu VPS flow: create a non-root sudo account, configure UFW, install Swift 5.9 or newer, verify a Vapor app, and supervise the production process after you disconnect from SSH.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →What you need before installing Vapor
Use an Ubuntu release supported by Swift
Vapor’s Linux requirement is Swift 5.9 or newer. Swift.org currently presents Ubuntu 22.04, 24.04 and 26.04 installation targets. Support is tied to the Swift toolchain and operating-system release, so check the Swift installer’s current Ubuntu choices when you create the VPS rather than assuming every Ubuntu image is interchangeable.
The documented DigitalOcean example uses Ubuntu 22.04 LTS. Ubuntu 24.04 and 26.04 are also shown as current Swift installation targets, but the exact toolchain and installer behavior can change as those releases evolve.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
Have SSH access and a sudo-capable account
The initial connection is normally made as the VPS provider’s root account so that you can create an application administrator. After the account is ready, perform normal work as that user and reserve root for administrative tasks. SSH-key access is preferred by the VPS deployment example because it avoids putting a password in an automated connection.
Understand the ports used in this guide
The smoke test deliberately exposes Vapor’s development listener on port 8080. That lets you verify the process before introducing a proxy. A production design can keep Vapor behind a proxy instead of exposing the application listener directly; choose the firewall rules that match the listeners you actually intend to publish.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems1. Bootstrap the Ubuntu VPS securely
Connect to the new server, permit SSH in UFW before enabling the firewall, create a separate vapor account, and copy the account’s SSH keys. Run the following sequence from the initial root session:
ssh root@your_server_ip
ufw allow OpenSSH
ufw enable
adduser vapor
usermod -aG sudo vapor
rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor
exit
ssh vapor@your_server_ip
ufw allow OpenSSH must precede ufw enable; otherwise the firewall can block the SSH session you need for administration. The adduser command creates the new account, and usermod -aG sudo vapor grants it sudo capability. The rsync command copies the existing SSH configuration into the new home directory while assigning ownership to vapor. After exit, reconnect as vapor and use sudo for system changes.
Do not run the application as root. The systemd unit later in this guide explicitly sets both User=vapor and Group=vapor, so files in the project tree and the process itself use the restricted account.
2. Install Swift with Swiftly
Use Swiftly instead of manually guessing a toolchain path
Vapor’s Linux installation guidance recommends Swiftly, the Swift toolchain manager. Follow Swiftly’s current Linux installation instructions for the Ubuntu image you selected, then install the latest stable toolchain:
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →swiftly install latest
swift --version
The version output should identify a Swift release and a Linux target. Confirm that the reported release is at least Swift 5.9 before creating or building a Vapor application. If the output shows an older compiler, install a newer toolchain with Swiftly and ensure the shell is using that toolchain before continuing.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Why the Ubuntu check matters
Swift’s supported Ubuntu targets are version-sensitive. A VPS image can remain available in a provider’s catalog after a toolchain has changed its support matrix. Check the installer page at provisioning time and select a listed release. This is especially important when choosing between Ubuntu 22.04 LTS, 24.04 and 26.04.
3. Decide whether you need the Vapor Toolbox
The Vapor Toolbox is optional for running an existing project. You need a Swift toolchain to build and serve the application, but the Toolbox adds project-generation commands and other convenience operations. Install it if you will create projects on the server; skip it when the project is already developed elsewhere and you only deploy its source or release artifacts.
Install with Homebrew
On a server where Homebrew is already available, install the Toolbox and verify the command:
brew install vapor
vapor --help
Build a pinned Toolbox release from source
If Homebrew is not present, the VPS deployment example builds the Toolbox from source. Its command sequence checks out release 18.6.0 as an example:
git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout 18.6.0
swift build -c release --disable-sandbox --enable-test-discovery
sudo mv .build/release/vapor /usr/local/bin
vapor --help
Treat 18.6.0 as the version used by that documentation example, not as a permanent recommendation. Review the Toolbox release list and select the version that matches your deployment plan before checking out a tag. Moving the resulting executable to /usr/local/bin makes vapor available as a normal command for users on the server.
4. Create and smoke-test a Vapor application
Generate a bare project
With the Toolbox installed, create a minimal project and enter its directory:
vapor new HelloWorld -n
cd HelloWorld
The -n option creates the bare project without an interactive prompt. If you already have a Vapor project, skip project generation and change into the directory that contains its Package.swift file.
Recommended Free Tools
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Allow the test listener and bind to the VPS network
For the documented smoke test, allow port 8080 and start the application on every network interface:
sudo ufw allow 8080
swift run App serve --hostname 0.0.0.0 --port 8080
--hostname 0.0.0.0 is important on a remote VPS: it tells Vapor to listen beyond the local loopback interface. The process remains attached to your SSH terminal while this command runs.
Verify the response
From a machine that can reach the VPS, request the listener:
curl http://your_server_ip:8080
The sample application should return It works!. This confirms that the Swift toolchain can compile the project, Vapor can start, the process is bound to the expected interface and UFW permits the test connection.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
This foreground command is a diagnostic step, not a production supervisor. Stop it with Ctrl-C before creating the release service. A process launched directly from SSH exits when it is terminated, and it is not automatically restarted if it crashes or starts after a reboot.
5. Build the release executable
Production should run the optimized release executable rather than repeatedly compiling with swift run. From the project root, build the release configuration:
swift build -c release
The resulting executable is placed under .build/release. In the systemd example below, the executable is named App, which is the conventional name for the generated Vapor target. If your target has a different name, replace App in ExecStart with the actual executable name. Keep the project root, containing Package.swift, as the service’s working directory.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
6. Keep Vapor running with systemd
Create one service unit per application
Systemd is the default system and service manager on most Linux distributions. Give each Vapor application its own unit so that it can be started, stopped, restarted and inspected independently. Create /etc/systemd/system/hello.service with this structure, adapting the description, paths and executable to your project:
[Unit]
Description=Hello
Requires=network.target
After=network.target
[Service]
Type=simple
User=vapor
Group=vapor
Restart=always
RestartSec=3
WorkingDirectory=/home/vapor/hello
ExecStart=/home/vapor/hello/.build/release/App serve --env production
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vapor-hello
[Install]
WantedBy=multi-user.target
What each production setting does
UserandGrouprun the process as the non-root account created during VPS setup.WorkingDirectorypoints to the project root. It must be the directory containingPackage.swift, not merely the.build/releasedirectory.ExecStartlaunches the release executable and passesserve --env production. The production environment disables verbose logging.Restart=alwaysasks systemd to bring the process back when it exits, whileRestartSec=3inserts a three-second delay between attempts.Requires=network.targetandAfter=network.targetorder startup after the network target.StandardOutput,StandardErrorandSyslogIdentifierroute service output to the system logging facility under an identifiable name.WantedBy=multi-user.targetallows the service to be enabled for normal multi-user boot.
Reload, enable and start the unit
After saving the file, make systemd read it, enable startup at boot, start the process and inspect its state:
sudo systemctl daemon-reload
sudo systemctl enable hello
sudo systemctl start hello
sudo systemctl status hello
daemon-reload is required after adding or changing a unit file. enable creates the boot-time relationship; it does not start a currently stopped service, which is why the sequence also runs start. The status output is the first place to look for an incorrect path, a missing executable or an immediate process exit.
Supply configuration with an environment file
Keep deployment settings outside the unit when that is easier to manage. Add an EnvironmentFile entry under [Service]:
EnvironmentFile=/etc/vapor/hello.env
An environment file can contain settings such as:
PORT=8123
You can also define a value inline in the unit:
Environment="PORT=8123"
Vapor code reads these values with Environment.get. Use the file approach for values that should be maintained separately from service metadata, including secrets and environment-specific settings. Protect the file with appropriate ownership and permissions, and reload the unit after changing either the file reference or the unit itself.
7. Choose between direct Vapor and an Nginx reverse proxy
Vapor can serve HTTP requests directly, so a direct listener is valid for development, internal services and an initial connectivity check. Vapor’s deployment guidance says proxying behind Nginx can improve performance, security and ease of use. Nginx is therefore an optional production layer, not a prerequisite for installing Swift or running Vapor.
| Deployment choice | Use it when | Trade-off |
|---|---|---|
| Direct Vapor listener | You are smoke-testing, serving a controlled internal endpoint or intentionally exposing Vapor itself. | Fewer moving parts, but the application process handles the public HTTP entry point and proxy responsibilities are not centralized. |
| Vapor behind Nginx | You want a conventional front-end proxy for a public service and a place to centralize proxy security and request handling. | Adds another service and configuration layer that must be maintained alongside systemd and Vapor. |
The retrieved deployment example does not include a complete Nginx server block or a TLS certificate recipe. Do not copy a generic configuration without adapting its upstream address, domain, certificate paths and firewall policy. Use the Nginx documentation for the exact proxy and certificate directives required by your domain, then keep the Vapor service supervised by systemd behind it.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
During the first deployment, prove the application works directly with curl before adding Nginx. That separates Swift/Vapor failures from proxy configuration failures. Once the direct service is healthy, configure the proxy and test the public hostname through Nginx.
Free tools Windows power users keep installed
One-click scans. No signup required.
8. Direct foreground execution versus systemd supervision
| Method | Command or configuration | Operational result |
|---|---|---|
| Foreground development run | swift run App serve --hostname 0.0.0.0 --port 8080 |
Useful for compiling and testing; remains attached to the SSH session. |
| Release build | swift build -c release |
Produces the executable used by the production service. |
| Systemd service | ExecStart=.../.build/release/App serve --env production |
Starts at boot when enabled, runs as vapor, restarts after exits and survives SSH disconnects. |
If your requirement is specifically “keep Vapor running after I disconnect from SSH,” use the systemd unit. Terminal multiplexers or background operators can detach a process, but they do not provide the boot ordering, restart policy and service status that the documented unit supplies.
9. Troubleshoot the common failure points
SSH stops working after enabling UFW
Ensure ufw allow OpenSSH was applied before ufw enable. If the current session is still open, correct the rule from that session before disconnecting. Always establish a new SSH connection as vapor before closing the original administrative session.
The compiler is too old for Vapor
Run swift --version. Vapor requires Swift 5.9 or newer. If the reported version is older, install a current stable toolchain with Swiftly and verify again. Also confirm that the Ubuntu release appears among Swift.org’s currently supported installer targets.
The smoke-test curl cannot connect
- Confirm the process is still running in the terminal where
swift runwas launched. - Check that the command includes
--hostname 0.0.0.0; binding only to loopback prevents remote access. - Confirm UFW allows the test port with the documented
sudo ufw allow 8080rule. - Verify that the request uses the VPS address and port 8080 exactly.
Systemd reports a failed service
Run sudo systemctl status hello and compare the unit with the actual project layout. The most frequent configuration errors are a misspelled executable, a WorkingDirectory that does not contain Package.swift, or a release build that was never created. Ensure the service account can read and execute the files under /home/vapor/hello, then reload systemd and start the unit again.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteThe service starts and immediately exits
Run the release executable manually from the project root using the same production arguments shown in ExecStart. This distinguishes an application startup error from a unit-file error. Check that required environment values are present and that the service’s EnvironmentFile path is correct. After correcting the cause, run sudo systemctl daemon-reload if the unit changed, then start it and inspect status again.
The Toolbox command is unavailable
The Toolbox is optional, so an existing project can still be built and served without it. If you need project-generation commands, verify the Homebrew installation or complete the source build, move the resulting executable to /usr/local/bin, and run vapor --help to confirm that it is on the command path.
10. A repeatable deployment checklist
- Select an Ubuntu image listed by Swift.org for the current Swift installer; the currently presented choices include 22.04, 24.04 and 26.04.
- Log in initially, allow OpenSSH in UFW, enable UFW, create
vapor, grant sudo, copy its SSH keys and reconnect as that user. - Install Swiftly, install the latest stable toolchain and verify Swift 5.9 or newer with
swift --version. - Install the Vapor Toolbox only if you need its project-generation commands; otherwise use the existing project directly.
- Run a temporary port-8080 smoke test with
swift run App serve --hostname 0.0.0.0 --port 8080and verify theIt works!response withcurl. - Build the release executable with
swift build -c release. - Create a dedicated systemd unit with the correct user, project root, executable path and
--env production. - Add an environment file or inline variables when the application needs deployment-specific settings, and read them through
Environment.get. - Reload, enable, start and inspect the service with
systemctl. - Add Nginx only after the direct service works, and obtain the exact proxy and TLS directives from Nginx’s documentation for your domain.
What a correct installation looks like
A successful installation has three independently verifiable layers. First, swift --version reports a supported Swift toolchain. Second, the Vapor process answers the port-8080 curl request during the smoke test. Third, the release executable starts from systemd as the vapor user with --env production and remains available after the SSH session ends. Nginx is an additional front end for deployments that benefit from proxying; it is not required to compile or run Vapor itself.
Quick Recap
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.

